Token导航 LogoToken导航TokenDH.com
Medical Mcps logo
数据服务stdio官方级别未说明来源级核验

Medical Mcps

MCP Server

MCP服务器,整合了多个生物医学数据库用于研究目的,提供统一的API访问接口。

工具数

0

提示词数

0

GitHub Stars

20

资源数

0
PythonCursor数据分析Cursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

pascalwhoop

提供方

pascalwhoop

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install medical-mcps

详细介绍

生物原料药MCP服务器

](https://pypi.org/project/medical-mcps/) ![Python 3.12+](https://www.python.org/downloads/) ![License: MIT](https://opensource.org/licenses/MIT) ![Release](https://github.com/pascalwhoop/medical-mcps/actions/workflows/release.yml)

MCP服务器,集成了多个生物和医学数据库用于研究目的。

快速开始

连接到生产服务器

使用此MCP服务器的最简单方法是连接到生产部署。所有API都是 可通过a 统一端点 这使您可以在一个地方访问所有工具。

生产URL: https://mcp.cloud.curiloo.com/tools/unified/mcp

在Cursor(或其他MCP客户端)中配置

将此添加到您的 .cursor/mcp.json (或等效的MCP客户端配置):

{
    "mcpServers": {
        "medical-apis": {
            "url": "https://mcp.cloud.curiloo.com/tools/unified/mcp"
        }
    }
}

所得

连接后,您将可以访问 100+工具 涵盖14种生物和医疗原料药:

  • 路径:Reactome、KEGG、Pathway Commons
  • 基因和蛋白质:UniProt、MyGene.info、节点规范化
  • 目标与关联:OpenTargets平台
  • 变体:MyVariant.info,GWAS目录
  • 疾病:OMIM、MyDisease.info
  • 药物:ChEMBL、MyChem.info、OpenFDA
  • 文学:PubMed/PubTator3
  • 试验:ClinicalTrials.gov,NCI临床试验
  • 知识图谱:每个治愈矩阵知识图

示例:搜索基因

{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
        "name": "mygene_get_gene",
        "arguments": {
            "gene_id_or_symbol": "TP53"
        }
    }
}

单个API终点

如果您更喜欢单独使用单个API,则每个API都有自己的端点:

  • /tools/reactome/mcp -仅限Reactome
  • /tools/pubmed/mcp -仅限PubMed
  • /tools/chembl/mcp -仅限中国
  • …(参见 可用端点 完整列表)

本地开发

要在本地运行自己的实例,您可以:

  • 使用Docker Compose(建议用于快速设置)-请参阅

集成API

✅ 已实现的API

  • API反应器 -通路信息、基因/蛋白质查询、疾病关联
  • API KEGG公司 -通路图、基因注释、疾病和药物信息
  • UniProt API -蛋白质序列、功能注释、疾病关联
  • API公司 -遗传疾病信息,基因-疾病关联(需要API密钥)
  • GWAS目录API -遗传关联、变异信息、研究元数据
  • Pathway Commons API -综合通路数据、通路相互作用、基因/蛋白质网络
  • 节点规范化API -CURIE规范化,跨数据库的标识符映射
  • 中国API -药物-靶点相互作用、生物活性数据、作用机制、药物

适应症

  • ClinicalTrials.gov API -临床试验搜索、研究元数据、试验状态
  • PubMed/PubTator3 API -生物医学文献检索、文章检索、预印本检索
  • OpenFDA API -美国食品药品监督管理局不良事件报告、药品标签、器械事件、药品批准
  • OpenTargets平台API -目标/疾病搜索、关联、证据
  • MyVariant.info API -遗传变异注释、人群频率、临床

意义

  • BioThings套件API -MyGene.info(基因注释)、MyDisease.info(疾病信息),

MyChem.info(药物/化学数据)

  • NCI临床试验API -癌症临床试验搜索和元数据(需要API密钥)

![](./agent-usage.png)

安装

选项1:从PyPI安装

从PyPI安装软件包:

pip install medical-mcps

然后运行服务器:

