项目简介

NIH RePORTER MCP 服务器是一个基于 Model Context Protocol (MCP) 的后端应用,它充当 LLM 客户端和 NIH RePORTER API 之间的桥梁。该服务器提供了一组工具,允许用户通过自然语言指令,利用 LLM 客户端来搜索和检索美国国立卫生研究院 (NIH) 资助的科研项目和相关的科学出版物数据。

主要功能点

  • 科研项目搜索 (search_projects): 允许用户根据多种标准(如财年、PI 姓名、机构信息、资助金额等)搜索 NIH 资助的科研项目。
  • 科学出版物搜索 (search_publications): 允许用户搜索与 NIH 科研项目相关的出版物。
  • 综合搜索 (search_combined): 结合项目和出版物搜索功能,一次性检索相关信息。
  • 连接测试 (test_connection): 用于验证与 NIH RePORTER API 的连接是否正常。
  • 结构化结果输出: 所有搜索结果均以结构化的 Markdown 格式返回,方便 LLM 客户端理解和展示。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/jbdamask/mcp-nih-reporter
    cd mcp-nih-reporter
  2. 创建并激活虚拟环境:

    python -m venv .venv
    source .venv/bin/activate   # Linux/macOS
    # .venv\Scripts\activate  # Windows
  3. 安装依赖:

    uv pip install -e .
  4. 配置 API 密钥:

    • 在项目根目录下创建 '.env' 文件。
    • 在 '.env' 文件中添加 Data.gov API 密钥 (需要注册获取):
      DATA_GOV_API_KEY=YOUR_API_KEY_HERE

服务器配置

MCP 客户端需要配置以下 JSON 信息以连接到 NIH RePORTER MCP 服务器:

{
  "serverName": "NIH RePORTER MCP Server",
  "command": "python",
  "args": ["server.py"]
}

配置参数说明:

  • 'serverName': 服务器名称,可以自定义,用于在客户端中标识该服务器。
  • 'command': 启动服务器的命令,这里使用 'python' 解释器。
  • 'args': 传递给 'python' 命令的参数,'["server.py"]' 指定运行 'server.py' 文件。

注意:

  • 确保已安装 Python 3.12 或更高版本。
  • 确保已设置 'DATA_GOV_API_KEY' 环境变量。
  • 首次运行前,请先完成安装步骤。

基本使用方法

  1. 启动服务器: 在虚拟环境激活的状态下,在项目根目录运行以下命令启动 MCP 服务器:

    python server.py

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

  2. 在 MCP 客户端中使用:

    • 在兼容 MCP 协议的 LLM 客户端(如 Claude Desktop, Cursor 等)中,配置上述服务器 JSON 信息。
    • 使用自然语言指令,客户端会将指令转换为对 MCP 服务器工具的调用。
    • 例如,在客户端中输入类似 "搜索 2023 年关于癌症的 NIH 科研项目" 的指令,客户端会调用 'search_projects' 工具,并将 "2023年" 和 "癌症" 等信息作为参数传递给服务器。
    • 服务器会调用 NIH RePORTER API 进行搜索,并将结果以 Markdown 格式返回给客户端。

工具调用示例:

以下是一些工具及其参数的示例,可以在 MCP 客户端中调用:

  • 搜索项目:
    search_projects(fiscal_years="2023", rcdc_terms="Cancer", limit=5)
  • 搜索出版物:
    search_publications(core_project_nums="CA123456", limit=3)
  • 综合搜索:
    search_combined(fiscal_years="2022", pi_names="John Doe", include_publications=true, limit=5)

请参考 'server.py' 文件中每个工具函数的参数定义和描述,以了解更详细的工具使用方法和参数选项。

信息

分类

网页与API