模型上下文协议服务器

一个集成了Perplexity AI搜索增强语言模型与Claude Desktop的MCP服务器,提供三种不同复杂度的工具以满足不同用例需求。

  • by Rohit-Seelam
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 rohit-seelam/perplexity_mcp

使用说明

困惑MCP服务器

一个模型上下文协议(MCP)服务器,将Perplexity AI的搜索增强语言模型与Claude Desktop集成在一起,为不同的用例提供了三种具有渐进复杂性的工具。

特性

🔍 三个复杂度级别

  • perplexity_small:使用sonar pro型号快速查询
  • perplexity_medium:使用声纳推理pro增强推理能力
  • perplexity_large:声纳深度研究

🚀 为发展而优化

  • 干净的响应(思维标记自动删除)
  • 全面的错误处理
  • 调试详细日志记录
  • 内置FastMCP,可靠性高

🔧 现代Python堆栈

  • UV用于快速依赖管理
  • 用于现代HTTP客户端功能的HTTPX
  • 在整个代码库中键入提示
  • 全面的测试套件

快速开始

先决条件

安装

  1. 克隆存储库

    git clone <repository-url>
    cd Perplexity_MCP
    
  2. 安装依赖项

    uv sync
    
  3. 设置环境

    echo "PERPLEXITY_API_KEY=your_api_key_here" > .env
    
  4. 测试安装

    uv run python tests/tests.py small
    

Claude桌面集成

  1. 找到你的紫外线路径

    which uv
    # Example output: /Users/username/.local/bin/uv
    
  2. 配置Claude桌面

    编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

    {
      "mcpServers": {
        "perplexity-mcp": {
          "command": "/Users/username/.local/bin/uv",
          "args": [
            "--directory", 
            "/path/to/your/Perplexity_MCP",
            "run",
            "python",
            "server.py"
          ]
        }
      }
    }
    
  3. 重新启动克劳德桌面

    完全退出并重新启动Claude Desktop以加载新的MCP服务器。

用法

在克劳德桌面

配置后,您可以在对话中使用这些工具:

快速事实查询:

Use perplexity_small to find: "What is the latest Python version?"

技术分析:

Use perplexity_medium to explain: "Compare REST vs GraphQL performance characteristics"

深入研究:

Use perplexity_large to research: "Comprehensive analysis of quantum computing trends in 2024"

工具规格

工具 模型 用例 响应时间 功能
perplexity_small 声纳专业版 快速事实,基本查询 ~3-10秒 快速、可靠
perplexity_medium 声纳推理专业 技术解释 约10-30秒 增强推理
perplexity_large 声纳深度研究 综合研究 ~5-30分钟 深度分析,高质量

响应格式

所有工具都会返回干净、结构化的响应:

{
  "content": "The AI response with thinking tokens removed",
  "citations": ["https://source1.com", "https://source2.com"]
}

发展

项目结构

Perplexity_MCP/
├── server.py                # FastMCP server with 3 tools
├── client.py                # Perplexity API wrapper  
├── config.py                # Configuration and tool settings
├── __init__.py              # Package exports
├── pyproject.toml           # UV project configuration
├── tests/
│   ├── tests.py             # Test script for individual tools
│   └── test_logs/           # Test results and logs
└── Notes/
    ├── explanations.md      # Technical deep-dives
    └── questions.txt        # Development questions

运行测试

测试单个工具以验证API集成:

# Test each tool independently
uv run python tests/tests.py small    # Test sonar-pro model
uv run python tests/tests.py medium   # Test sonar-reasoning-pro
uv run python tests/tests.py large    # Test sonar-deep-research (long runtime)

# Results saved to tests/test_logs/ with detailed response analysis

开发设置

  1. 安装开发依赖项

    uv sync --all-groups
    
  2. 在本地运行MCP服务器 (用于调试)

    uv run python server.py
    
  3. 检查代码质量

    uv run ruff check .
    uv run black .
    

配置

环境变量

变量 必填 描述
PERPLEXITY_API_KEY 是 您的困惑API密钥来自 设置页面

工具配置

工具配置在 config.py:

TOOL_CONFIGS = {
    "small": {
        "model": "sonar-pro"
    },
    "medium": {
        "model": "sonar-reasoning-pro", 
        "reasoning_effort": "medium",
        "web_search_options": {"search_context_size": "medium"}
    },
    "large": {
        "model": "sonar-deep-research",
        "reasoning_effort": "high",
        "web_search_options": {"search_context_size": "high"}
    }
}

故障排除

常见问题

导入错误

ModuleNotFoundError: No module named 'client'
  • 确保从项目根目录运行
  • 检查UV是否使用了正确的虚拟环境

API关键问题

Error: PERPLEXITY_API_KEY environment variable is required
  • 验证您的 .env 文件存在并且包含API密钥
  • 检查API密钥在上是否有效 困惑设置页面

Claude桌面连接问题

  • 验证配置中的UV路径: which uv
  • 确保项目目录路径绝对正确
  • 检查Claude Desktop日志中的特定错误消息
  • 配置更改后完全重新启动Claude Desktop

响应时间长

  • perplexity_large 复杂的查询可能需要10-30分钟
  • 使用 perplexity_small 或 perplexity_medium 以获得更快的响应
  • 在选择工具时考虑查询的复杂性

调试模式

通过直接运行服务器启用详细日志记录:

uv run python server.py
# Check stderr output for detailed logging information

测试单个组件

# Test API connection
uv run python -c "from client import PerplexityClient; print('✅ Client OK')"

# Test configuration
uv run python -c "from config import get_api_key; print('✅ API Key OK')"

# Test server startup
timeout 10s uv run python server.py || echo "Server started successfully"

贡献

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature-name
  3. 进行更改并彻底测试
  4. 根据需要更新文档
  5. 提交拉取请求

开发指南

  • 遵循现有的代码风格(黑色格式、类型提示)
  • 添加新功能的测试
  • 更新 CLAUDE.md 对于任何架构更改
  • 使用所有三种困惑模型进行测试
  • 确保MCP协议合规性(干净的标准输出)

建筑

关键设计决策

  • 基于类的客户端:用于高效资源管理的Singleton模式
  • 思考代币移除:自动过滤 <think>...</think> 章节
  • 简化响应:仅内容和引用用于干净整合
  • 错误隔离:没有异常传播到MCP层
  • 日志策略:所有调试输出到stderr以符合MCP要求

依赖项

  • mcp>=1.11.0 -带FastMCP的MCP Python SDK
  • python-dotenv>=1.1.1 -环境变量管理
  • httpx>=0.28.1 -具有超时处理功能的现代HTTP客户端

许可证

MIT许可证 -有关详细信息,请参阅LICENSE文件。

致谢

支持


备注:此MCP服务器目前已针对本地开发和个人使用进行了优化。未来的版本可能包括PyPI分发选项,以便于安装和共享。