返回市场
统一蛋白MCP服务器

统一蛋白MCP服务器

作者:TakumiY2359 星标更新:2025-03-11

项目介绍

UniProt MCP 服务器

一个提供访问 UniProt 蛋白质信息的模型上下文协议(MCP)服务器。此服务器允许AI助手直接从UniProt获取蛋白质的功能和序列信息。

<a href="https://glama.ai/mcp/servers/ttjbai3lpx"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=1421115384,3724928970&fm=3081&app=3081&f=PNG?w=760&h=400" alt="UniProt Server MCP 服务器" /> </a>

特性

  • 通过 UniProt 编号获取蛋白质信息
  • 批量检索多个蛋白质
  • 使用缓存提高性能(24小时过期时间)
  • 错误处理和日志记录
  • 包括的信息有:
    • 蛋白质名称
    • 功能描述
    • 完整序列
    • 序列长度
    • 生物来源

快速开始

  1. 确保已安装 Python 3.10 或更高版本
  2. 克隆此仓库:
    git clone https://github.com/TakumiY235/uniprot-mcp-server.git
    cd uniprot-mcp-server
    
  3. 安装依赖项:
    # 使用 uv(推荐)
    uv pip install -r requirements.txt
    
    # 或者使用 pip
    pip install -r requirements.txt
    

配置

在您的 Claude Desktop 配置文件中添加以下内容:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "uniprot": {
      "command": "uv",
      "args": ["--directory", "path/to/uniprot-mcp-server", "run", "uniprot-mcp-server"]
    }
  }
}

使用示例

在 Claude Desktop 中配置好服务器后,您可以提问如下问题:

你能获取 UniProt 编号 P98160 的蛋白质信息吗?

对于批量查询:

你能获取并比较 P04637 和 P02747 这两个蛋白质的信息吗?

API 参考

工具

  1. get_protein_info

    • 获取单个蛋白质的信息
    • 必需参数:accession(UniProt 编号)
    • 示例响应:
      {
        "accession": "P12345",
        "protein_name": "示例蛋白质",
        "function": ["蛋白质功能描述"],
        "sequence": "MLTVX...",
        "length": 123,
        "organism": "Homo sapiens"
      }
      
  2. get_batch_protein_info

    • 获取多个蛋白质的信息
    • 必需参数:accessions(UniProt 编号数组)
    • 返回蛋白质信息对象数组

开发

设置开发环境

  1. 克隆仓库
  2. 创建虚拟环境:
    python -m venv .venv
    source .venv/bin/activate  # 在 Windows 上:.venv\Scripts\activate
    
  3. 安装开发依赖项:
    pip install -e ".[dev]"
    

运行测试

pytest

代码风格

本项目使用:

  • Black 进行代码格式化
  • isort 进行导入排序
  • flake8 进行代码检查
  • mypy 进行类型检查
  • bandit 进行安全检查
  • safety 进行依赖漏洞检查

运行所有检查:

black .
isort .
flake8 .
mypy .
bandit -r src/
safety check

技术细节

  • 使用 MCP Python SDK 构建
  • 使用 httpx 进行异步 HTTP 请求
  • 使用基于 OrderedDict 的缓存实现 24 小时过期时间
  • 处理速率限制和重试
  • 提供详细的错误消息

错误处理

服务器处理各种错误场景:

  • 无效的编号(404 响应)
  • API 连接问题(网络错误)
  • 速率限制(429 响应)
  • 不良响应(JSON 解析错误)
  • 缓存管理(过期时间和大小限制)

贡献

我们欢迎贡献!请随意提交 Pull Request。以下是您如何贡献的方法:

  1. 分叉仓库
  2. 创建您的功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m '添加一些惊人的功能')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开 Pull Request

请确保更新相应的测试,并遵循现有的编码风格。

许可证

本项目采用 MIT 许可证 - 详情见 LICENSE 文件。

致谢

  • UniProt 提供蛋白质数据 API
  • Anthropic 提供模型上下文协议规范
  • 帮助改进此项目的贡献者