使用说明
项目简介
本项目是 Model Context Protocol (MCP) 协议的一个服务器端实现,它将 Perplexity API 的强大语言模型能力通过 MCP 协议标准接口对外提供。通过部署此服务器,你可以让支持 MCP 协议的客户端(如各类 LLM 应用)便捷地调用 Perplexity 的模型进行对话和问答,实现上下文感知和工具调用的能力。
主要功能点
- 模型即工具: 将 Perplexity API 的模型(如 sonar-pro, sonar)封装成 MCP 工具 'ask_perplexity',客户端可以通过标准的方式调用这些模型进行问答。
- 支持多种模型选择: 允许配置和使用 Perplexity API 提供的多种模型,默认支持 'sonar' 和 'sonar-pro',并可自定义。
- 灵活的传输协议: 支持 Stdio 和 SSE (Server-Sent Events) 两种 MCP 传输协议,可以根据应用场景选择合适的通信方式。
- 可配置的服务器: 提供丰富的配置选项,包括 Perplexity API 密钥、默认模型、SSE 端口和端点、以及可选的 SSE 鉴权机制。
- 易于部署: 提供 Docker Compose 和 Node.js 两种部署方式,方便用户快速搭建和运行 MCP 服务器。
安装步骤
方式一:使用 Docker Compose (推荐)
- 确保已安装 Docker 和 Docker Compose。
- 创建一个新的目录,并将仓库提供的 'docker-compose.yml' 文件保存到该目录中。
- 在该目录下创建 '.env' 文件,并从 '.env.sample' 复制内容到 '.env',务必设置你的 Perplexity API 密钥 'MCP_PERPLEXITY_API_KEY'。例如:
你还可以根据需要配置其他环境变量,如 'MCP_TRANSPORT' (选择 'stdio' 或 'sse'),'MCP_SSE_PORT' 等。MCP_PERPLEXITY_API_KEY=YOUR_PERPLEXITY_API_KEY - 在终端中,进入包含 'docker-compose.yml' 文件的目录,运行命令:
服务器将会在容器中启动。对于 SSE 传输,默认端点为 'http://localhost:8080/sse'。docker compose up
方式二:使用 Node.js
-
确保已安装 Node.js 和 pnpm。
-
克隆或下载该 GitHub 仓库的代码。
-
进入项目根目录。
-
复制 '.env.sample' 文件为 '.env',并设置你的 Perplexity API 密钥 'MCP_PERPLEXITY_API_KEY'。
-
安装项目依赖:
pnpm install -
启动服务器。你可以选择 Stdio 或 SSE 传输方式。
-
使用 Stdio 传输 (默认):
pnpm start -
使用 SSE 传输:
export MCP_TRANSPORT=sse pnpm start对于 SSE 传输,默认服务器地址为 'http://localhost:8080/sse'。 你可以通过环境变量 'MCP_SSE_PORT' 和 'MCP_SSE_ENDPOINT' 自定义端口和端点。
-
服务器配置 (MCP 客户端配置)
MCP 客户端需要配置以下信息以连接到此 MCP 服务器。以下是 JSON 格式的配置示例,你需要根据你选择的传输协议和实际部署情况进行调整。
对于 Stdio 传输:
{ "serverName": "Perplexity MCP Server", "command": "pnpm", "args": ["start"] // 假设客户端和服务器在同一台机器上,且已安装 Node.js 和 pnpm,并在项目根目录下运行客户端。 // 客户端通过标准输入/输出 (stdio) 与服务器通信。 }
重要说明 (Stdio): 使用 Stdio 传输时,MCP 客户端通常需要直接执行 'pnpm start' 命令来启动服务器进程,并通过标准输入/输出流与其通信。 请确保客户端的运行环境满足服务器的运行依赖(Node.js, pnpm, 已安装项目依赖等),并且客户端的工作目录设置为 MCP 服务器项目根目录或能够正确找到 'pnpm start' 命令的路径。
对于 SSE 传输:
{ "serverName": "Perplexity MCP Server", "transport": "sse", "uri": "http://localhost:8080/sse" // 假设 MCP 服务器部署在本地机器的 8080 端口,端点为 /sse。 // 请根据实际部署的服务器地址和端口进行修改。 // 如果服务器启用了 SSE 鉴权,还需要在客户端配置相应的鉴权信息(Authorization Header)。 }
重要说明 (SSE): 使用 SSE 传输时,MCP 客户端需要配置服务器的 URI ('uri' 字段) 以建立 SSE 连接。 请确保 'uri' 指向正确的服务器地址、端口和端点。 如果你在服务器端配置了 'MCP_SSE_AUTH_HEADER_VALUE' 环境变量启用了 SSE 鉴权,你还需要在 MCP 客户端配置相应的 'Authorization' Header,具体 Header 的 Key 可以通过 'MCP_SSE_AUTH_HEADER_KEY' 环境变量在服务器端配置,默认为 'Authorization'。
环境变量配置 (服务器端):
以下是一些常用的环境变量,你需要在部署服务器前配置(例如在 '.env' 文件或 Docker Compose 配置中):
- 'MCP_PERPLEXITY_API_KEY': (必需) 你的 Perplexity API 密钥。
- 'MCP_TRANSPORT': 选择 MCP 传输协议,可选值为 'stdio' 或 'sse',默认为 'stdio'。
- 'MCP_PERPLEXITY_DEFAULT_MODEL': 设置默认使用的 Perplexity 模型,默认为 'sonar-pro'。
- 'MCP_PERPLEXITY_MODELS': 配置允许使用的 Perplexity 模型列表,用逗号分隔,默认为 'sonar,sonar-pro'。
- 'MCP_SSE_PORT': 设置 SSE 服务器监听的端口,默认为 '8080'。
- 'MCP_SSE_ENDPOINT': 设置 SSE 服务器的端点路径,默认为 '/sse'。
- 'MCP_SSE_AUTH_HEADER_VALUE': 设置 SSE 鉴权所需的 Header 值,如果设置此项,则启用 SSE 鉴权。
基本使用方法
成功部署并启动 MCP 服务器后,MCP 客户端可以通过 JSON-RPC 协议向服务器发送请求,调用 'ask_perplexity' 工具进行模型问答。
工具调用示例 (JSON-RPC 请求):
{ "jsonrpc": "2.0", "method": "Tool.ask_perplexity", "params": { "messages": [ {"role": "user", "content": "你好!"} ], "model": "sonar-pro" // 可选,指定使用的模型,默认为配置的默认模型 }, "id": "1" }
服务器会调用 Perplexity API,并将模型返回的响应通过 JSON-RPC 响应返回给客户端。
请参考 Model Context Protocol (MCP) 官方文档 了解更多关于 MCP 协议和工具调用的详细信息。
信息
分类
AI与计算