返回市场
开放亚历克斯-MCP服务器

开放亚历克斯-MCP服务器

作者:DavidEncrypted2 星标更新:2025-05-08

项目介绍

OpenAlex MCP Server

该项目提供了一个模型上下文协议(MCP)服务器,允许AI代理和其他MCP客户端与OpenAlex数据库进行交互,特别关注学术作品。它利用了pyalex Python库来与OpenAlex API通信,并使用MCP Python SDK (fastmcp) 将功能暴露为MCP工具。

示例

为了激发灵感,这里有一些你可以向启用了此MCP的AI代理询问的示例查询:

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

我最喜欢的AI代理是cline:https://github.com/cline/cline

功能

该服务器提供了以下MCP工具用于与OpenAlex作品互动:

  1. search_works

    • 描述:根据关键词和过滤器搜索OpenAlex作品。支持在搜索查询中使用布尔运算符。返回选定字段并使用游标分页。
    • 参数
      • search_query (字符串,必需):搜索词。
      • filters (对象,可选):用于过滤的键值对(例如,{"publication_year": 2023, "is_oa": true})。参见OpenAlex过滤文档以获取可能的键。
      • search_field (字符串,可选,默认:"default"):要搜索的字段('title','abstract','fulltext','title_and_abstract','default' - 搜索标题、摘要和全文)。
      • select_fields (字符串数组,可选):要返回的顶级字段列表(例如,["id", "doi", "title", "abstract"])。如果请求,则包括纯文本摘要。
      • sort (对象,可选):排序字段及方向(例如,{"cited_by_count": "desc"})。
      • per_page (整数,可选,默认:25):每页结果数(最大200)。
      • cursor (字符串,可选):分页游标。
    • 返回:包含results(工作对象列表)和meta(分页信息,包括next_cursor)的对象。
  2. get_work_details

    • 描述:通过其ID(OpenAlex ID URL,DOI URL,PMID URL,MAG ID)检索特定OpenAlex作品的详细信息。
    • 参数
      • work_id (字符串,必需):作品标识符。
      • select_fields (字符串数组,可选):要返回的顶级字段列表。如果请求,则包括纯文本摘要。
    • 返回:表示具有选定字段的作品的对象,或错误对象。
  3. get_referenced_works

    • 描述:检索由特定OpenAlex作品引用的OpenAlex ID列表(外引)。注意:此工具当前仅返回ID列表。使用get_work_details获取每个引用的更多信息。
    • 参数
      • work_id (字符串,必需):引用作品的OpenAlex ID。
    • 返回:包含referenced_work_ids(字符串列表)的对象,或错误对象。
  4. get_citing_works

    • 描述:检索引用特定OpenAlex作品的其他作品列表(内引)。使用游标分页。
    • 参数
      • work_id (字符串,必需):被引用作品的OpenAlex ID。
      • select_fields (字符串数组,可选):每个引用作品的顶级字段列表。
      • per_page (整数,可选,默认:25):每页结果数(最大200)。
      • cursor (字符串,可选):分页游标。
    • 返回:包含results(引用作品对象列表)和meta(分页信息)的对象,或错误对象。
  5. get_work_ngrams

    • 描述:检索特定OpenAlex作品全文的N-grams(词序信息),如果可用的话。
    • 参数
      • work_id (字符串,必需):作品的OpenAlex ID。
    • 返回:表示N-grams的对象,或错误对象(例如,如果没有找到N-grams)。

注意

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礼貌池,请在运行服务器之前或在配置MCP客户端时设置OPENALEX_EMAIL环境变量为您的电子邮件地址。
    export OPENALEX_EMAIL="your.email@example.com"
    
    如果未设置此变量,服务器将使用匿名池,该池有更严格的速率限制。

MCP集成

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

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

{
  "mcpServers": {
    "... 其他服务器 ...": {},
    "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" // 在此处设置您的电子邮件!
      },
      "transportType": "stdio"
    }
  }
}
  • "your.email@example.com"替换为您实际的电子邮件地址。
  • 添加配置后,请重新启动您的MCP客户端(例如,重新加载VS Code窗口)。

使用

一旦服务器已配置并运行(无论是通过MCP客户端集成还是手动开发),您可以在AI代理中使用use_mcp_tool命令与其互动。

示例工具调用:

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

    <use_mcp_tool>
      <server_name>openalex</server_name>
      <tool_name>search_works</tool_name>
      <arguments>
      {
        "search_query": "机器学习",
        "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交互。