UniProt MCP Server

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

UniProt MCP 服务器

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

特征

  • 通过 UniProt 登录号获取蛋白质信息
  • 批量检索多种蛋白质
  • 缓存以提高性能(24 小时 TTL)
  • 错误处理和日志记录
  • 信息包括:
    • 蛋白质名称
    • 功能描述
    • 完整序列
    • 序列长度
    • 生物

快速入门

  1. 确保安装了 Python 3.10 或更高版本
  2. 克隆此存储库:
    git clone https://github.com/TakumiY235/uniprot-mcp-server.git cd uniprot-mcp-server
  3. 安装依赖项:
    # Using uv (recommended) uv pip install -r requirements.txt # Or using 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 中配置服务器后,您可以提出以下问题:

Can you get the protein information for UniProt accession number P98160?

对于批量查询:

Can you get and compare the protein information for both P04637 and P02747?

API 参考

工具

  1. get_protein_info
    • 获取单个蛋白质的信息
    • 必需参数: accession (UniProt 登录号)
    • 响应示例:
      { "accession": "P12345", "protein_name": "Example protein", "function": ["Description of protein 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 # On Windows: .venv\Scripts\activate
  3. 安装开发依赖项:
    pip install -e ".[dev]"

运行测试

pytest

代码风格

该项目使用:

  • 黑色表示代码格式
  • isort 用于导入排序
  • flake8 用于 linting
  • mypy 用于类型检查
  • 强盗进行安全检查
  • 依赖项漏洞检查的安全性

运行所有检查:

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

技术细节

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

错误处理

服务器处理各种错误情况:

  • 无效的登录号(404 个响应)
  • API 连接问题(网络错误)
  • 速率限制(429 条回复)
  • 格式错误的响应(JSON 解析错误)
  • 缓存管理(TTL 和大小限制)

贡献

欢迎大家贡献代码!欢迎提交 Pull 请求。贡献方式如下:

  1. 分叉存储库
  2. 创建你的功能分支( git checkout -b feature/amazing-feature
  3. 提交您的更改( git commit -m 'Add some amazing feature'
  4. 推送到分支( git push origin feature/amazing-feature
  5. 打开拉取请求

请确保适当更新测试并遵守现有的编码风格。

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。

致谢

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

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

使 AI 助手能够直接从 UniProt 访问蛋白质信息,从而可以通过登录号检索蛋白质名称、功能、序列和生物体数据。

  1. Features
    1. Quick Start
      1. Configuration
        1. Usage Examples
          1. API Reference
            1. Tools
          2. Development
            1. Setting up development environment
            2. Running tests
            3. Code style
          3. Technical Details
            1. Error Handling
          4. Contributing
            1. License
              1. Acknowledgments
                ID: ttjbai3lpx