medical-mcps

服务器将在以下时间可用http://localhost:8000.

选项2:使用Docker运行

拉取并运行预构建的Docker镜像:

# Pull latest image
docker pull pascalwhoop/medical-mcps:latest

# Run server
docker run -p 8000:8000 pascalwhoop/medical-mcps:latest

服务器将在以下时间可用http://localhost:8000.

对于特定版本:

docker pull pascalwhoop/medical-mcps:v0.1.0

选项3:Docker Compose(推荐用于开发)

运行MCP后端的最简单方法:

# Start all services with auto-rebuild
make docker-watch

# Or start in background
make docker-up

# View logs
make docker-logs

# Stop services
make docker-down

服务将在以下地点提供:

  • MCP后端: http://localhost:8000

选项4:本地Python安装

# Install dependencies using uv
cd /path/to/medical-mcps
uv sync

运行服务器

服务器使用 可流式传输的HTTP 运输(按 MCP规范) 用于通过HTTP进行远程托管。

运行后 uv sync,您可以运行服务器:

使用Makefile(推荐用于开发)

# Start server with uvicorn and livereload (auto-reload on code changes)
make server

直接使用uv

# Run HTTP server
uv run mcp-server

# Or with custom host/port
MCP_HOST=0.0.0.0 MCP_PORT=8000 uv run mcp-server

直接使用uvicorn

# Run with uvicorn and livereload
uv run uvicorn medical_mcps.http_server:app --reload --host 0.0.0.0 --port 8000

HTTP服务器将在 http://localhost:8000 (或您配置的主机/端口)。

服务器使用MCP SDK的Streamable HTTP传输,该传输作为ASGI应用程序安装在FastAPI上。MCP 端点位于 /mcp 并且支持POST(用于发送JSON-RPC消息)和GET(用于 可选的SSE流)。

连接到生产

MCP服务器已部署并可在以下位置使用:

生产基地URL: https://mcp.cloud.curiloo.com

统一端点(推荐)

使用统一的端点在一个地方访问所有API:

{
    "url": "https://mcp.cloud.curiloo.com/tools/unified/mcp"
}

这使您可以通过一个连接从所有API访问所有100多个工具。

单个API终点

如果您更喜欢单独使用单个API,则每个API都有自己的端点:

生产:

{
    "url": "https://mcp.cloud.curiloo.com/tools/reactome/mcp"
}

地方发展:

{
    "url": "http://localhost:8000/tools/reactome/mcp"
}

可用端点

所有端点在生产和本地URL上都可用:

  • /tools/unified/mcp -统一服务器(所有API结合在一起)
  • /tools/reactome/mcp -API反应器
  • /tools/kegg/mcp -API KEGG公司
  • /tools/uniprot/mcp -UniProt API
  • /tools/omim/mcp -OMIM API(需要API密钥)
  • /tools/gwas/mcp -GWAS目录API
  • /tools/pathwaycommons/mcp -Pathway Commons API
  • /tools/nodenorm/mcp -节点规范化API
  • /tools/chembl/mcp -中国API
  • /tools/opentargets/mcp -OpenTargets平台API
  • /tools/ctg/mcp -ClinicalTrials.gov API
  • /tools/pubmed/mcp -PubMed/PubTator3 API
  • /tools/openfda/mcp -OpenFDA API
  • /tools/myvariant/mcp -MyVariant.info API
  • /tools/biothings/mcp -BioThings套件API(MyGene、MyDisease、MyChem)
  • /tools/nci/mcp -NCI临床试验API(需要API密钥)
  • /tools/everycure-kg/mcp -每个治愈矩阵知识图API

示例:在Cursor中配置多个API

选项1:使用统一端点(推荐)

通过一个连接访问所有API:

{
    "mcpServers": {
        "medical-apis": {
            "url": "https://mcp.cloud.curiloo.com/tools/unified/mcp"
        }
    }
}

选项2:使用单个端点

如果您喜欢为每个API单独连接:

