智能搜索服务

Perplexica MCP Server 是一个提供智能搜索功能的模型上下文协议服务器,支持多种搜索模式和自定义搜索行为。

  • by nicholasq
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 nicholasq/perplexica-mcp

使用说明

困惑MCP服务器

一种模型上下文协议(MCP)服务器,提供对Perplexica智能搜索功能的访问。

特性

  • 智能搜索:查询Perplexica的人工智能搜索引擎
  • 多种对焦模式:支持网络搜索、学术搜索等
  • 聊天记录:在搜索中保持对话上下文
  • 系统说明:使用自定义说明自定义搜索行为

安装

来源

git clone <repository-url>
cd perplexica-mcp
cargo install --path .

依赖项

  • 锈蚀1.70+
  • 正在运行的Perplexica实例

配置

所需的环境变量

集 PERPLEXICA_API_URL 指向您的Perplexica实例的环境变量:

export PERPLEXICA_API_URL="http://localhost:3000"
# or
export PERPLEXICA_API_URL="https://your-perplexica-instance.com"

可选环境变量(推荐)

您可以设置默认提供程序和模型值,以避免在每个搜索请求中指定它们:

export PERPLEXICA_PROVIDER_ID="550e8400-e29b-41d4-a716-446655440000"
export PERPLEXICA_CHAT_MODEL_KEY="gpt-4o-mini"
export PERPLEXICA_EMBEDDING_MODEL_KEY="text-embedding-3-large"

备注:这些是可选的。如果没有设置,客户端将需要在每个搜索请求中指定提供者信息。

用法

Zed编辑器

添加到您的 settings.json 文件:

{
  "context_servers": {
    "perplexica": {
      "source": "custom",
      "command": "perplexica-mcp",
      "env": {
        "PERPLEXICA_API_URL": "http://localhost:3000",
        "PERPLEXICA_CHAT_MODEL_KEY": "models/gemini-2.5-flash",
        "PERPLEXICA_PROVIDER_ID": "40c45540-9774-42c7-b38c-7934039f73f1",
        "PERPLEXICA_EMBEDDING_MODEL_KEY": "models/embedding-gemini-001"
      }
    }
  }
}

Zed的发展模式

对于Zed的开发,您可以直接从源代码运行:

{
  "context_servers": {
    "perplexica-dev": {
      "source": "custom",
      "command": "cargo",
      "args": ["run"],
      "env": {
        "PERPLEXICA_API_URL": "http://localhost:3000",
        "PERPLEXICA_CHAT_MODEL_KEY": "models/gemini-2.5-flash",
        "PERPLEXICA_PROVIDER_ID": "40c45540-9774-42c7-b38c-7934039f73f1",
        "PERPLEXICA_EMBEDDING_MODEL_KEY": "models/embedding-gemini-001"
      }
    }
  }
}

使用Opencode

添加到您的 opencode.json 文件(通常位于 ~/.config/opencode/opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "perplexica": {
      "type": "local",
      "command": ["perplexica-mcp"],
      "enabled": true,
      "environment": {
        "PERPLEXICA_API_URL": "http://localhost:3000",
        "PERPLEXICA_CHAT_MODEL_KEY": "models/gemini-2.5-flash",
        "PERPLEXICA_PROVIDER_ID": "40c45540-9774-42c7-b38c-7934039f73f1",
        "PERPLEXICA_EMBEDDING_MODEL_KEY": "models/embedding-gemini-001"
      }
    }
  }
}

Opencode中的开发模式

对于使用Opencode进行开发,您可以直接从源代码运行:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "perplexica-dev": {
      "type": "local",
      "command": ["cargo", "run"],
      "cwd": "/path/to/perplexica-mcp",
      "enabled": true,
      "environment": {
        "PERPLEXICA_API_URL": "http://localhost:3000",
        "PERPLEXICA_CHAT_MODEL_KEY": "models/gemini-2.5-flash",
        "PERPLEXICA_PROVIDER_ID": "40c45540-9774-42c7-b38c-7934039f73f1",
        "PERPLEXICA_EMBEDDING_MODEL_KEY": "models/embedding-gemini-001"
      }
    }
  }
}

