学术论文搜索服务

一个通过Model Context Protocol(MCP)将arXiv论文发现集成到AI助手中的服务,支持搜索论文、提取元数据和浏览保存的集合。

  • by spalit2025
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 spalit2025/research-mcp-server

使用说明

研究MCP服务器

研究人员在搜索工具和人工智能助手之间不断切换上下文。 你在一个选项卡中找到一篇论文,将标题复制到另一个选项卡,在 第三。工作流程在设计上是分散的。

此MCP服务器将arXiv论文发现直接带入任何AI助手 其支持模型上下文协议。搜索论文,提取元数据, 浏览已保存的收藏——所有这些都不会离开你的对话。

我为什么建造这个

MCP是将AI助手连接到外部工具的新兴标准。 我想构建一个实用的MCP服务器,解决一个真正的工作流问题 同时探索协议的三个核心原语:

  1. 工具 -- search_papers 和 extract_info 让AI搜索arXiv 并代表您提取结构化论文元数据
  2. 资源 -- papers://folders 和 papers://{topic} 暴露已保存 研究作为可浏览的上下文,人工智能可以直接阅读
  3. 提示 -- 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检查器或自定义)

许可证

麻省理工学院