学术论文查询服务

OpenAlex MCP Server是一个基于OpenAlex数据库的学术论文查询服务,提供搜索、获取论文详情、引用关系查询等功能,适用于学术研究和AI代理集成。

  • by DavidEncrypted
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 DavidEncrypted/openalex-mcp-server

使用说明

OpenAlex MCP服务器

该项目提供了一个模型上下文协议(MCP)服务器,允许AI代理和其他MCP客户端与 OpenAlex 数据库,专门关注学术作品。它利用了 pyalex Python库与OpenAlex API和 MCP Python SDK (fastmcp)以MCP工具的形式公开功能。

例子

为了获得灵感,您可以向启用了此mcp的AI代理询问一些示例查询:

  • 查找引用卷积神经网络基础论文最多的5篇论文
  • 我正在寻找与自我监督视觉里程计相关的论文。找到与此主题相关的论文,然后通过阅读标题+摘要对每篇论文的相关性进行评分,然后给它们一个1-10的相关性评分。
  • 查找自2020年以来发表的关于变压器模型的最具影响力的论文,并总结该架构是如何演变的
  • 查找麻省理工学院和斯坦福大学研究人员合著的论文

特性

此服务器公开了以下MCP工具,用于与OpenAlex works交互:

  1. search_works:

    • 说明: OpenAlex的搜索基于关键字和过滤器。支持搜索查询中的布尔运算符。返回选定字段并使用光标分页。
    • 参数:
      • search_query (字符串,必填):搜索词。
      • filters (object,可选):用于过滤的键值对(例如。, {"publication_year": 2023, "is_oa": true}).有关可能的密钥,请参阅OpenAlex筛选器文档。
      • search_field (字符串,可选,默认值:“默认”):要搜索的字段(“title”、“abstract”、“fulltext”、“title_and_abstract”、“default”-搜索标题、摘要和全文)。
      • select_fields (字符串数组,可选):要返回的根级字段列表(例如。, ["id", "doi", "title", "abstract"]).如果需要,包括明文摘要。
      • sort (object,可选):要排序的字段和方向(例如。, {"cited_by_count": "desc"}).
      • per_page (整数,可选,默认值:25):每页结果(最多200个)。
      • cursor (字符串,可选):分页光标。
    • 退货: 对象与 results (工作对象列表)和 meta (分页信息包括 next_cursor).
  2. get_work_details:

    • 说明: 通过特定OpenAlex作品的ID(OpenAlex ID URL、DOI URL、PMID URL、MAG ID)检索其详细信息。
    • 参数:
      • work_id (string,必填):作品的标识符。
      • select_fields (字符串数组,可选):要返回的根级字段列表。如果需要,包括明文摘要。
    • 退货: 表示具有选定字段的工作的对象,或错误对象。
  3. get_referenced_works:

    • 说明: 检索引用的OpenAlex ID列表 通过 OpenAlex的一项具体工作(即将发表的引用)。注意:此工具目前仅返回ID列表。使用 get_work_details 有关每个参考的更多信息。
    • 参数:
      • work_id (string,必填):OpenAlex ID 引用 工作。
    • 退货: 对象与 referenced_work_ids (字符串列表)或错误对象。
  4. get_citing_works:

    • 说明: 检索以下作品的列表 引用 OpenAlex的一项具体工作(收到的引用)。使用光标分页。
    • 参数:
      • work_id (string,必填):OpenAlex ID 引用 工作。
      • select_fields (字符串数组,可选):每个引用工作的根级字段列表。
      • per_page (整数,可选,默认值:25):每页结果(最多200个)。
      • cursor (字符串,可选):分页光标。
    • 退货: 对象与 results (引用工作对象列表)和 meta (分页信息)或错误对象。
  5. get_work_ngrams:

    • 说明: 检索特定OpenAlex作品全文的N-gram(单词邻近信息)(如果可用)。
    • 参数:
      • work_id (string,必填):作品的OpenAlex ID。
    • 退货: 表示N-gram的对象,或错误对象(例如,如果找不到N-gram)。

备注

由于文案的原因,OpenAlex通常不存储全文。 这也意味着openalex搜索功能不会搜索全文,而只搜索标题+摘要

设置和安装

安装

  1. 克隆存储库(可选):

    git clone <repository-url>
    cd openalex-mcp-server
    
  2. 安装依赖项:

    uv venv
    source .venv/bin/activate
    
    uv pip install .
    

    这将安装服务器包及其依赖项(mcp[cli], pyalex).

  3. 运行服务器:

    uv --directory /YOUR/INSTALL/DIRECTORY/openalex-mcp-server run server.py
    

配置

  • OpenAlex礼貌池: 要使用更快、更可靠的OpenAlex礼貌池,请设置 OPENALEX_EMAIL 环境变量到您的电子邮件地址 之前 运行服务器或在MCP客户端中配置服务器时。
    export OPENALEX_EMAIL="your.email@example.com"
    
    如果未设置此变量,服务器将使用具有更严格速率限制的匿名池。

MCP集成

要将此服务器与MCP客户端(如克劳德VS代码扩展或克劳德桌面)一起使用,您需要将其配置添加到客户端的设置文件中。

配置示例(cline_mcp_settings.json 或类似):

{
  "mcpServers": {
    "... other servers ...": {},
    "openalex": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "command": "uv",
      "args": [
        "--directory", "/YOUR/INSTALL/DIRECTORY/openalex-mcp-server", "run", "server.py"
      ],
      "env": {
        "OPENALEX_EMAIL": "your.email@example.com" // Set your email here!
      },
      "transportType": "stdio"
    }
  }
}
  • 替换 "your.email@example.com" 使用您的实际电子邮件地址。
  • 添加配置后重新启动MCP客户端(例如,重新加载VS Code窗口)。

用法

服务器配置并运行后(通过MCP客户端集成或手动进行开发),您可以使用 use_mcp_tool 在您的AI代理中执行命令。

工具调用示例:

  • 搜索2023年发表的关于“机器学习”的论文:

    <use_mcp_tool>
      <server_name>openalex</server_name>
      <tool_name>search_works</tool_name>
      <arguments>
      {
        "search_query": "machine learning",
        "filters": { "publication_year": 2023 },
        "select_fields": ["id", "doi", "title", "publication_year", "cited_by_count"]
      }
      </arguments>
    </use_mcp_tool>
    
  • 获取特定工作的详细信息:

    <use_mcp_tool>
      <server_name>openalex</server_name>
      <tool_name>get_work_details</tool_name>
      <arguments>
      {
        "work_id": "W2741809807",
        "select_fields": ["title", "authorships", "abstract", "open_access"]
      }
      </arguments>
    </use_mcp_tool>
    
  • 获取作品的参考文献:

    <use_mcp_tool>
      <server_name>openalex</server_name>
      <tool_name>get_referenced_works</tool_name>
      <arguments>
      {
        "work_id": "W2741809807"
      }
      </arguments>
    </use_mcp_tool>
    

发展

要在本地运行服务器进行开发和测试,请执行以下操作:

  1. 确保已安装依赖项(请参阅安装)。
  2. 设置 OPENALEX_EMAIL 环境变量。
  3. mcp dev server.py

依赖项

  • mcp-sdk:用于MCP服务器实现。
  • pyalex:用于与OpenAlex API交互。