项目简介

Perplexity Advanced MCP 是一个基于 Model Context Protocol (MCP) 的服务器实现,旨在为 LLM 应用提供强大的上下文信息获取和处理能力。它集成了 OpenRouter 和 Perplexity API,能够根据用户查询类型智能选择模型,并支持文件附件作为上下文输入,从而提供更精准、更可靠的搜索和问答服务。

主要功能点

  • 多供应商支持: 同时支持 OpenRouter 和 Perplexity API,用户可以根据需求灵活选择。
  • 查询类型优化: 区分简单查询和复杂查询,针对不同场景优化成本和性能。
  • 文件附件支持: 允许上传文件作为上下文,提升复杂查询的准确性,特别适合代码库分析等场景。
  • 增强的重试机制: 采用 Tenacity 库实现可靠的 API 通信,应对网络波动等问题。
  • 可定制的日志记录: 提供灵活的日志配置,方便调试和监控。
  • 集成 MCP 搜索工具: 通过 'ask_perplexity' 工具注册到 MCP 服务器,方便 LLM 客户端调用进行互联网搜索和信息获取。

安装步骤

  1. 安装 Python 包:
    pip install perplexity-advanced-mcp

服务器配置

MCP 客户端需要配置以下 JSON 信息以连接到 Perplexity Advanced MCP 服务器。请注意,你需要提供 OpenRouter API 密钥或 Perplexity API 密钥,但不能同时提供两者。

{
  "serverName": "perplexity-advanced-mcp",
  "command": "uvx",
  "args": [
    "perplexity-advanced-mcp"
    // 以下参数二选一,根据你使用的 API 提供商选择
    // , "-o", "<你的 OpenRouter API 密钥>"  // 使用 OpenRouter API,请替换为你的 OpenRouter API 密钥
    // , "-p", "<你的 Perplexity API 密钥>" // 使用 Perplexity API,请替换为你的 Perplexity API 密钥
  ]
}

参数说明:

  • serverName: 服务器名称,设置为 'perplexity-advanced-mcp' 即可。
  • command: 启动服务器的命令,这里使用 'uvx' (如果未安装 uvx,请先安装 'pip install uvx')。你也可以直接使用 'python -m perplexity_advanced_mcp.cli' 命令启动。
  • args: 传递给启动命令的参数,包括:
    • '"perplexity-advanced-mcp"': 指定运行 'perplexity-advanced-mcp' 包。
    • '"-o", "<你的 OpenRouter API 密钥>"' 或 '"-p", "<你的 Perplexity API 密钥>"': 二选一,用于配置 API 密钥。请将 '<你的 OpenRouter API 密钥>' 或 '<你的 Perplexity API 密钥>' 替换为你实际的 API 密钥。 你可以选择使用 OpenRouter 提供的统一 API 密钥,或者直接使用 Perplexity API 密钥。

API 密钥获取:

环境变量配置 (可选):

除了在 'args' 中直接指定 API 密钥,你还可以通过设置环境变量来配置 API 密钥。

  • OpenRouter API 密钥: 设置环境变量 'OPENROUTER_API_KEY' 为你的 OpenRouter API 密钥。
  • Perplexity API 密钥: 设置环境变量 'PERPLEXITY_API_KEY' 为你的 Perplexity API 密钥。

如果使用环境变量配置,'args' 可以简化为:

{
  "serverName": "perplexity-advanced-mcp",
  "command": "uvx",
  "args": [
    "perplexity-advanced-mcp"
  ]
}

基本使用方法

MCP 客户端 (例如 Cline 或 Cursor) 可以通过 'ask_perplexity' 工具调用 Perplexity Advanced MCP 服务器。

'ask_perplexity' 工具接受以下参数:

  • query (string): 要搜索的查询语句 (必填)。
  • query_type (string): 查询类型,可选 "simple" 或 "complex" (必填)。 "simple" 类型适用于简单、快速的查询,成本较低; "complex" 类型适用于复杂、需要深入分析的查询,效果更好,但成本较高。
  • attachment_paths (list[string]): 可选的文件路径列表。用于附加文件内容作为上下文,文件路径必须是绝对路径

示例:

在 MCP 客户端中,你可以这样调用 'ask_perplexity' 工具:

{
  "tool_calls": [
    {
      "tool_name": "ask_perplexity",
      "tool_input": {
        "query": "Python 最新版本是什么?",
        "query_type": "simple"
      }
    },
    {
      "tool_name": "ask_perplexity",
      "tool_input": {
        "query": "分析以下代码,找出当前库的状态并制定迁移计划。",
        "query_type": "complex",
        "attachment_paths": ["/absolute/path/to/your/codefile.py"]
      }
    }
  ]
}

服务器会根据你的请求,调用 Perplexity 或 OpenRouter API 进行搜索,并返回结果。对于 "complex" 类型的查询,服务器还会尝试进行更深入的推理和分析。

信息

分类

网页与API