学术论文搜索 MCP 服务器

本项目是一个基于 Model Context Protocol (MCP) 构建的后端服务器,旨在为大型语言模型 (LLM) 提供学术论文的搜索和检索能力。通过此服务器,LLM 可以实时访问最新的学术研究成果,并获取论文的元数据和摘要,甚至在可能的情况下获取全文内容。

主要功能点:

  • 论文搜索:支持关键词搜索,快速查找相关学术论文。
  • 论文详情获取:根据论文ID(DOI或Semantic Scholar ID)获取论文的详细信息,包括标题、作者、年份、摘要等。
  • 主题搜索:按主题搜索论文,并支持按年份范围筛选。
  • 多数据源:集成 Semantic Scholar 和 Crossref 两个主要的学术数据源。
  • 结构化数据返回:遵循 MCP 规范,以结构化的 JSON 格式返回数据,方便 LLM 理解和处理。

安装步骤:

  1. 安装依赖: 确保你的系统已安装 'uv' 包管理器。然后运行以下命令安装项目依赖:

    uv add "mcp[cli]" httpx
  2. 配置 API 密钥 (可选): 虽然代码中提到了 'SEMANTIC_SCHOLAR_API_KEY' 和 'CROSSREF_API_KEY' 环境变量,但根据代码注释,这些密钥实际上并没有被使用。因此,你可以跳过配置 API 密钥的步骤,直接运行服务器。

  3. 运行服务器: 在项目根目录下,运行以下命令启动 MCP 服务器:

    uv run server.py

    服务器成功启动后,将通过标准输入/输出 (stdio) 与 MCP 客户端进行通信。

服务器配置 (claude_desktop_config.json 配置示例):

要将此 MCP 服务器与 Claude Desktop 等 MCP 客户端配合使用,你需要在客户端的配置文件中添加服务器配置信息。以下是一个 'claude_desktop_config.json' 文件的配置示例,你需要根据实际情况修改 'command' 和 'args' 中的路径:

{
  "mcpServers": {
    "academic-search": {
      "command": "uv",  // 启动服务器的命令,这里使用 uv 包管理器
      "args": ["run", "/path/to/server/server.py"], // 启动服务器的参数,指向 server.py 脚本的路径。请将 "/path/to/server/server.py" 替换为 server.py 脚本的实际路径
      "env": {} // 环境变量,本服务器配置中不需要额外的环境变量
    }
  }
}

基本使用方法:

配置完成后,MCP 客户端(如 Claude Desktop)就可以通过 MCP 协议与此服务器进行通信。LLM 可以调用以下工具来搜索和获取学术论文信息:

  • 'search_papers(query, limit)': 根据关键词 'query' 搜索论文,'limit' 参数限制返回结果的数量(默认为 10)。
  • 'fetch_paper_details(paper_id, source)': 根据论文 ID ('paper_id') 获取论文详情,'source' 参数指定数据来源('semantic_scholar' 或 'crossref',默认为 'semantic_scholar')。
  • 'search_by_topic(topic, year_start, year_end, limit)': 根据主题 'topic' 搜索论文,'year_start' 和 'year_end' 参数可以限定年份范围,'limit' 参数限制返回结果数量(默认为 10)。

LLM 需要在对话中指示客户端调用这些工具,并提供相应的参数,服务器会将搜索结果返回给 LLM,从而实现学术论文的检索和利用。

信息

分类

网页与API