蛋白质数据API服务

InterPro MCP Server通过Model Context Protocol (MCP)与Claude AI集成,提供蛋白质域、结构和分类数据的API访问。

  • by cnyambura
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 cnyambura/interpro-mcp

使用说明

InterPro MCP 服务器

InterPro API通过模型上下文协议(MCP)与Claude AI集成,提供蛋白质结构域、结构和分类数据的访问。

特点/特性

  • 12个API函数 - 6个同步版本 + 6个异步版本
  • 6 种数据类型条目,蛋白质,结构,集合,分类学,蛋白质组
  • 并发请求 异步函数支持并行API调用
  • MCP 集成 - 准备与Claude桌面版一起使用
  • 全面测试 - 为同步和异步函数提供完整的测试套件

安装

先决条件

  • Python 3.10 或更高版本
  • UV包管理器

设置

  1. 创建虚拟环境:
cd interpro-mcp
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. 安装依赖项:
uv pip install requests aiohttp python-dotenv fastmcp

API 函数

同步函数

所有函数都支持相同的参数结构:

  • source数据库源(可选)
  • accession特定ID/登录号(可选)
  • page_size每页结果数(默认:20,最大:200)
  • extra_fields要包含的额外字段(可选)

可用功能:

  1. get_entry() - 蛋白质结构域条目(InterPro、Pfam、CDD等)
  2. get_protein() - 蛋白质序列(UniProtKB)
  3. get_structure() - PDB(蛋白质数据库)结构
  4. get_set() - 关系集(氏族、家庭)
  5. get_taxonomy() - 分类学信息
  6. get_proteome() - 蛋白质组集合

异步函数

每个函数都有一个异步版本,其中 _async 后缀:

  • get_entry_async()
  • get_protein_async()
  • get_structure_async()
  • get_set_async()
  • get_taxonomy_async()
  • get_proteome_async()

使用示例

同步:

from interpro_api import get_protein, get_entry

# Get specific protein
result = get_protein(source='uniprot', accession='P04637')

# Get Pfam entries
entries = get_entry(source='pfam', page_size=50)

异步:

import asyncio
from interpro_api import get_protein_async, get_entry_async

async def fetch_data():
    # Run multiple requests concurrently
    results = await asyncio.gather(
        get_protein_async(source='uniprot', accession='P04637'),
        get_entry_async(source='pfam', accession='PF00001'),
        get_taxonomy_async(source='uniprot', accession='9606')
    )
    return results

# Run async function
asyncio.run(fetch_data())

测试

运行同步测试

source .venv/bin/activate
python test_interpro_api.py

运行异步测试

source .venv/bin/activate
python test_async_functions.py

MCP服务器

MCP服务器将所有6个同步函数作为工具提供给Claude Desktop使用:

  • interpro_get_entry
  • interpro_get_protein
  • interpro_get_structure
  • interpro_get_set
  • interpro_get_taxonomy
  • interpro_get_proteome

配置Claude桌面版

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "interpro": {
      "command": "/path/to/interpro-mcp/.venv/bin/python",
      "args": ["/path/to/interpro-mcp/interpro_mcp_server.py"]
    }
  }
}

运行服务器

source .venv/bin/activate
python interpro_mcp_server.py

项目结构

interpro-mcp/
├── .venv/                      # Virtual environment (uv)
├── interpro_api.py             # 12 API functions (6 sync + 6 async)
├── interpro_mcp_server.py      # MCP server with 6 tools
├── test_interpro_api.py        # Synchronous function tests
├── test_async_functions.py     # Async function tests
├── pyproject.toml              # Project configuration
└── README.md                   # This file

数据类型

1. 入口/入场

预测蛋白质的功能域和结构域

  • 来源InterPro、Pfam、CDD、CATH-Gene3D、HAMAP、PANTHER、PRINTS、PROSITE、SMART、Superfamily
  • 示例: get_entry(source='pfam', accession='PF00001')

2. 蛋白质

来自UniProtKB的蛋白质序列

  • 来源已审核,未审核,Uniprot(注:Uniprot是一个蛋白质数据库)
  • 示例: get_protein(source='uniprot', accession='P04637')

3. 结构

来自PDB的高分子结构

  • 来源pdb(Python调试器)
  • 示例: get_structure(source='pdb', accession='1UBQ')

4. 设定/设置

条目(氏族、家族)之间的关系

  • 来源Pfam,CDD,PIRSF
  • 示例: get_set(source='pfam', accession='CL0001')

5. 分类学

来自UniProtKB的分类信息

  • 来源Uniprot(注:Uniprot是一个生物信息学数据库,用于存储和提供蛋白质序列和功能信息,此处直接使用其英文名称,因为中文中没有广泛使用的对应译名)
  • 示例: get_taxonomy(source='uniprot', accession='9606')

6. 蛋白质组

来自全基因组测序的蛋白质集合

  • 来源Uniprot(一个蛋白质数据库)
  • 示例: get_proteome(source='uniprot', accession='UP000005640')

演出

  • 异步函数支持并发请求以提高性能
  • 超时每个请求30秒
  • 分页每页最多显示200个结果
  • 速率限制尊重EBI API指南

许可证

麻省理工学院许可证

做出贡献

欢迎贡献!请提交拉取请求。

文档