ENA REST MCP-模型上下文协议服务器
通过模型上下文协议(MCP)公开精心挑选的欧洲核苷酸档案(ENA)REST服务子集,使AI代理能够以安全、结构化和可重复的方式与ENA进行编程交互。
概述
欧洲核苷酸档案馆(ENA)提供了一套丰富的REST API,允许用户查询基因组元数据、序列记录和提交信息。该项目通过MCP将ENA服务与现代AI代理连接起来。
主要特点
- 灵活的数据查询接口:支持自然语言、结构化查询和API端点过滤
- 多格式响应支持:CSV、Excel、JSON输出,可下载报告
- 可下载摘要和报告:包含分析和原始数据集链接的简明摘要
- 内部认证:安全处理受保护ENA服务的身份验证
- 性能优化:快速响应时间和高精度
项目目标
- 单片MCP服务器:单个MCP服务器从多个ENA服务公开REST API
- 数据访问:用户可以请求简单格式的数据或带有清晰摘要的纯文本数据
- 全栈交付:具有适当测试用例和可选UI的后端MCP服务
综合服务
核心服务
- Webin REST:用于元数据存储和访问的ENA核心服务(需要身份验证)
- Webin报告:用于报告ENA数据库查询的服务(需要身份验证)
- EBI搜索服务:BM25文本搜索服务(https://www.ebi.ac.uk/ebisearch/ws/rest/sra-sample)
- ENA浏览器:公众获取基因组元数据
项目结构
ENA-MCP/
├── src/
│ ├── mcp_server/ # MCP server implementation
│ ├── ena_api/ # ENA API client and wrappers
│ ├── utils/ # Utility functions
│ └── __init__.py
├── tests/ # Test suite
├── docs/ # Documentation
├── config/ # Configuration files
├── requirements.txt # Python dependencies
├── setup.py # Package setup
├── .gitignore # Git ignore rules
├── .env.example # Environment variables template
└── README.md # This file安装
先决条件
- Python 3.8+
- pip或conda
设置
- 克隆存储库:
git clone https://github.com/Sumithraju/ena-mcp.git
cd ENA-MCP- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt- 配置环境变量:
cp .env.example .env
# Edit .env with your ENA credentials (if needed)用法
启动MCP服务器
python src/mcp_server/main.py查询示例
自然语言查询:
"Show widely used Mpox samples"
"Give me latest Covid related submission details"结构化查询:
{
"query_type": "sample_search",
"keywords": ["Mpox"],
"fields": ["acc", "description", "name"],
"format": "json",
"limit": 100
}API终点
MCP服务器公开了以下主要工具:
search_samples:搜索ENA示例记录search_studies:查询研究元数据search_runs:查找运行/序列记录get_submission_details:检索提交信息download_data:生成可下载的报告
配置
配置通过以下方式管理:
.env凭证文件config/服务器设置目录- 运行时选项的命令行参数
测试
运行测试套件:
pytest tests/ -v生成覆盖率报告:
pytest tests/ --cov=src --cov-report=html文档
- API参考:请参阅
docs/API.md - 架构:请参见
docs/ARCHITECTURE.md - ENA程序化访问:https://ena-docs.readthedocs.io/en/latest/retrieval/programmatic-access.html
发展
贡献
- 创建要素分支:
git checkout -b feature/your-feature - 进行更改并编写测试
- 以明确的信息承诺:
git commit -m "Add feature: description" - 推你的叉子:
git push origin feature/your-feature - 创建拉取请求
代码风格
本项目遵循PEP 8风格指南。使用 black 和 flake8 用于格式化和换行:
black src/
flake8 src/绩效目标
- 响应时间:典型查询\<2秒
- 测试覆盖率:≥95%
- 支持具有可下载报告的大型数据集
项目时间表(GSoC 2026)
- 第一阶段:研究和设置
- 第2阶段:核心MCP服务器实现
- 第三期:ENA API集成
- 阶段4:测试和优化
- 阶段5:文档和UI(可选)
参考文献
- ENA浏览器: https://www.ebi.ac.uk/ena/browser/home
- Webin报告Swagger: https://www.ebi.ac.uk/ena/submit/report/swagger-ui/index.html
- ENA程序化访问: https://ena-docs.readthedocs.io/en/latest/retrieval/programmatic-access.html
- FastMCP: https://gofastmcp.com/getting-started/welcome
- MCP Python SDK: https://github.com/modelcontextprotocol/python-sdk
- GSoC 2026时间表: https://developers.google.com/open-source/gsoc/timeline
许可证
该项目是EMBL-EBI的谷歌代码之夏2026计划的一部分。
作者
苏米特拉·拉朱 -GSoC 2026 EMBL-EBI贡献者
支持
对于问题、疑问或贡献,请在GitHub上打开问题或联系开发团队。
______________________________________________________________________
最后更新2026年3月16日