{
    "mcpServers": {
        "reactome": {
            "url": "https://mcp.cloud.curiloo.com/tools/reactome/mcp"
        },
        "chembl": {
            "url": "https://mcp.cloud.curiloo.com/tools/chembl/mcp"
        },
        "pubmed": {
            "url": "https://mcp.cloud.curiloo.com/tools/pubmed/mcp"
        }
    }
}

测试连接

您可以通过发出一个简单的HTTP请求来测试生产服务器是否可访问:

# Test unified endpoint (recommended)
curl https://mcp.cloud.curiloo.com/tools/unified/mcp \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "initialize", "params": {}, "id": 1}'

# Or test individual API endpoint
curl https://mcp.cloud.curiloo.com/tools/reactome/mcp \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "initialize", "params": {}, "id": 1}'

成功响应表示服务器正在运行且可访问。

HTTP缓存

所有API客户端都使用 hishel (符合RFC 9111的HTTP缓存)透明地缓存响应 磁盘。这减少了冗余的API调用并提高了性能。

缓存配置

  • 缓存位置: ~/.cache/medical-mcps/api_cache/
  • 缓存持续时间:30天(默认TTL)
  • 缓存刷新:访问缓存条目时重置TTL(refresh_ttl_on_access=True)
  • Per-API缓存文件:每个API都有自己的SQLite缓存文件(例如。, reactome.db, kegg.db)

缓存行为

  • 自动:默认情况下,所有基于HTTP的API都启用缓存
  • 透明:响应将根据URL、参数和标头自动缓存
  • 符合RFC 9111:尊重HTTP缓存语义和缓存控制标头
  • 缓存可见性:提供缓存响应时,日志显示“(来自缓存)”

禁用缓存

要禁用特定客户端的缓存,请传递 enable_cache=False 初始化时:

client = ReactomeClient(enable_cache=False)

清除缓存

要清除缓存,请删除缓存目录:

rm -rf ~/.cache/medical-mcps/api_cache/

或者删除单个API缓存文件:

rm ~/.cache/medical-mcps/api_cache/reactome.db

支持的API

所有基于HTTP的API都支持缓存:

  • Reactome(httpx)
  • KEGG(httpx)
  • UniProt(httpx)
  • OMIM(httpx)
  • GWAS目录(httpx)
  • 路径共享(httpx)
  • ClinicalTrials.gov(请求)
  • PubMed(httpx)
  • OpenFDA(httpx)
  • MyVariant.info(httpx)
  • BioThings套件(httpx)
  • NCI临床试验(httpx)

备注:ChEMBL使用库客户端(不是HTTP),因此缓存是在库级别处理的。

哨兵监控

服务器包括可选 哨兵 用于错误跟踪和 性能监控。Sentry自动检测MCP工具执行、提示请求和 资源访问。

设置

  1. 从获取您的哨兵DSN sentry.io
  2. 设置 SENTRY_DSN 环境变量:
export SENTRY_DSN="https://your-dsn@sentry.io/project-id"

配置

哨兵可以通过环境变量进行配置:

  • SENTRY_DSN -您的哨兵DSN(启用哨兵所需)
  • SENTRY_TRACES_SAMPLE_RATE -性能跟踪的采样率(默认值: 1.0 = 100%)
  • SENTRY_SEND_DEFAULT_PII -在Sentry中包含工具输入/输出(默认值: true)
  • SENTRY_ENABLE_LOGS -启用向Sentry发送日志(默认值: true)
  • SENTRY_PROFILE_SESSION_SAMPLE_RATE -分析会话的采样率(默认值: 1.0 =

100%)

  • SENTRY_PROFILE_LIFECYCLE -探查器生命周期模式(默认值: trace -自动运行时

交易活跃)

  • ENVIRONMENT -环境名称(默认值: local)

性能监控:

  • 追踪:默认情况下捕获100%的交易(traces_sample_rate=1.0)
  • 分析:默认情况下配置100%的会话(profile_session_sample_rate=1.0)
  • 日志:默认启用(enable_logs=True)

什么被跟踪

哨兵自动收集:

