使用说明
研究MCP服务器
研究人员在搜索工具和人工智能助手之间不断切换上下文。 你在一个选项卡中找到一篇论文,将标题复制到另一个选项卡,在 第三。工作流程在设计上是分散的。
此MCP服务器将arXiv论文发现直接带入任何AI助手 其支持模型上下文协议。搜索论文,提取元数据, 浏览已保存的收藏——所有这些都不会离开你的对话。
我为什么建造这个
MCP是将AI助手连接到外部工具的新兴标准。 我想构建一个实用的MCP服务器,解决一个真正的工作流问题 同时探索协议的三个核心原语:
- 工具 --
search_papers和extract_info让AI搜索arXiv 并代表您提取结构化论文元数据 - 资源 --
papers://folders和papers://{topic}暴露已保存 研究作为可浏览的上下文,人工智能可以直接阅读 - 提示 --
generate_search_prompt创建结构化研究 指导系统文献综述的工作流程
快速启动
# Clone and install
git clone https://github.com/spalit2025/research-mcp-server.git
cd research-mcp-server
pip install -e .
# Run the server
python -m research_mcp_server.server
连接到克劳德桌面
添加到您的Claude桌面配置(claude_desktop_config.json):
{
"mcpServers": {
"research": {
"command": "python",
"args": ["-m", "research_mcp_server.server"]
}
}
}
然后问克劳德: “搜索有关变压器架构的最新论文”
使用MCP检查员进行测试
npx @modelcontextprotocol/inspector python -m research_mcp_server.server
# Opens web UI at http://localhost:6274
示例
让你的人工智能助手搜索论文:
“查找有关变压器架构的最新论文”
助理打来电话 search_papers("transformer architectures") 并返回:
["2401.12345v1", "2401.23456v1", "2401.34567v1"]
然后它可以呼叫 extract_info("2401.12345v1") 要获取详细信息:
{
"title": "A Comprehensive Survey of Transformer Architectures",
"authors": ["Alice Smith", "Bob Jones"],
"summary": "This paper reviews the evolution of transformer architectures...",
"pdf_url": "https://arxiv.org/pdf/2401.12345v1",
"published": "2024-01-15"
}
论文保存在本地 papers/transformer_architectures/papers_info.json
以供将来参考。
运作原理
+-----------------------+
| AI Assistant |
| (Claude Desktop, |
| MCP Inspector) |
+-----------+-----------+
|
| stdio (JSON-RPC)
|
+-----------v-----------+
| Research MCP Server |
| |
| Tools: | +------------------+
| search_papers -------+------->| arXiv API |
| extract_info | | (external) |
| | +------------------+
| Resources: |
| papers://folders | +------------------+
| papers://{topic} ----+------->| papers/ |
| | | {topic}/ |
| Prompts: | | papers_info |
| generate_search_ | | .json |
| prompt | +------------------+
+------------------------+
api参考
工具
search_papers --在arXiv上搜索某个主题的论文
{ "topic": "machine learning transformers", "max_results": 10 }
返回纸张ID列表。结果缓存在本地 papers/ 目录。
输入验证:空主题被拒绝, max_results 夹紧至1-50,
路径遍历尝试被阻止。
extract_info --获取特定论文的元数据
{ "paper_id": "2401.12345v1" }
返回标题、作者、摘要、PDF URL、发布日期。
资源
papers://folders--列出所有已保存的主题目录papers://{topic}--主题的全文详细信息(标题、作者、摘要、PDF链接)
提示
generate_search_prompt--生成结构化的研究工作流程:搜索、提取、分析、综合
关键设计决策
-
stdio传输: MCP支持stdio和HTTP。stdio对于本地开发来说更简单,并且可以与Claude Desktop一起开箱即用。
-
基于文件的持久性: 论文保存为按主题组织的JSON文件。简单、可检查、无数据库依赖性。足够作为个人研究工具。
-
路径遍历保护: 在任何文件操作之前,主题名称都会针对目录遍历攻击进行验证。
-
有限的结果:
max_results上限为50,以防止意外滥用API。 -
优雅的错误处理: 网络故障、HTTP错误和磁盘错误会返回结构化错误消息,而不是使服务器崩溃。
项目结构
research-mcp-server/
+-- src/research_mcp_server/
| +-- __init__.py # Package version
| +-- server.py # MCP server (tools, resources, prompts)
| +-- storage.py # File-based paper persistence
| +-- models.py # Paper dataclass
+-- tests/
| +-- conftest.py # Shared fixtures
| +-- test_search.py # search_papers tests
| +-- test_extract.py # extract_info tests
| +-- test_resources.py # Resource endpoint tests
| +-- test_storage.py # PaperStorage tests
| +-- test_server.py # Prompt generation tests
+-- .github/workflows/ci.yml # CI: lint + test (Python 3.10-3.13)
+-- pyproject.toml # Package config, dependencies, tool settings
+-- CONTRIBUTING.md
+-- TODOS.md
+-- LICENSE # MIT
+-- README.md
发展
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest -v
# Lint and format
ruff check .
ruff format .
看 贡献.md 了解更多详情。
需求
- Python 3.10+
- 互联网连接(arXiv API访问)
- MCP兼容客户端(克劳德桌面、MCP检查器或自定义)
许可证
麻省理工学院