UNPKG

perplexity-mcp-server

Version:

A Perplexity API Model Context Protocol (MCP) server that unlocks Perplexity's search-augmented AI capabilities for LLM agents. Features robust error handling, secure input validation, and transparent reasoning with the showThinking parameter. Built with

116 lines (115 loc) 4.24 kB
import { z } from 'zod'; import { RequestContext } from '../utils/requestContext.js'; export declare const PerplexityChatCompletionRequestSchema: z.ZodObject<{ model: z.ZodString; messages: z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["system", "user", "assistant"]>; content: z.ZodString; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "system"; content: string; }, { role: "user" | "assistant" | "system"; content: string; }>, "many">; max_tokens: z.ZodOptional<z.ZodNumber>; temperature: z.ZodOptional<z.ZodNumber>; top_p: z.ZodOptional<z.ZodNumber>; search_domain_filter: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; return_images: z.ZodOptional<z.ZodBoolean>; return_related_questions: z.ZodOptional<z.ZodBoolean>; search_recency_filter: z.ZodOptional<z.ZodString>; top_k: z.ZodOptional<z.ZodNumber>; stream: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; presence_penalty: z.ZodOptional<z.ZodNumber>; frequency_penalty: z.ZodOptional<z.ZodNumber>; response_format: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>; web_search_options: z.ZodOptional<z.ZodObject<{ search_context_size: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; }, "strip", z.ZodTypeAny, { search_context_size?: "high" | "low" | "medium" | undefined; }, { search_context_size?: "high" | "low" | "medium" | undefined; }>>; }, "strip", z.ZodTypeAny, { model: string; messages: { role: "user" | "assistant" | "system"; content: string; }[]; stream: boolean; max_tokens?: number | undefined; temperature?: number | undefined; top_p?: number | undefined; search_domain_filter?: string[] | undefined; return_images?: boolean | undefined; return_related_questions?: boolean | undefined; search_recency_filter?: string | undefined; top_k?: number | undefined; presence_penalty?: number | undefined; frequency_penalty?: number | undefined; response_format?: {} | undefined; web_search_options?: { search_context_size?: "high" | "low" | "medium" | undefined; } | undefined; }, { model: string; messages: { role: "user" | "assistant" | "system"; content: string; }[]; max_tokens?: number | undefined; temperature?: number | undefined; top_p?: number | undefined; search_domain_filter?: string[] | undefined; return_images?: boolean | undefined; return_related_questions?: boolean | undefined; search_recency_filter?: string | undefined; top_k?: number | undefined; stream?: boolean | undefined; presence_penalty?: number | undefined; frequency_penalty?: number | undefined; response_format?: {} | undefined; web_search_options?: { search_context_size?: "high" | "low" | "medium" | undefined; } | undefined; }>; export type PerplexityChatCompletionRequest = z.infer<typeof PerplexityChatCompletionRequestSchema>; export interface PerplexityChatCompletionResponse { id: string; model: string; created: number; usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number; }; choices: Array<{ index: number; finish_reason: string; message: { role: 'assistant'; content: string; }; delta?: { role?: 'assistant'; content?: string; }; }>; } declare class PerplexityApiService { private axiosInstance; private apiKey; private readonly apiBaseUrl; constructor(); /** * Calls the Perplexity Chat Completions API. * @param requestData - The validated request data conforming to PerplexityChatCompletionRequest. * @param context - The request context for logging and error tracking. * @returns The Perplexity API response. * @throws {McpError} If the API call fails or returns an error. */ chatCompletion(requestData: PerplexityChatCompletionRequest, context: RequestContext): Promise<PerplexityChatCompletionResponse>; } export declare const perplexityApiService: PerplexityApiService; export {};