paperqa mcp
MCP服务器包装 paperqa v5 用于本地PDF论文的语义问答。
工具
ask_question(question)--从索引的PDF中回答一个研究问题,并附上引用。list_papers()--在纸张目录中列出PDF文件,并报告索引状态。
设置
需要Python 3.11+和 uv.
环境变量
| 变量 | 目的 | 默认值 |
|---|---|---|
PAPER_DIR | 包含PDF的目录的绝对路径 | *必需* |
PAPERQA_LLM | 主要LLM模型 | claude-haiku-4-5-20251001 |
PAPERQA_SUMMARY_LLM | LLM模型摘要 | 与 PAPERQA_LLM |
PAPERQA_AGENT_LLM | 代理LLM模型 | 与 PAPERQA_LLM |
PAPERQA_EMBEDDING | 嵌入模型 | openrouter/openai/text-embedding-3-small |
ANTHROPIC_API_KEY | Anthropic API钥匙(适用于Claude车型) | *克劳德需要* |
OPENROUTER_API_KEY | OpenRouter API密钥(用于OpenRouter LLM和嵌入) | *OpenRouter需要* |
ZHIPUAI_API_KEY | 智普AI API密钥(适用于z.AI/GLM型号) | *z.ai型号需要* |
支持的型号
拟人克劳德模型
claude-haiku-4-5-20251001(默认)claude-opus-4-6claude-sonnet-4-6
z.ai(智普ai)模型
openai/glm-4-最新的复杂任务openai/glm-4.7-增强编码,长任务openai/glm-4.7-FlashX-重量轻,速度快openai/glm-4.6-编码专家(使用编码API端点)openai/glm-4.5-air-成本效益高
备注:z.ai型号需要 ZHIPUAI_API_KEY 待设定。服务器自动使用相应的API端点(/api/paas/v4/ 或 /api/coding/paas/v4/)基于该模型。
OpenRouter型号
openrouter/free-OpenRouter免费型号路由器openrouter/-任何直接的OpenRouter型号ID,包括:free变体
备注:OpenRouter型号需要 OPENROUTER_API_KEY聊天模型支持内置于此MCP包装器中,但PaperQA依赖于代理/工具调用行为,一些免费的OpenRouter路由可能仍与当前的不兼容 paperqa/LiteLLM堆栈。将免费变体视为实验性的,并在将其设置为默认值之前对其进行测试。
跑步
uv run --python 3.11 --project /path/to/paperqa-mcp paperqa-mcpMCP配置(.mcp.json)
默认配置(Claude Haiku)
"paperqa": {
"command": "uv",
"args": [
"run",
"--python", "3.11",
"--project", "/path/to/paperqa-mcp",
"paperqa-mcp"
],
"env": {
"PAPER_DIR": "/path/to/paper/references"
}
}使用z.ai GLM-4.6(编码专家)
"paperqa": {
"command": "uv",
"args": [
"run",
"--python", "3.11",
"--project", "/path/to/paperqa-mcp",
"paperqa-mcp"
],
"env": {
"PAPER_DIR": "/path/to/paper/references",
"PAPERQA_LLM": "openai/glm-4.6",
"PAPERQA_SUMMARY_LLM": "openai/glm-4.6",
"PAPERQA_AGENT_LLM": "openai/glm-4.6"
}
}使用OpenRouter免费型号
"paperqa": {
"command": "uv",
"args": [
"run",
"--python", "3.11",
"--project", "/path/to/paperqa-mcp",
"paperqa-mcp"
],
"env": {
"PAPER_DIR": "/path/to/paper/references",
"PAPERQA_LLM": "openrouter/free",
"PAPERQA_SUMMARY_LLM": "openrouter/free",
"PAPERQA_AGENT_LLM": "openrouter/free",
"PAPERQA_EMBEDDING": "openrouter/openai/text-embedding-3-small"
}
}如果 ask_question() 特定于OpenRouter失败 tool_choice, tool use或提供程序路由错误,切换到不同的OpenRouter模型或回退到代理LLM的非自由模型/提供程序。
混合配置(不同任务的不同LLM)
"paperqa": {
"command": "uv",
"args": [
"run",
"--python", "3.11",
"--project", "/path/to/paperqa-mcp",
"paperqa-mcp"
],
"env": {
"PAPER_DIR": "/path/to/paper/references",
"PAPERQA_LLM": "openai/glm-4",
"PAPERQA_SUMMARY_LLM": "claude-haiku-4-5-20251001",
"PAPERQA_AGENT_LLM": "openai/glm-4.6"
}
}API密钥管理
重要:The .mcp.json 文件不支持shell变量扩展(例如。, $API_KEY).API密钥必须从shell环境继承。
设置API密钥
您可以通过以下方式之一设置API密钥:
- 外壳外形 (建议用于持久设置):
# Add to ~/.bashrc or ~/.zshrc
export ANTHROPIC_API_KEY="your-anthropic-key"
export OPENROUTER_API_KEY="your-openrouter-key"
export ZHIPUAI_API_KEY="your-zhipuai-key"- 项目
.env文件 (适用于基于Docker的工作流):
# Add to .env (gitignored)
ANTHROPIC_API_KEY=your-anthropic-key
OPENROUTER_API_KEY=your-openrouter-key
ZHIPUAI_API_KEY=your-zhipuai-key- 会话环境 (临时):
export OPENROUTER_API_KEY="your-openrouter-key" && claude-codeMCP服务器在启动时会自动继承这些环境变量。
