使用说明

项目简介

本项目是 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 (推荐)

  1. 确保已安装 Docker 和 Docker Compose。
  2. 创建一个新的目录,并将仓库提供的 'docker-compose.yml' 文件保存到该目录中。
  3. 在该目录下创建 '.env' 文件,并从 '.env.sample' 复制内容到 '.env',务必设置你的 Perplexity API 密钥 'MCP_PERPLEXITY_API_KEY'。例如:
    MCP_PERPLEXITY_API_KEY=YOUR_PERPLEXITY_API_KEY
    你还可以根据需要配置其他环境变量,如 'MCP_TRANSPORT' (选择 'stdio' 或 'sse'),'MCP_SSE_PORT' 等。
  4. 在终端中,进入包含 'docker-compose.yml' 文件的目录,运行命令:
    docker compose up
    服务器将会在容器中启动。对于 SSE 传输,默认端点为 'http://localhost:8080/sse'。

方式二:使用 Node.js

  1. 确保已安装 Node.js 和 pnpm。

  2. 克隆或下载该 GitHub 仓库的代码。

  3. 进入项目根目录。

  4. 复制 '.env.sample' 文件为 '.env',并设置你的 Perplexity API 密钥 'MCP_PERPLEXITY_API_KEY'。

  5. 安装项目依赖:

    pnpm install
  6. 启动服务器。你可以选择 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与计算