genome-mcp


Namegenome-mcp JSON
Version 0.1.5 PyPI version JSON
download
home_pageNone
SummaryGenome Model Context Protocol (MCP) server for genomic data access
upload_time2025-09-15 01:22:39
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
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 - 基因组数据模型上下文协议服务器

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![Publish](https://github.com/gqy20/genome-mcp/workflows/Publish/badge.svg)](https://github.com/gqy20/genome-mcp/actions/workflows/publish.yml)
[![Code Quality](https://github.com/gqy20/genome-mcp/workflows/Quality/badge.svg)](https://github.com/gqy20/genome-mcp/actions/workflows/quality.yml)
[![PyPI version](https://badge.fury.io/py/genome-mcp.svg)](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[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![Publish](https://github.com/gqy20/genome-mcp/workflows/Publish/badge.svg)](https://github.com/gqy20/genome-mcp/actions/workflows/publish.yml)\n[![Code Quality](https://github.com/gqy20/genome-mcp/workflows/Quality/badge.svg)](https://github.com/gqy20/genome-mcp/actions/workflows/quality.yml)\n[![PyPI version](https://badge.fury.io/py/genome-mcp.svg)](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"
}
        
Elapsed time: 2.19399s