一个使用Perplexica的AI驱动搜索引擎提供搜索功能的Model Context Protocol (MCP)服务器。
重要:如果你正在使用Claude Code进行开发,该项目要求在所有开发操作中使用container-use MCP服务器。所有文件操作、代码更改和shell命令必须在container-use环境中执行。
当使用Claude Code贡献此项目时,你必须:
container-use log <env_id>查看开发日志container-use checkout <env_id>检查出你的环境# 创建一个新的环境用于你的工作
container-use create --title "你的功能描述"
# 使用container-use工具进行更改
# (所有文件操作由container-use处理)
# 与他人分享你的工作
container-use log <你的-env-id>
container-use checkout <你的-env-id>
这确保了使用Claude Code时所有开发活动的一致性、可重复性和适当的版本控制。
如果你不使用Claude Code,你可以使用你喜欢的工具和IDE正常开发。常规开发流程不需要container-use的要求。
# 直接从PyPI安装
pip install perplexica-mcp
# 或者使用uvx进行隔离执行
uvx perplexica-mcp --help
# 克隆仓库
git clone https://github.com/thetom42/perplexica-mcp.git
cd perplexica-mcp
# 安装依赖
uv sync
要使用此服务器与MCP客户端,你需要配置客户端以连接到Perplexica MCP服务器。以下是流行MCP客户端的配置示例。
重要:所有传输模式都需要正确配置环境变量,特别是:
PERPLEXICA_BACKEND_URL:指向你的Perplexica后端API的URLPERPLEXICA_CHAT_MODEL_PROVIDER和PERPLEXICA_CHAT_MODEL_NAME:聊天模型配置PERPLEXICA_EMBEDDING_MODEL_PROVIDER和PERPLEXICA_EMBEDDING_MODEL_NAME:嵌入模型配置这些变量必须在你的环境中设置或在MCP客户端配置中提供。
在你的Claude Desktop配置文件中添加以下内容:
位置:~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或%APPDATA%\Claude\claude_desktop_config.json(Windows)
{
"mcpServers": {
"perplexica": {
"command": "uvx",
"args": ["perplexica-mcp", "stdio"],
"env": {
"PERPLEXICA_BACKEND_URL": "http://localhost:3000/api/search",
"PERPLEXICA_CHAT_MODEL_PROVIDER": "openai",
"PERPLEXICA_CHAT_MODEL_NAME": "gpt-4o-mini",
"PERPLEXICA_EMBEDDING_MODEL_PROVIDER": "openai",
"PERPLEXICA_EMBEDDING_MODEL_NAME": "text-embedding-3-small"
}
}
}
}
替代方案(从源码):
{
"mcpServers": {
"perplexica": {
"command": "uv",
"args": ["run", "python", "-m", "perplexica_mcp", "stdio"],
"cwd": "/path/to/perplexica-mcp",
"env": {
"PERPLEXICA_BACKEND_URL": "http://localhost:3000/api/search",
"PERPLEXICA_CHAT_MODEL_PROVIDER": "openai",
"PERPLEXICA_CHAT_MODEL_NAME": "gpt-4o-mini",
"PERPLEXICA_EMBEDDING_MODEL_PROVIDER": "openai",
"PERPLEXICA_EMBEDDING_MODEL_NAME": "text-embedding-3-small"
}
}
}
}
注意:从源码运行时,请确保设置了所有必需的环境变量。stdio传输需要正确的模型提供商和模型名称配置以与Perplexica后端通信。
首先启动服务器:
uv run src/perplexica_mcp/server.py sse
然后配置Claude Desktop:
{
"mcpServers": {
"perplexica": {
"url": "http://localhost:3001/sse"
}
}
}
在你的Cursor MCP配置中添加:
{
"servers": {
"perplexica": {
"command": "uvx",
"args": ["perplexica-mcp", "stdio"],
"env": {
"PERPLEXICA_BACKEND_URL": "http://localhost:3000/api/search",
"PERPLEXICA_CHAT_MODEL_PROVIDER": "openai",
"PERPLEXICA_CHAT_MODEL_NAME": "gpt-4o-mini",
"PERPLEXICA_EMBEDDING_MODEL_PROVIDER": "openai",
"PERPLEXICA_EMBEDDING_MODEL_NAME": "text-embedding-3-small"
}
}
}
}
替代方案(从源码):
{
"servers": {
"perplexica": {
"command": "uv",
"args": ["run", "python", "-m", "perplexica_mcp", "stdio"],
"cwd": "/path/to/perplexica-mcp",
"env": {
"PERPLEXICA_BACKEND_URL": "http://localhost:3000/api/search",
"PERPLEXICA_CHAT_MODEL_PROVIDER": "openai",
"PERPLEXICA_CHAT_MODEL_NAME": "gpt-4o-mini",
"PERPLEXICA_EMBEDDING_MODEL_PROVIDER": "openai",
"PERPLEXICA_EMBEDDING_MODEL_NAME": "text-embedding-3-small"
}
}
}
}
在你的VS Code MCP配置文件(.vscode/mcp.json)中添加:
{
"servers": {
"perplexica": {
"type": "stdio",
"command": "uv",
"args": ["run", "python", "-m", "perplexica_mcp", "stdio"],
"cwd": "/path/to/perplexica-mcp",
"env": {
"PERPLEXICA_BACKEND_URL": "http://localhost:3000/api/search",
"PERPLEXICA_CHAT_MODEL_PROVIDER": "openai",
"PERPLEXICA_CHAT_MODEL_NAME": "gpt-4o-mini",
"PERPLEXICA_EMBEDDING_MODEL_PROVIDER": "openai",
"PERPLEXICA_EMBEDDING_MODEL_NAME": "text-embedding-3-small"
}
}
}
}
对于任何支持stdio传输的MCP客户端:
# 命令以运行服务器(PyPI安装)
uvx perplexica-mcp stdio
# 命令以运行服务器(带.env文件的PyPI安装)
uvx --env-file .env perplexica-mcp stdio
# 命令以运行服务器(从源码)
uv run python -m perplexica_mcp stdio
# 环境变量(可以导出或内联设置)
export PERPLEXICA_BACKEND_URL=http://localhost:3000/api/search
export PERPLEXICA_CHAT_MODEL_PROVIDER=openai
export PERPLEXICA_CHAT_MODEL_NAME=gpt-4o-mini
export PERPLEXICA_EMBEDDING_MODEL_PROVIDER=openai
export PERPLEXICA_EMBEDDING_MODEL_NAME=text-embedding-3-small
# 或者内联设置以供单次执行(所有必需的变量)
PERPLEXICA_BACKEND_URL=http://localhost:3000/api/search \
PERPLEXICA_CHAT_MODEL_PROVIDER=openai \
PERPLEXICA_CHAT_MODEL_NAME=gpt-4o-mini \
PERPLEXICA_EMBEDDING_MODEL_PROVIDER=openai \
PERPLEXICA_EMBEDDING_MODEL_NAME=text-embedding-3-small \
uvx perplexica-mcp stdio
对于HTTP/SSE传输客户端:
# 启动服务器(PyPI安装)
uvx perplexica-mcp sse # 或 'http'
# 启动服务器(从源码)
uv run /path/to/perplexica-mcp/src/perplexica_mcp/server.py sse # 或 'http'
# 连接到端点
SSE: http://localhost:3001/sse
HTTP: http://localhost:3002/mcp/
/path/to/perplexica-mcp/PERPLEXICA_BACKEND_URL指向你的运行中的Perplexica实例uvx已安装并在PATH中可用(或uv用于源码安装)uvx(或uv用于源码)是否已安装且路径正确PERPLEXICA_BACKEND_URL是否正确设置在项目根目录创建一个.env文件,包含你的Perplexica配置:
# Perplexica后端配置
PERPLEXICA_BACKEND_URL=http://localhost:3000/api/search
# 默认模型配置(可选)
# 如果设置,这些模型将在未指定搜索请求中的模型时作为默认值使用
# 聊天模型配置
PERPLEXICA_CHAT_MODEL_PROVIDER=openai
PERPLEXICA_CHAT_MODEL_NAME=gpt-4o-mini
# 嵌入模型配置
PERPLEXICA_EMBEDDING_MODEL_PROVIDER=openai
PERPLEXICA_EMBEDDING_MODEL_NAME=text-embedding-3-small
| 变量 | 描述 | 默认值 | 示例 |
|---|---|---|---|
PERPLEXICA_BACKEND_URL | 指向Perplexica搜索API的URL | http://localhost:3000/api/search | http://localhost:3000/api/search |
PERPLEXICA_CHAT_MODEL_PROVIDER | 默认聊天模型提供商 | 无 | openai,ollama,anthropic |
PERPLEXICA_CHAT_MODEL_NAME | 默认聊天模型名称 | 无 | gpt-4o-mini,claude-3-sonnet |
PERPLEXICA_EMBEDDING_MODEL_PROVIDER | 默认嵌入模型提供商 | 无 | openai,ollama |
PERPLEXICA_EMBEDDING_MODEL_NAME | 默认嵌入模型名称 | 无 | text-embedding-3-small |
注意:模型环境变量是可选的。如果未设置,你需要在每个搜索请求中指定模型。设置后,它们提供了方便的默认值,但仍可以在每次请求中覆盖。
服务器支持三种传输模式:
# PyPI安装
uvx perplexica-mcp stdio
# 从源码
uv run src/perplexica_mcp/server.py stdio
# PyPI安装
uvx perplexica-mcp sse [host] [port]
# 从源码
uv run src/perplexica_mcp/server.py sse [host] [port]
# 默认:localhost:3001,端点:/sse
# PyPI安装
uvx perplexica-mcp http [host] [port]
# 从源码
uv run src/perplexica_mcp/server.py http [host] [port]
# 默认:localhost:3002,端点:/mcp
服务器包括Docker支持,具有多个传输配置,适用于容器化部署。
backend(用于与Perplexica集成)docker network create backend
# 使用HTTP传输构建和运行
docker-compose up -d
# 或先构建,再运行
docker-compose build
docker-compose up -d
# 使用SSE传输构建和运行
docker-compose -f docker-compose-sse.yml up -d
# 或先构建,再运行
docker-compose -f docker-compose-sse.yml build
docker-compose -f docker-compose-sse.yml up -d
两个Docker配置都支持环境变量:
# 为Docker创建.env文件
cat > .env << EOF
PERPLEXICA_BACKEND_URL=http://perplexica-app:3000/api/search
EOF
# 在docker-compose.yml中取消注释env_file以使用.env文件
或者直接在compose文件中设置环境变量:
environment:
- PERPLEXICA_BACKEND_URL=http://your-perplexica-host:3000/api/search
| 传输 | 容器名称 | 端口 | 端点 | 健康检查 |
|---|---|---|---|---|
| HTTP | perplexica-mcp-http | 3001 | /mcp/ | MCP初始化请求 |
| SSE | perplexica-mcp-sse | 3001 | /sse | SSE端点检查 |
两个容器都包括健康检查:
# 检查容器健康
docker ps
docker-compose ps
# 查看健康检查日志
docker logs perplexica-mcp-http
docker logs perplexica-mcp-sse
Docker设置假设Perplexica在同一Docker网络中运行:
# 同一compose文件中的Perplexica服务示例
services:
perplexica-app:
# ... 你的Perplexica配置
networks:
- backend
perplexica-mcp:
# ... MCP服务器配置
environment:
- PERPLEXICA_BACKEND_URL=http://perplexica-app:3000/api/search
networks:
- backend
restart: unless-stopped以提高可靠性使用Perplexica执行AI驱动的网络搜索。
参数:
query(字符串,必填):搜索查询focus_mode(字符串,必填):其中之一:'webSearch','academicSearch','writingAssistant','wolframAlphaSearch','youtubeSearch','redditSearch'chat_model(字符串,可选):聊天模型配置embedding_model(字符串,可选):嵌入模型配置optimization_mode(字符串,可选):'speed' 或 'balanced'history(数组,可选):对话历史system_instructions(字符串,可选):自定义指令stream(布尔值,可选):是否流式传输响应运行全面测试套件以验证所有传输:
uv run src/test_transports.py
这将测试:
http://host:port/ssehttp://host:port/mcp/mcp/服务器使用以下构建:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP客户端 │◄──►│ Perplexica MCP │◄──►│ Perplexica │
│ │ │ 服务器 │ │ 搜索API │
│ (stdio/SSE