Name | genome-mcp JSON |
Version |
0.1.5
JSON |
| download |
home_page | None |
Summary | Genome Model Context Protocol (MCP) server for genomic data access |
upload_time | 2025-09-15 01:22:39 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.10 |
license | MIT |
keywords |
genomics
mcp
bioinformatics
api
ncbi
gene
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Genome MCP - 基因组数据模型上下文协议服务器
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://github.com/gqy20/genome-mcp/actions/workflows/publish.yml)
[](https://github.com/gqy20/genome-mcp/actions/workflows/quality.yml)
[](https://badge.fury.io/py/genome-mcp)
一个基于模型上下文协议(MCP)的基因组数据服务器,通过标准化API接口提供对基因组数据库的统一访问。采用异步架构构建,专为AI工具集成而设计,使用FastMCP框架实现。
## 功能特性
- **MCP服务器架构**:基于模型上下文协议构建,实现AI工具无缝集成
- **NCBI数据库集成**:通过EUtils API完全访问NCBI Gene数据库
- **异步高性能**:采用高性能的async/await架构
- **限流与缓存**:内置请求优化和响应缓存机制
- **类型安全**:完整的类型提示和Pydantic模型
- **FastMCP框架**:基于FastMCP实现标准化的MCP协议
- **现代Python**:使用uv进行依赖管理和现代打包
## 安装
### 使用uv(推荐)
```bash
# 使用uv安装
uv add genome-mcp
# 或直接运行无需安装
uv run genome-mcp --help
```
### 使用pip
```bash
pip install genome-mcp
```
## 快速开始
### 作为MCP服务器运行
```bash
# 作为stdio MCP服务器运行(适用于AI工具如Claude Desktop)
genome-mcp --transport stdio
# 作为SSE服务器运行(适用于Web应用)
genome-mcp --transport sse --host localhost --port 8080
# 作为Streamable HTTP服务器运行(适用于API集成)
genome-mcp --transport streamable-http --host localhost --port 8080
```
### Python API
```python
import asyncio
from genome_mcp.main import get_gene_info, search_genes
async def main():
# 获取基因信息
gene_info = await get_gene_info("7157") # TP53
print(f"基因: {gene_info['info']['name']}")
print(f"描述: {gene_info['info']['description']}")
# 搜索基因
search_results = await search_genes("cancer", species="human")
print(f"找到 {len(search_results['results'])} 个基因")
if __name__ == "__main__":
asyncio.run(main())
```
## 配置MCP集成
### 传输模式选择
Genome MCP支持三种传输模式,每种模式适用于不同的使用场景:
1. **STDIO模式**:标准输入输出模式,适用于AI工具如Claude Desktop
2. **SSE模式**:Server-Sent Events模式,适用于Web应用,访问地址:`http://localhost:8080/sse`
3. **Streamable HTTP模式**:流式HTTP模式,适用于API集成,访问地址:`http://localhost:8080/mcp`
### 配置方式
根据您的使用场景选择相应的配置方式:
#### 方式一:STDIO模式(推荐用于AI工具)
适用于Claude Desktop、Cherry Studio等AI工具。
**Claude Desktop配置:**
```json
{
"mcpServers": {
"genome-mcp": {
"command": "uvx",
"args": ["genome-mcp"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
}
}
}
```
**Cherry Studio配置:**
```json
{
"mcpServers": {
"genome-mcp": {
"command": "uvx",
"args": ["genome-mcp", "stdio"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
}
}
}
```
**手动运行:**
```bash
genome-mcp --transport stdio
```
#### 方式二:SSE模式(推荐用于Web应用)
适用于Web应用和浏览器端集成。
**Claude Desktop配置:**
```json
{
"mcpServers": {
"genome-mcp-sse": {
"command": "uvx",
"args": ["genome-mcp", "--transport", "sse", "--host", "localhost", "--port", "8080"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
}
}
}
```
**Cherry Studio配置:**
```json
{
"mcpServers": {
"genome-mcp-sse": {
"command": "uvx",
"args": ["genome-mcp", "--transport", "sse", "--host", "localhost", "--port", "8080"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
}
}
}
```
**手动运行:**
```bash
genome-mcp --transport sse --host localhost --port 8080
```
**Web访问:**
```
http://localhost:8080/sse
```
#### 方式三:Streamable HTTP模式(推荐用于API集成)
适用于API集成和微服务架构。
**Claude Desktop配置:**
```json
{
"mcpServers": {
"genome-mcp-http": {
"command": "uvx",
"args": ["genome-mcp", "--transport", "streamable-http", "--host", "localhost", "--port", "8080"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
}
}
}
```
**Cherry Studio配置:**
```json
{
"mcpServers": {
"genome-mcp-http": {
"command": "uvx",
"args": ["genome-mcp", "--transport", "streamable-http", "--host", "localhost", "--port", "8080"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
}
}
}
```
**手动运行:**
```bash
genome-mcp --transport streamable-http --host localhost --port 8080
```
**API访问:**
```
http://localhost:8080/mcp
```
### 完整配置示例
如果您需要同时使用多种传输模式,可以使用以下完整配置:
```json
{
"mcpServers": {
"genome-mcp": {
"command": "uvx",
"args": ["genome-mcp"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
},
"genome-mcp-sse": {
"command": "uvx",
"args": ["genome-mcp", "--transport", "sse", "--host", "localhost", "--port", "8080"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
},
"genome-mcp-http": {
"command": "uvx",
"args": ["genome-mcp", "--transport", "streamable-http", "--host", "localhost", "--port", "8080"],
"env": {
"NCBI_API_KEY": "${NCBI_API_KEY}",
"NCBI_EMAIL": "${NCBI_EMAIL}"
}
}
}
}
```
### 环境变量
```bash
# NCBI API密钥(可选但推荐,以获得更高的请求限制)
export NCBI_API_KEY="your_ncbi_api_key"
# NCBI API邮箱(某些操作必需)
export NCBI_EMAIL="your_email@example.com"
```
### 项目配置
项目包含一个综合配置文件(`project_config.json`),定义了:
- 服务器设置和功能
- 限流和缓存配置
- 日志和监控设置
- 开发和部署选项
### 配置文件
在 `~/.genome_mcp/config.json` 创建配置文件:
```json
{
"servers": {
"ncbi_gene": {
"base_url": "https://eutils.ncbi.nlm.nih.gov/entrez/eutils",
"rate_limit": {
"requests_per_second": 3,
"burst_limit": 10
},
"cache": {
"enabled": true,
"ttl": 3600
}
}
},
"logging": {
"level": "INFO",
"format": "json"
}
}
```
## 开发
### 设置开发环境
```bash
# 克隆仓库
git clone https://github.com/gqy20/genome-mcp.git
cd genome-mcp
# 使用uv安装
uv sync --dev
# 安装pre-commit钩子
uv run pre-commit install
```
### 运行测试
```bash
# 运行所有测试
uv run pytest
# 运行覆盖率测试
uv run pytest --cov=src --cov-report=html
# 运行特定测试文件
uv run pytest tests/test_ncbi_gene_server.py
```
### 代码质量
```bash
# 格式化代码
uv run black src/ tests/
# 排序导入
uv run isort src/ tests/
# 类型检查
uv run mypy src/
# 代码检查
uv run ruff check src/ tests/
```
## 项目结构
```
genome-mcp/
main.py # FastMCP服务器入口点
src/ # 源代码
servers/ # MCP服务器实现
base.py # 基础MCP服务器类
ncbi/ # NCBI服务器实现
gene.py # NCBI Gene服务器
configuration.py # 配置管理
http_utils/ # HTTP工具
data/ # 数据处理
core/ # 核心工具
exceptions.py # 异常定义
tests/ # 测试代码
docs/ # 文档
examples/ # 示例代码
.github/ # GitHub Actions工作流
project_config.json # 项目配置
```
## 架构
### FastMCP服务器架构
- **FastMCP框架**:基于FastMCP框架实现MCP协议
- **NCBIGeneServer**:NCBI Gene数据库访问实现
- **MCP工具**:将基因组数据函数暴露为MCP工具
- **异步设计**:完全的async/await支持以获得高性能
- **限流**:使用令牌桶算法的内置请求限流
- **缓存**:可选的响应缓存以提高性能
- **错误处理**:全面的错误处理和日志记录
### 核心组件
- **main.py**:带有工具装饰器的FastMCP服务器入口点
- **NCBIGeneServer**:NCBI Gene数据库访问实现
- **MCP传输**:支持stdio、SSE和Streamable HTTP传输
- **请求执行**:支持单个和批量请求
- **配置管理**:基于JSON的配置系统
## 贡献
我们欢迎贡献!详情请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
本项目采用MIT许可证 - 详情请参阅 [LICENSE](LICENSE) 文件。
## 引用
如果您在研究中使用Genome MCP,请引用:
```bibtex
@software{genome_mcp,
title={Genome MCP: Model Context Protocol Server for Genomic Data},
author={gqy20},
year={2025},
url={https://github.com/gqy20/genome-mcp}
}
```
## 支持
- **文档**:[https://github.com/gqy20/genome-mcp#readme](https://github.com/gqy20/genome-mcp#readme)
- **问题**:[https://github.com/gqy20/genome-mcp/issues](https://github.com/gqy20/genome-mcp/issues)
- **讨论**:[https://github.com/gqy20/genome-mcp/discussions](https://github.com/gqy20/genome-mcp/discussions)
## 致谢
- [NCBI](https://www.ncbi.nlm.nih.gov/) 提供全面的基因组数据库
- [Model Context Protocol](https://modelcontextprotocol.io/) 实现AI工具集成
- [FastMCP](https://github.com/gofastmcp/fastmcp) 提供MCP框架实现
- [uv](https://github.com/astral-sh/uv) 提供现代Python包管理
Raw data
{
"_id": null,
"home_page": null,
"name": "genome-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "gqy20 <qingyu_ge@foxmail.com>",
"keywords": "genomics, mcp, bioinformatics, api, ncbi, gene",
"author": null,
"author_email": "gqy20 <qingyu_ge@foxmail.com>",
"download_url": "https://files.pythonhosted.org/packages/47/53/8e11d38133a3797ffe75de1bd635ebcde8daefa3b8df39f737148ee7fdbb/genome_mcp-0.1.5.tar.gz",
"platform": null,
"description": "# Genome MCP - \u57fa\u56e0\u7ec4\u6570\u636e\u6a21\u578b\u4e0a\u4e0b\u6587\u534f\u8bae\u670d\u52a1\u5668\n\n[](https://opensource.org/licenses/MIT)\n[](https://www.python.org/downloads/)\n[](https://github.com/gqy20/genome-mcp/actions/workflows/publish.yml)\n[](https://github.com/gqy20/genome-mcp/actions/workflows/quality.yml)\n[](https://badge.fury.io/py/genome-mcp)\n\n\u4e00\u4e2a\u57fa\u4e8e\u6a21\u578b\u4e0a\u4e0b\u6587\u534f\u8bae\uff08MCP\uff09\u7684\u57fa\u56e0\u7ec4\u6570\u636e\u670d\u52a1\u5668\uff0c\u901a\u8fc7\u6807\u51c6\u5316API\u63a5\u53e3\u63d0\u4f9b\u5bf9\u57fa\u56e0\u7ec4\u6570\u636e\u5e93\u7684\u7edf\u4e00\u8bbf\u95ee\u3002\u91c7\u7528\u5f02\u6b65\u67b6\u6784\u6784\u5efa\uff0c\u4e13\u4e3aAI\u5de5\u5177\u96c6\u6210\u800c\u8bbe\u8ba1\uff0c\u4f7f\u7528FastMCP\u6846\u67b6\u5b9e\u73b0\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n- **MCP\u670d\u52a1\u5668\u67b6\u6784**\uff1a\u57fa\u4e8e\u6a21\u578b\u4e0a\u4e0b\u6587\u534f\u8bae\u6784\u5efa\uff0c\u5b9e\u73b0AI\u5de5\u5177\u65e0\u7f1d\u96c6\u6210\n- **NCBI\u6570\u636e\u5e93\u96c6\u6210**\uff1a\u901a\u8fc7EUtils API\u5b8c\u5168\u8bbf\u95eeNCBI Gene\u6570\u636e\u5e93\n- **\u5f02\u6b65\u9ad8\u6027\u80fd**\uff1a\u91c7\u7528\u9ad8\u6027\u80fd\u7684async/await\u67b6\u6784\n- **\u9650\u6d41\u4e0e\u7f13\u5b58**\uff1a\u5185\u7f6e\u8bf7\u6c42\u4f18\u5316\u548c\u54cd\u5e94\u7f13\u5b58\u673a\u5236\n- **\u7c7b\u578b\u5b89\u5168**\uff1a\u5b8c\u6574\u7684\u7c7b\u578b\u63d0\u793a\u548cPydantic\u6a21\u578b\n- **FastMCP\u6846\u67b6**\uff1a\u57fa\u4e8eFastMCP\u5b9e\u73b0\u6807\u51c6\u5316\u7684MCP\u534f\u8bae\n- **\u73b0\u4ee3Python**\uff1a\u4f7f\u7528uv\u8fdb\u884c\u4f9d\u8d56\u7ba1\u7406\u548c\u73b0\u4ee3\u6253\u5305\n\n## \u5b89\u88c5\n\n### \u4f7f\u7528uv\uff08\u63a8\u8350\uff09\n\n```bash\n# \u4f7f\u7528uv\u5b89\u88c5\nuv add genome-mcp\n\n# \u6216\u76f4\u63a5\u8fd0\u884c\u65e0\u9700\u5b89\u88c5\nuv run genome-mcp --help\n```\n\n### \u4f7f\u7528pip\n\n```bash\npip install genome-mcp\n```\n\n## \u5feb\u901f\u5f00\u59cb\n\n### \u4f5c\u4e3aMCP\u670d\u52a1\u5668\u8fd0\u884c\n\n```bash\n# \u4f5c\u4e3astdio MCP\u670d\u52a1\u5668\u8fd0\u884c\uff08\u9002\u7528\u4e8eAI\u5de5\u5177\u5982Claude Desktop\uff09\ngenome-mcp --transport stdio\n\n# \u4f5c\u4e3aSSE\u670d\u52a1\u5668\u8fd0\u884c\uff08\u9002\u7528\u4e8eWeb\u5e94\u7528\uff09\ngenome-mcp --transport sse --host localhost --port 8080\n\n# \u4f5c\u4e3aStreamable HTTP\u670d\u52a1\u5668\u8fd0\u884c\uff08\u9002\u7528\u4e8eAPI\u96c6\u6210\uff09\ngenome-mcp --transport streamable-http --host localhost --port 8080\n```\n\n### Python API\n\n```python\nimport asyncio\nfrom genome_mcp.main import get_gene_info, search_genes\n\nasync def main():\n # \u83b7\u53d6\u57fa\u56e0\u4fe1\u606f\n gene_info = await get_gene_info(\"7157\") # TP53\n print(f\"\u57fa\u56e0: {gene_info['info']['name']}\")\n print(f\"\u63cf\u8ff0: {gene_info['info']['description']}\")\n \n # \u641c\u7d22\u57fa\u56e0\n search_results = await search_genes(\"cancer\", species=\"human\")\n print(f\"\u627e\u5230 {len(search_results['results'])} \u4e2a\u57fa\u56e0\")\n\nif __name__ == \"__main__\":\n asyncio.run(main())\n```\n\n## \u914d\u7f6eMCP\u96c6\u6210\n\n### \u4f20\u8f93\u6a21\u5f0f\u9009\u62e9\n\nGenome MCP\u652f\u6301\u4e09\u79cd\u4f20\u8f93\u6a21\u5f0f\uff0c\u6bcf\u79cd\u6a21\u5f0f\u9002\u7528\u4e8e\u4e0d\u540c\u7684\u4f7f\u7528\u573a\u666f\uff1a\n\n1. **STDIO\u6a21\u5f0f**\uff1a\u6807\u51c6\u8f93\u5165\u8f93\u51fa\u6a21\u5f0f\uff0c\u9002\u7528\u4e8eAI\u5de5\u5177\u5982Claude Desktop\n2. **SSE\u6a21\u5f0f**\uff1aServer-Sent Events\u6a21\u5f0f\uff0c\u9002\u7528\u4e8eWeb\u5e94\u7528\uff0c\u8bbf\u95ee\u5730\u5740\uff1a`http://localhost:8080/sse`\n3. **Streamable HTTP\u6a21\u5f0f**\uff1a\u6d41\u5f0fHTTP\u6a21\u5f0f\uff0c\u9002\u7528\u4e8eAPI\u96c6\u6210\uff0c\u8bbf\u95ee\u5730\u5740\uff1a`http://localhost:8080/mcp`\n\n### \u914d\u7f6e\u65b9\u5f0f\n\n\u6839\u636e\u60a8\u7684\u4f7f\u7528\u573a\u666f\u9009\u62e9\u76f8\u5e94\u7684\u914d\u7f6e\u65b9\u5f0f\uff1a\n\n#### \u65b9\u5f0f\u4e00\uff1aSTDIO\u6a21\u5f0f\uff08\u63a8\u8350\u7528\u4e8eAI\u5de5\u5177\uff09\n\n\u9002\u7528\u4e8eClaude Desktop\u3001Cherry Studio\u7b49AI\u5de5\u5177\u3002\n\n**Claude Desktop\u914d\u7f6e\uff1a**\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n }\n }\n}\n```\n\n**Cherry Studio\u914d\u7f6e\uff1a**\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\", \"stdio\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n }\n }\n}\n```\n\n**\u624b\u52a8\u8fd0\u884c\uff1a**\n```bash\ngenome-mcp --transport stdio\n```\n\n#### \u65b9\u5f0f\u4e8c\uff1aSSE\u6a21\u5f0f\uff08\u63a8\u8350\u7528\u4e8eWeb\u5e94\u7528\uff09\n\n\u9002\u7528\u4e8eWeb\u5e94\u7528\u548c\u6d4f\u89c8\u5668\u7aef\u96c6\u6210\u3002\n\n**Claude Desktop\u914d\u7f6e\uff1a**\n```json\n{\n \"mcpServers\": {\n \"genome-mcp-sse\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\", \"--transport\", \"sse\", \"--host\", \"localhost\", \"--port\", \"8080\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n }\n }\n}\n```\n\n**Cherry Studio\u914d\u7f6e\uff1a**\n```json\n{\n \"mcpServers\": {\n \"genome-mcp-sse\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\", \"--transport\", \"sse\", \"--host\", \"localhost\", \"--port\", \"8080\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n }\n }\n}\n```\n\n**\u624b\u52a8\u8fd0\u884c\uff1a**\n```bash\ngenome-mcp --transport sse --host localhost --port 8080\n```\n\n**Web\u8bbf\u95ee\uff1a**\n```\nhttp://localhost:8080/sse\n```\n\n#### \u65b9\u5f0f\u4e09\uff1aStreamable HTTP\u6a21\u5f0f\uff08\u63a8\u8350\u7528\u4e8eAPI\u96c6\u6210\uff09\n\n\u9002\u7528\u4e8eAPI\u96c6\u6210\u548c\u5fae\u670d\u52a1\u67b6\u6784\u3002\n\n**Claude Desktop\u914d\u7f6e\uff1a**\n```json\n{\n \"mcpServers\": {\n \"genome-mcp-http\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\", \"--transport\", \"streamable-http\", \"--host\", \"localhost\", \"--port\", \"8080\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n }\n }\n}\n```\n\n**Cherry Studio\u914d\u7f6e\uff1a**\n```json\n{\n \"mcpServers\": {\n \"genome-mcp-http\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\", \"--transport\", \"streamable-http\", \"--host\", \"localhost\", \"--port\", \"8080\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n }\n }\n}\n```\n\n**\u624b\u52a8\u8fd0\u884c\uff1a**\n```bash\ngenome-mcp --transport streamable-http --host localhost --port 8080\n```\n\n**API\u8bbf\u95ee\uff1a**\n```\nhttp://localhost:8080/mcp\n```\n\n### \u5b8c\u6574\u914d\u7f6e\u793a\u4f8b\n\n\u5982\u679c\u60a8\u9700\u8981\u540c\u65f6\u4f7f\u7528\u591a\u79cd\u4f20\u8f93\u6a21\u5f0f\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u5b8c\u6574\u914d\u7f6e\uff1a\n\n```json\n{\n \"mcpServers\": {\n \"genome-mcp\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n },\n \"genome-mcp-sse\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\", \"--transport\", \"sse\", \"--host\", \"localhost\", \"--port\", \"8080\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n },\n \"genome-mcp-http\": {\n \"command\": \"uvx\",\n \"args\": [\"genome-mcp\", \"--transport\", \"streamable-http\", \"--host\", \"localhost\", \"--port\", \"8080\"],\n \"env\": {\n \"NCBI_API_KEY\": \"${NCBI_API_KEY}\",\n \"NCBI_EMAIL\": \"${NCBI_EMAIL}\"\n }\n }\n }\n}\n```\n\n### \u73af\u5883\u53d8\u91cf\n\n```bash\n# NCBI API\u5bc6\u94a5\uff08\u53ef\u9009\u4f46\u63a8\u8350\uff0c\u4ee5\u83b7\u5f97\u66f4\u9ad8\u7684\u8bf7\u6c42\u9650\u5236\uff09\nexport NCBI_API_KEY=\"your_ncbi_api_key\"\n\n# NCBI API\u90ae\u7bb1\uff08\u67d0\u4e9b\u64cd\u4f5c\u5fc5\u9700\uff09\nexport NCBI_EMAIL=\"your_email@example.com\"\n```\n\n### \u9879\u76ee\u914d\u7f6e\n\n\u9879\u76ee\u5305\u542b\u4e00\u4e2a\u7efc\u5408\u914d\u7f6e\u6587\u4ef6\uff08`project_config.json`\uff09\uff0c\u5b9a\u4e49\u4e86\uff1a\n\n- \u670d\u52a1\u5668\u8bbe\u7f6e\u548c\u529f\u80fd\n- \u9650\u6d41\u548c\u7f13\u5b58\u914d\u7f6e\n- \u65e5\u5fd7\u548c\u76d1\u63a7\u8bbe\u7f6e\n- \u5f00\u53d1\u548c\u90e8\u7f72\u9009\u9879\n\n### \u914d\u7f6e\u6587\u4ef6\n\n\u5728 `~/.genome_mcp/config.json` \u521b\u5efa\u914d\u7f6e\u6587\u4ef6\uff1a\n\n```json\n{\n \"servers\": {\n \"ncbi_gene\": {\n \"base_url\": \"https://eutils.ncbi.nlm.nih.gov/entrez/eutils\",\n \"rate_limit\": {\n \"requests_per_second\": 3,\n \"burst_limit\": 10\n },\n \"cache\": {\n \"enabled\": true,\n \"ttl\": 3600\n }\n }\n },\n \"logging\": {\n \"level\": \"INFO\",\n \"format\": \"json\"\n }\n}\n```\n\n## \u5f00\u53d1\n\n### \u8bbe\u7f6e\u5f00\u53d1\u73af\u5883\n\n```bash\n# \u514b\u9686\u4ed3\u5e93\ngit clone https://github.com/gqy20/genome-mcp.git\ncd genome-mcp\n\n# \u4f7f\u7528uv\u5b89\u88c5\nuv sync --dev\n\n# \u5b89\u88c5pre-commit\u94a9\u5b50\nuv run pre-commit install\n```\n\n### \u8fd0\u884c\u6d4b\u8bd5\n\n```bash\n# \u8fd0\u884c\u6240\u6709\u6d4b\u8bd5\nuv run pytest\n\n# \u8fd0\u884c\u8986\u76d6\u7387\u6d4b\u8bd5\nuv run pytest --cov=src --cov-report=html\n\n# \u8fd0\u884c\u7279\u5b9a\u6d4b\u8bd5\u6587\u4ef6\nuv run pytest tests/test_ncbi_gene_server.py\n```\n\n### \u4ee3\u7801\u8d28\u91cf\n\n```bash\n# \u683c\u5f0f\u5316\u4ee3\u7801\nuv run black src/ tests/\n\n# \u6392\u5e8f\u5bfc\u5165\nuv run isort src/ tests/\n\n# \u7c7b\u578b\u68c0\u67e5\nuv run mypy src/\n\n# \u4ee3\u7801\u68c0\u67e5\nuv run ruff check src/ tests/\n```\n\n## \u9879\u76ee\u7ed3\u6784\n\n```\ngenome-mcp/\n main.py # FastMCP\u670d\u52a1\u5668\u5165\u53e3\u70b9\n src/ # \u6e90\u4ee3\u7801\n servers/ # MCP\u670d\u52a1\u5668\u5b9e\u73b0\n base.py # \u57fa\u7840MCP\u670d\u52a1\u5668\u7c7b\n ncbi/ # NCBI\u670d\u52a1\u5668\u5b9e\u73b0\n gene.py # NCBI Gene\u670d\u52a1\u5668\n configuration.py # \u914d\u7f6e\u7ba1\u7406\n http_utils/ # HTTP\u5de5\u5177\n data/ # \u6570\u636e\u5904\u7406\n core/ # \u6838\u5fc3\u5de5\u5177\n exceptions.py # \u5f02\u5e38\u5b9a\u4e49\n tests/ # \u6d4b\u8bd5\u4ee3\u7801\n docs/ # \u6587\u6863\n examples/ # \u793a\u4f8b\u4ee3\u7801\n .github/ # GitHub Actions\u5de5\u4f5c\u6d41\n project_config.json # \u9879\u76ee\u914d\u7f6e\n```\n\n## \u67b6\u6784\n\n### FastMCP\u670d\u52a1\u5668\u67b6\u6784\n\n- **FastMCP\u6846\u67b6**\uff1a\u57fa\u4e8eFastMCP\u6846\u67b6\u5b9e\u73b0MCP\u534f\u8bae\n- **NCBIGeneServer**\uff1aNCBI Gene\u6570\u636e\u5e93\u8bbf\u95ee\u5b9e\u73b0\n- **MCP\u5de5\u5177**\uff1a\u5c06\u57fa\u56e0\u7ec4\u6570\u636e\u51fd\u6570\u66b4\u9732\u4e3aMCP\u5de5\u5177\n- **\u5f02\u6b65\u8bbe\u8ba1**\uff1a\u5b8c\u5168\u7684async/await\u652f\u6301\u4ee5\u83b7\u5f97\u9ad8\u6027\u80fd\n- **\u9650\u6d41**\uff1a\u4f7f\u7528\u4ee4\u724c\u6876\u7b97\u6cd5\u7684\u5185\u7f6e\u8bf7\u6c42\u9650\u6d41\n- **\u7f13\u5b58**\uff1a\u53ef\u9009\u7684\u54cd\u5e94\u7f13\u5b58\u4ee5\u63d0\u9ad8\u6027\u80fd\n- **\u9519\u8bef\u5904\u7406**\uff1a\u5168\u9762\u7684\u9519\u8bef\u5904\u7406\u548c\u65e5\u5fd7\u8bb0\u5f55\n\n### \u6838\u5fc3\u7ec4\u4ef6\n\n- **main.py**\uff1a\u5e26\u6709\u5de5\u5177\u88c5\u9970\u5668\u7684FastMCP\u670d\u52a1\u5668\u5165\u53e3\u70b9\n- **NCBIGeneServer**\uff1aNCBI Gene\u6570\u636e\u5e93\u8bbf\u95ee\u5b9e\u73b0\n- **MCP\u4f20\u8f93**\uff1a\u652f\u6301stdio\u3001SSE\u548cStreamable HTTP\u4f20\u8f93\n- **\u8bf7\u6c42\u6267\u884c**\uff1a\u652f\u6301\u5355\u4e2a\u548c\u6279\u91cf\u8bf7\u6c42\n- **\u914d\u7f6e\u7ba1\u7406**\uff1a\u57fa\u4e8eJSON\u7684\u914d\u7f6e\u7cfb\u7edf\n\n## \u8d21\u732e\n\n\u6211\u4eec\u6b22\u8fce\u8d21\u732e\uff01\u8be6\u60c5\u8bf7\u53c2\u9605 [CONTRIBUTING.md](CONTRIBUTING.md)\u3002\n\n## \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528MIT\u8bb8\u53ef\u8bc1 - \u8be6\u60c5\u8bf7\u53c2\u9605 [LICENSE](LICENSE) \u6587\u4ef6\u3002\n\n## \u5f15\u7528\n\n\u5982\u679c\u60a8\u5728\u7814\u7a76\u4e2d\u4f7f\u7528Genome MCP\uff0c\u8bf7\u5f15\u7528\uff1a\n\n```bibtex\n@software{genome_mcp,\n title={Genome MCP: Model Context Protocol Server for Genomic Data},\n author={gqy20},\n year={2025},\n url={https://github.com/gqy20/genome-mcp}\n}\n```\n\n## \u652f\u6301\n\n- **\u6587\u6863**\uff1a[https://github.com/gqy20/genome-mcp#readme](https://github.com/gqy20/genome-mcp#readme)\n- **\u95ee\u9898**\uff1a[https://github.com/gqy20/genome-mcp/issues](https://github.com/gqy20/genome-mcp/issues)\n- **\u8ba8\u8bba**\uff1a[https://github.com/gqy20/genome-mcp/discussions](https://github.com/gqy20/genome-mcp/discussions)\n\n## \u81f4\u8c22\n\n- [NCBI](https://www.ncbi.nlm.nih.gov/) \u63d0\u4f9b\u5168\u9762\u7684\u57fa\u56e0\u7ec4\u6570\u636e\u5e93\n- [Model Context Protocol](https://modelcontextprotocol.io/) \u5b9e\u73b0AI\u5de5\u5177\u96c6\u6210\n- [FastMCP](https://github.com/gofastmcp/fastmcp) \u63d0\u4f9bMCP\u6846\u67b6\u5b9e\u73b0\n- [uv](https://github.com/astral-sh/uv) \u63d0\u4f9b\u73b0\u4ee3Python\u5305\u7ba1\u7406\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Genome Model Context Protocol (MCP) server for genomic data access",
"version": "0.1.5",
"project_urls": {
"Bug Tracker": "https://github.com/gqy20/genome-mcp/issues",
"Documentation": "https://github.com/gqy20/genome-mcp#readme",
"Homepage": "https://github.com/gqy20/genome-mcp",
"Repository": "https://github.com/gqy20/genome-mcp.git"
},
"split_keywords": [
"genomics",
" mcp",
" bioinformatics",
" api",
" ncbi",
" gene"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ca30446da4d68c19e182aace26d3a3fd6e0e92ec0afc2e9317b0f813f94b3c77",
"md5": "5c6f8917b28b649d1da4dd3bbf725ce0",
"sha256": "b10e9520db180c7fef9d62c817a3fb640a9f5b2f4bacfc949957864f5efc2bda"
},
"downloads": -1,
"filename": "genome_mcp-0.1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5c6f8917b28b649d1da4dd3bbf725ce0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 54076,
"upload_time": "2025-09-15T01:22:38",
"upload_time_iso_8601": "2025-09-15T01:22:38.558640Z",
"url": "https://files.pythonhosted.org/packages/ca/30/446da4d68c19e182aace26d3a3fd6e0e92ec0afc2e9317b0f813f94b3c77/genome_mcp-0.1.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "47538e11d38133a3797ffe75de1bd635ebcde8daefa3b8df39f737148ee7fdbb",
"md5": "d70fa0ca7c8c5c93a6a551635b5ed7d6",
"sha256": "108c6772445fa9e60d0a31f99cac7663685462e25d7e89791fd480bc55b79698"
},
"downloads": -1,
"filename": "genome_mcp-0.1.5.tar.gz",
"has_sig": false,
"md5_digest": "d70fa0ca7c8c5c93a6a551635b5ed7d6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 76457,
"upload_time": "2025-09-15T01:22:39",
"upload_time_iso_8601": "2025-09-15T01:22:39.887876Z",
"url": "https://files.pythonhosted.org/packages/47/53/8e11d38133a3797ffe75de1bd635ebcde8daefa3b8df39f737148ee7fdbb/genome_mcp-0.1.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-15 01:22:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "gqy20",
"github_project": "genome-mcp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "genome-mcp"
}