MCP集成:

  • 工具执行:工具名称、参数、结果和执行错误
  • 快速请求:提示名称、参数和内容
  • 资源访问:资源URI和访问模式
  • 请求上下文:请求ID、会话ID和传输类型
  • 执行跨度:所有处理程序调用的定时信息

Starlette集成:

  • HTTP请求:方法、URL、标头、表单数据、JSON有效载荷
  • 错误:所有导致内部服务器错误的异常(5xx状态代码)
  • 演出:请求时间和交易数据
  • 请求数据:附于所有事件(不包括PII,除非 send_default_pii=True)

HTTPX集成:

  • 发送HTTP请求:API客户端(Reactome、KEGG、UniProt、,

等等)

  • 请求跨度:为每个传出的HTTP请求创建跨度
  • 跟踪传播:确保跟踪正确传播到下游服务

异步集成:

  • 异步操作:跟踪异步上下文和操作
  • 异步错误:捕获异步函数和任务中的错误

隐私

默认情况下,Sentry会这样做 包括工具输入/输出或提示内容(被视为PII)。至 包含此数据,设置 SENTRY_SEND_DEFAULT_PII=true.

请参阅 哨兵MCP集成文档 了解更多详情。

API密钥处理

重要提示: MCP服务器是 无状态代理.它不存储API密钥。

需要客户端提供API密钥的API

对于需要身份验证的API(目前 在线人类孟德尔遗传),MCP客户端必须提供API密钥 作为每次工具调用的参数:

{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
        "name": "get_entry",
        "arguments": {
            "mim_number": "104300",
            "api_key": "your-omim-api-key-here"
        }
    }
}