可用工具

perplexica_providers

从以下位置检索可用的提供商及其模型 API困惑.

参数: 无

用途: 调用此工具可以发现可用的提供商、他们的聊天模型和嵌入模型。这有助于客户端了解哪些提供者ID和模型密钥可用于搜索请求。

响应格式: 该工具返回一个结构化响应,其中包含:

  • 可用提供商摘要
  • 每个提供商的详细信息(名称、ID、型号计数)
  • 用于程序化访问的完整JSON响应

perplexica_search

使用搜索 API困惑提供程序和模型参数是可选的-除非用户明确指定,否则服务器将使用配置的默认值。

响应格式: 该工具返回格式化的markdown:

  • 包含主要搜索响应的摘要部分
  • 来源部分列出了所有引用的来源及其标题和网址

Markdown输出格式:

## Summary

<content of the message property>

## Sources

- <title property of source object>
  - <url property of source object>

JSON反序列化: 服务器正确地将Perplexica API JSON响应反序列化为结构化Rust数据类型(PerplexicaSearchResponse, ProvidersResponse在将它们格式化为MCP客户端的markdown之前。这确保了类型安全和正确的错误处理,同时提供了干净、可读的输出格式。

参数:

  • query (必填):要发送给Perplexica的搜索查询
  • focus_mode (可选):搜索的焦点模式(默认:“webSearch”)
  • stream (可选):是否流式传输响应(默认值:false)
  • history (可选):聊天历史记录为[角色,消息]对数组
  • system_instructions (可选):搜索系统说明
  • provider_id (可选):要使用的提供商ID。除非用户明确指定提供者,否则不要设置。如果省略,将使用环境变量中的默认值。
  • chat_model_key (可选):聊天模式键使用。除非用户明确指定型号,否则不要设置。如果省略,将使用环境变量中的默认值。
  • embedding_model_key (可选):嵌入要使用的模型密钥。除非用户明确指定嵌入模型,否则不要设置。如果省略,将使用环境变量中的默认值。

示例用法:

{
  "query": "What is artificial intelligence?",
  "focus_mode": "webSearch",
  "system_instructions": "Focus on technical details and recent developments"
}

显式选择提供者的示例:

{
  "query": "What is artificial intelligence?",
  "provider_id": "550e8400-e29b-41d4-a716-446655440000",
  "chat_model_key": "gpt-4o",
  "embedding_model_key": "text-embedding-3-large"
}

API兼容性

此MCP服务器与支持以下功能的Perplexica实例兼容:

/api/providers 端点

返回所有活动提供商及其可用聊天和嵌入模型的列表。

/api/search 端点

接受以下格式的搜索请求:

{
  "chatModel": {
    "providerId": "uuid",
    "key": "model-name"
  },
  "embeddingModel": {
    "providerId": "uuid", 
    "key": "embedding-model"
  },
  "optimizationMode": "speed",
  "focusMode": "webSearch",
  "query": "search query",
  "history": [...],
  "systemInstructions": "...",
  "stream": false
}

发展

建筑

cargo build

运行测试

cargo test

校验码

cargo check
cargo clippy

许可证

MIT许可证

故障排除

未设置环境变量

Error: PERPLEXICA_API_URL environment variable must be set

解决方案:在运行服务器之前设置环境变量。

缺少提供商信息

Error: Missing provider_id. Set either provider_id parameter or PERPLEXICA_PROVIDER_ID environment variable

解决方案:将可选环境变量设置为默认值,或在搜索请求中指定提供程序信息。

连接被拒绝

确保您的Perplexica实例正在运行,并且可以在指定的URL上访问。

MCP协议错误

确保您的MCP客户端(Zed、OpenCode等)已正确配置为使用stdio传输。