需要API密钥的API:

  • 在线人类孟德尔遗传 -所有工具都需要 api_key 参数(从https://omim.org/api)
  • NCI临床试验 -可选 api_key 参数(从

https://clinicaltrialsapi.cancer.gov/)

  • OpenFDA -可选 api_key 更高速率限制的参数(从获取

https://open.fda.gov/apis/)

不需要API密钥的API:

  • Reactome、KEGG、UniProt、GWAS目录、通路共用、节点规范化、ChEMBL、,

ClinicalTrials.gov、PubMed、MyVariant.info、BioThings Suite(MyGene、MyDisease、MyChem)

未来API的模式

如果新的API需要身份验证,请遵循以下模式:

  1. 添加 api_key: str 作为 必需参数 所有工具
  2. 在进行API调用之前验证API密钥是否存在
  3. 如果密钥丢失,则返回明确的错误消息:

"Error: API key is required. Get your API key from "

  1. 使用提供的密钥为每个请求创建客户端实例: client = APIClient(api_key=api_key)
  2. 不要 将API密钥存储在服务器设置或环境变量中

例子:

@api_mcp.tool()
async def some_tool(param: str, api_key: str) -> str:
    """Tool description.

    Args:
        param: Required parameter
        api_key: API key (REQUIRED - get from https://api-provider.com)
    """
    if not api_key:
        return "Error: API key is required. Get your API key from https://api-provider.com"

    try:
        client = APIClient(api_key=api_key)
        return await client.some_method(param)
    except Exception as e:
        return f"Error calling API: {str(e)}"

可用工具

所有工具都以API名称为前缀(例如。, reactome_*)明确API是 使用。

Reactome工具

  • reactome_get_pathway -获取详细的路径信息
  • reactome_query_pathways -按关键字或基因/蛋白质名称查询通路
  • reactome_get_pathway_participants -让所有参与者参与一个路径
  • reactome_get_disease_pathways -获取与疾病相关的途径

KEGG工具

  • kegg_get_pathway_info -通过路径ID获取路径信息
  • kegg_list_pathways -列出途径(可选按生物体过滤)
  • kegg_find_pathways -查找与查询关键字匹配的路径
  • kegg_get_gene -通过基因ID获取基因信息
  • kegg_find_genes -查找与查询关键字匹配的基因
  • kegg_get_disease -按疾病ID获取疾病信息
  • kegg_find_diseases -查找与查询关键字匹配的疾病
  • kegg_link_pathway_genes -获得与通路相关的基因

UniProt工具

  • uniprot_get_protein -通过登录获取蛋白质信息
  • uniprot_search_proteins -在UniProtKB中搜索蛋白质
  • uniprot_get_protein_sequence -获取FASTA格式的蛋白质序列
  • uniprot_get_disease_associations -获取蛋白质的疾病关联
  • uniprot_map_ids -在数据库之间映射标识符

OMIM工具

  • omim_get_entry -通过MIM编号获取入场信息
  • omim_search_entries -在OMIM中搜索条目
  • omim_get_gene -通过基因符号获取基因信息
  • omim_search_genes -在OMIM中搜索基因
  • omim_get_phenotype -通过MIM编号获取表型信息
  • omim_search_phenotypes -OMIM中的搜索表型

注: 所有OMIM工具都需要 api_key 参数。从获取API密钥https://omim.org/api

GWAS目录工具

  • gwas_get_association -通过关联ID获取关联信息
  • gwas_search_associations -搜索与各种过滤器的关联
  • gwas_get_variant -通过rsId获取SNP信息
  • gwas_search_variants -按rsId搜索SNP/变体
  • gwas_get_study -通过研究ID获取研究信息
  • gwas_search_studies -使用各种过滤器搜索研究
  • gwas_get_trait -通过性状ID获取性状信息
  • gwas_search_traits -搜索特征

Pathway共享工具

  • pathwaycommons_search -寻找途径、蛋白质或其他生物实体
  • pathwaycommons_get_pathway_by_uri -通过URI获取路径信息
  • pathwaycommons_top_pathways -获取顶级途径(可选择按基因或

数据源)

  • pathwaycommons_graph -获取路径图/网络(邻域、路径等)
  • pathwaycommons_traverse -使用图形路径表达式遍历路径数据

节点规范化工具

  • nodenorm_get_semantic_types -获取所有支持的BioLink语义类型
  • nodenorm_get_curie_prefixes -获取所有支持的CURIE前缀
  • nodenorm_get_normalized_nodes -规范化一个或多个CURIE以获得等效标识符
  • nodenorm_get_allowed_conflations -获取可用的合并类型

ChEMBL工具

  • chembl_get_molecule -通过ChEMBL ID获取分子(药物/化合物)信息
  • chembl_search_molecules -按名称或同义词搜索分子
  • chembl_get_target -通过ChEMBL ID获取目标(蛋白质)信息
  • chembl_search_targets -按名称或同义词搜索目标
  • chembl_get_activities -获取生物活性数据(按目标或分子过滤)
  • chembl_get_mechanism -获取分子的作用机制
  • chembl_find_drugs_by_target -查找针对特定蛋白质的所有药物
  • chembl_find_drugs_by_indication -查找针对某一疾病/适应症的所有药物
  • chembl_get_drug_indications -获取特定药物的所有适应症

OpenTargets工具

  • opentargets_search -在OpenTargets平台上搜索目标、疾病和药物
  • opentargets_get_associations -检索目标疾病关联
  • opentargets_get_evidence -获取将目标与疾病联系起来的证据

此服务器遵循相同的FastMCP+ med_mcp_server 在整个代码库中使用的模式,而不是 复制外部实现,其客户端调用官方的OpenTargets平台v4 GraphQL API 使用适当的GraphQL查询进行搜索、关联和证据检索。

ClinicalTrials.gov工具

  • ctg_search_studies -使用各种过滤器搜索临床试验
  • ctg_get_study -通过NCT ID获取单项研究
  • ctg_search_by_condition -按病情/疾病搜索试验
  • ctg_search_by_intervention -按干预/治疗搜索试验
  • ctg_get_study_metadata -获取数据模型元数据(可用字段)

PubMed/PubTator3工具

  • pubmed_search_articles -从PubMed/PubTator3中搜索生物医学文章,

化学品、关键字或变体

  • pubmed_get_article -通过PMID或DOI获取详细的文章信息(支持全文

检索)

  • pubmed_search_preprints -通过欧洲PMC搜索bioRxiv/medRxiv的预印本文章

OpenFDA工具

  • openfda_search_adverse_events -按药物、反应或

严重性

  • openfda_get_adverse_event -通过安全报告ID获取详细的不良事件报告
  • openfda_search_drug_labels -按药物名称、适应症或

章节

  • openfda_get_drug_label -通过设置ID获取完整的药品标签(可选部分过滤)
  • openfda_search_device_events -按设备搜索FDA设备不良事件报告(MAUDE),

制造商或问题

注: OpenFDA工具支持可选 api_key 用于更高速率限制的参数。获取API 密钥来自https://open.fda.gov/apis/

MyVariant.info工具

  • myvariant_search_variants -按基因、HGVS符号、rsID、临床搜索遗传变异

显著性、频率或CADD评分

  • myvariant_get_variant -通过变体ID(HGVS、rsID或

我的变量ID)

BioThings套件工具

  • mygene_get_gene -通过ID或符号从MyGene.info获取基因信息
  • mydisease_get_disease -通过ID或姓名从MyDisease.info获取疾病信息
  • mychem_get_drug -通过ID或姓名从MyChem.info获取药物/化学信息

NCI临床试验工具

  • nci_search_trials -检索NCI临床试验癌症研究的条件,干预,

阶段或状态

  • nci_get_trial -通过试验ID获取NCI试验详细信息

注: NCI工具支持可选 api_key 参数。从获取API密钥 https://clinicaltrialsapi.cancer.gov/

发展

服务器的结构如下:

medical_mcps/
├── __init__.py
├── http_server.py         # HTTP MCP server (Starlette)
├── med_mcp_server.py      # Unified MCP server and tool decorator
├── settings.py            # Server configuration
├── sentry_config.py       # Sentry error tracking configuration
├── api_clients/           # API client implementations
│   ├── __init__.py
│   ├── base_client.py
│   ├── reactome_client.py
│   ├── kegg_client.py
│   ├── uniprot_client.py
│   ├── omim_client.py
│   ├── gwas_client.py
│   ├── pathwaycommons_client.py
│   ├── nodenorm_client.py
│   ├── chembl_client.py
│   ├── ctg_client.py
│   ├── pubmed_client.py
│   ├── openfda_client.py
│   ├── opentargets_client.py
│   ├── myvariant_client.py
│   ├── mygene_client.py
│   ├── mydisease_client.py
│   ├── mychem_client.py
│   └── nci_client.py
└── servers/               # Individual MCP servers per API
    ├── __init__.py
    ├── reactome_server.py
    ├── kegg_server.py
    ├── uniprot_server.py
    ├── omim_server.py
    ├── gwas_server.py
    ├── pathwaycommons_server.py
    ├── nodenorm_server.py
    ├── chembl_server.py
    ├── opentargets_server.py
    ├── ctg_server.py
    ├── pubmed_server.py
    ├── openfda_server.py
    ├── myvariant_server.py
    ├── biothings_server.py
    └── nci_server.py

添加新的API:

  1. 在中创建新客户端 api_clients/ (例如。, newapi_client.py)
  2. 在中创建新服务器 servers/ (例如。, newapi_server.py)
  3. 使用 @medmcps_tool 装饰师来自 med_mcp_server 将工具同时注册到

独立服务器和统一服务器

  1. 在中注册服务器 http_server.py (导入、装载和寿命)
  2. 遵循命名约定: {api_name}_{tool_name} 用于工具

例子:

from ..med_mcp_server import unified_mcp, tool as medmcps_tool

@medmcps_tool(name="newapi_tool_name", servers=[newapi_mcp, unified_mcp])
async def tool_function(...):
    ...

测试

通过连接MCP客户端并调用工具来测试服务器。每个工具响应包括 输出中的API源。

目录标签

目录标签

PythonCursor数据分析生物医学研究本地部署数据库集成API服务科研工具基因分析

支持客户端

Cursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP