Skip to main content
Glama

蛋白质数据访问服务器 (Protein MCP Server)

🧬 基于 FastMCP 的蛋白质数据访问服务器,为生物信息学研究提供强大的蛋白质结构数据查询、获取和下载功能。

🎯 项目特色

工具精简优化 - 从8个工具优化为3个核心工具,减少62.5%复杂度 ✅ 功能完整保留 - 所有原有功能完整保留,无功能损失 ✅ 用户体验大幅提升 - 工具职责更清晰,学习成本更低 ✅ 代码质量优化 - 代码量减少39.2%,维护性显著提升 ✅ 多协议支持 - 支持stdio、http、sse三种传输协议

Related MCP server: mcp-rcsb-pdb

🚀 快速开始

方式一:uvx直接运行(推荐)

# 启动默认STDIO模式
uvx protein-mcp

# 启动HTTP服务器模式
uvx protein-mcp --transport http --port 8080

# 启动SSE实时模式
uvx protein-mcp --transport sse --port 8080

# 查看所有参数选项
uvx protein-mcp --help

方式二:从PyPI安装

# 安装最新版本
pip install protein-mcp

# 安装指定版本
pip install protein-mcp==0.1.5

# 升级到最新版本
pip install --upgrade protein-mcp

# 验证安装
protein-mcp --version

方式三:开发环境设置

# 克隆代码仓库
git clone https://github.com/gqy20/protein-mcp.git
cd protein-mcp

# 安装所有开发依赖
uv sync --dev

# 运行开发版本
uv run protein-mcp --transport http --port 8080

🛠️ 核心功能工具

1. 蛋白质结构搜索工具

智能搜索 - 支持多种搜索方式的蛋白质结构发现

# 获取热门蛋白质结构示例
find_protein_structures()

# 按关键词搜索(如:癌症靶点、激酶)
find_protein_structures(keywords="激酶", category="酶抑制剂")

# 按PDB ID精确查找
find_protein_structures(pdb_id="1A3N")

# 限制返回结果数量
find_protein_structures(max_results=10)

# 组合搜索条件
find_protein_structures(keywords="血红蛋白", category="氧气运输", max_results=5)

2. 蛋白质数据获取工具

综合数据 - 一次性获取完整的蛋白质信息包

# 获取所有类型数据
get_protein_data("1A3N", ["all"])

# 获取特定数据类型
get_protein_data("2HHB", ["basic", "sequence"])

# 获取指定链的数据
get_protein_data("1A3N", ["all"], chain_id="A")

# 自定义数据类型组合
get_protein_data("6VSB", ["basic", "structure", "sequence"])

3. 蛋白质结构文件下载工具

文件管理 - 下载和管理各种格式的蛋白质结构文件

# 获取PDB格式文件内容(默认)
download_structure("1A3N", "pdb")

# 下载mmCIF现代格式文件
download_structure("2HHB", "mmcif", save_local=True)

# 下载高性能MMTF二进制格式
download_structure("6VSB", "mmtf")

# 获取PDB文件但仅解析信息
download_structure("5G53", "pdb", save_local=False)

🌐 MCP客户端集成使用指南

Claude Desktop 集成

手动配置方式

步骤1:使用Claude Code的slash命令

# 添加MCP服务器到Claude Code
/mcp-server add protein-mcp

步骤2:创建Claude Code配置文件

创建或编辑文件:~/.claude/mcp.json

Claude Desktop 配置

创建或编辑 ~/.claude/mcp.json

{
  "mcpServers": {
    "protein-mcp": {
      "command": "uvx",
      "args": ["protein-mcp"]
    }
  }
}

CodeX 配置

安装并添加MCP服务器:

# 安装到CodeX
mcp install protein-mcp

# 启动时自动加载
codex --mcp protein-mcp

创建 ~/.codex/mcp.json

{
  "servers": {
    "protein-mcp": {
      "command": "uvx protein-mcp"
    }
  }
}

高级配置选项

如需自定义参数,可扩展配置:

Claude Desktop 高级配置:

{
  "mcpServers": {
    "protein-mcp": {
      "command": "uvx protein-mcp",
      "args": ["protein-mcp", "--transport", "stdio", "--port", "37787"],
      "env": {
        "PROTEIN_MCP_LOG_LEVEL": "debug",
        "PROTEIN_MCP_CACHE_DIR": "~/.cache/protein-mcp"
      }
    }
  }
}

CodeX 高级配置:

{
  "servers": {
    "protein-mcp": {
      "command": "uvx protein-mcp",
      "args": ["protein-mcp", "--transport", "stdio"],
      "workingDirectory": "~/protein-workspace",
      "env": {
        "CODEX_LOG_LEVEL": "info",
        "PROTEIN_MCP_TIMEOUT": "120",
        "PROTEIN_MCP_MODEL": "gpt-4"
      }
    }
  }
}

使用方法

启动Claude Code后,您可以直接在对话中:

  1. 语音/文字输入

    用户:帮我搜索与癌症相关的激酶蛋白质结构
    Claude:正在调用find_protein_structures工具,搜索癌症激酶相关蛋白质...
  2. 自动工具调用:Claude会根据您的需求自动选择合适的工具

  3. 实时数据获取:支持蛋白质结构搜索、序列分析、文件下载等操作

高级配置选项

{
  "mcpServers": {
    "protein-mcp": {
      "command": "uvx",
      "args": [
        "protein-mcp",
        "--transport", "stdio",
        "--port", "37787"
      ],
      "env": {
        "PROTEIN_MCP_LOG_LEVEL": "debug",
        "RCSB_API_TIMEOUT": "60",
        "PROTEIN_MCP_CACHE_DIR": "~/.cache/protein-mcp",
        "PROTEIN_MCP_MAX_RETRIES": "3",
        "RCSB_API_BASE_URL": "https://data.rcsb.org"
      }
    }
  }
}

CodeX 集成

安装和配置

步骤1:安装MCP服务器到CodeX

# 通过MCP CLI安装
mcp install protein-mcp

# 验证安装
mcp list

# 查看服务器详情
mcp describe protein-mcp

步骤2:创建CodeX配置文件

创建或编辑文件:~/.codex/mcp.json

{
  "servers": {
    "protein-mcp": {
      "command": "uvx",
      "args": [
        "protein-mcp",
        "--transport", "stdio"
      ],
      "workingDirectory": "~",
      "env": {
        "CODEX_LOG_LEVEL": "info",
        "PROTEIN_MCP_TIMEOUT": "120",
        "PROTEIN_MCP_MODEL": "gpt-4",
        "PROTEIN_MCP_WORKSPACE": "~/.workspace/protein-research"
      }
    }
  }
}

使用方式

启动CodeX后,在代码编辑器中:

  1. 智能代码提示:CodeX会根据上下文自动提示相关的蛋白质分析

  2. 工具快速调用:通过注释或特殊命令快速调用MCP工具

  3. 工作区集成:自动创建蛋白质研究工作区

CodeX专用配置

{
  "servers": {
    "protein-mcp": {
      "command": "uvx",
      "args": [
        "protein-mcp",
        "--transport", "stdio",
        "--log-level", "info"
      ],
      "workingDirectory": "~/protein-research",
      "env": {
        "CODEX_MODEL": "claude-3.5-sonnet",
        "CODEX_MAX_TOKENS": "10000",
        "CODEX_TEMPERATURE": "0.1",
        "PROTEIN_MCP_BATCH_SIZE": "20",
        "PROTEIN_MCP_AUTO_SAVE": "true"
      }
    }
  }
}

通用编程集成

方式1:Python客户端直接调用

import subprocess
import json
import asyncio

class ProteinMCPClient:
    def __init__(self, transport="stdio"):
        self.transport = transport

    async def start_server(self):
        # 启动MCP服务器进程
        self.process = await asyncio.create_subprocess_exec(
            "uvx",
            ["protein-mcp", "--transport", self.transport]
        )

    async def call_tool(self, tool_name, arguments):
        # 调用指定工具
        request = {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
                "name": tool_name,
                "arguments": arguments
            }
        }

        # 发送请求并获取响应
        response = await self.send_request(request)
        return response.get("result", {})

# 使用示例
client = ProteinMCPClient()
await client.start_server()

# 调用蛋白质搜索
result = await client.call_tool(
    "find_protein_structures_tool",
    {"keywords": "激酶", "max_results": 5}
)

方式2:HTTP REST API集成

import requests
import json

class ProteinMCPHTTPClient:
    def __init__(self, base_url="http://localhost:8080"):
        self.base_url = base_url

    def call_tool(self, tool_name, arguments):
        """通过HTTP API调用MCP工具"""
        url = f"{self.base_url}/mcp"

        # 调用蛋白质数据获取工具
        response = requests.post(url, json={
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {
                "name": "get_protein_data_tool",
                "arguments": {
                    "pdb_id": "1A3N",
                    "data_types": ["all"]
                }
            }
        })

        return response.json().get("result", {})

# 使用示例
client = ProteinMCPHTTPClient()
protein_data = client.call_tool("get_protein_data_tool", {...})

方式3:直接导入Python模块

# 直接导入服务器创建函数
from protein_mcp import create_server

# 创建自定义服务器实例
server = create_server(
    name="my-protein-server",
    version="0.1.5"
)

# 启动服务器
server.run()

# 异步HTTP模式
import asyncio
async def start_http_server():
    await server.run_http_async(host="localhost", port=8080)

asyncio.run(start_http_server())

环境变量配置详解

基础配置

{
  "mcpServers": {
    "protein-mcp": {
      "command": "uvx",
      "args": ["protein-mcp"],
      "env": {
        "PROTEIN_MCP_LOG_LEVEL": "debug",
        "RCSB_API_TIMEOUT": "60",
        "PROTEIN_MCP_CACHE_DIR": "~/.cache/protein-mcp",
        "PROTEIN_MCP_CACHE_DURATION": "3600",
        "PROTEIN_MCP_MAX_RETRIES": "3"
      }
    }
  }
}

高级配置

{
  "mcpServers": {
    "protein-mcp": {
      "command": "uvx",
      "args": [
        "protein-mcp",
        "--transport", "stdio",
        "--concurrent-limit", "5"
      ],
      "env": {
        "PROTEIN_MCP_LOG_FORMAT": "json",
        "PROTEIN_MCP_VERIFY_SSL": "true",
        "RCSB_API_CUSTOM_ENDPOINT": "https://custom.rcsb.org/api",
        "PROTEIN_MCP_PROXY_URL": "http://proxy.company.com:8080",
        "PROTEIN_MCP_USER_AGENT": "Protein-MCP-Client/1.0"
      }
    }
  }
}

开发调试配置

{
  "mcpServers": {
    "protein-mcp": {
      "command": "uvx",
      "args": [
        "python", "-m", "protein_mcp.server",
        "--transport", "stdio",
        "--debug"
      ],
      "env": {
        "PROTEIN_MCP_LOG_LEVEL": "trace",
        "PROTEIN_MCP_LOG_REQUESTS": "true",
        "PROTEIN_MCP_LOG_RESPONSES": "true",
        "PROTEIN_MCP_PERFORMANCE_STATS": "true"
      }
    }
  }
}

🏗️ 项目架构

protein-mcp/
├── src/protein_mcp/           # 核心代码包
│   ├── __init__.py          # 包初始化
│   ├── server.py             # FastMCP服务器主逻辑
│   ├── tools.py              # 3个核心工具实现
│   └── utils.py              # 通用工具函数
├── tests/                   # 完整测试套件
│   ├── conftest.py           # pytest配置和夹具
│   ├── quick_test.py         # 快速功能验证
│   ├── test_*.py            # 各功能模块测试
│   └── README.md             # 测试说明文档
├── .github/workflows/        # CI/CD自动化流程
│   ├── code-quality.yml     # 代码质量检查和格式化
│   └── publish.yml         # 自动构建和PyPI发布
├── pyproject.toml          # Python包配置
├── pytest.ini              # pytest测试配置
├── .pre-commit-config.yaml  # 预提交钩子配置
├── .gitignore              # Git忽略文件配置
└── README.md               # 项目主文档

🔧 技术架构

核心技术栈

  • FastMCP框架 - 现代化的MCP服务器实现

  • RCSB PDB API - 权威的蛋白质结构数据库

  • Python 3.10+ - 现代Python特性和类型注解

  • 异步编程 - 高并发性能的网络请求处理

  • 多传输协议 - stdio、http、sse全支持

数据处理流程

  1. 智能API路由 - 根据请求类型自动选择最佳数据源

  2. 混合数据获取 - API + PDB文件解析的双重保障

  3. 自动降级机制 - API失败时无缝切换到文件解析

  4. 缓存优化 - 智能缓存减少重复请求

安全和性能

  • SSL证书验证 - 所有HTTPS连接强制SSL验证

  • 请求超时控制 - 可配置的网络请求超时

  • 内存优化 - 流式处理大文件,降低内存占用

  • 错误恢复 - 完善的错误处理和重试机制

📊 性能指标

基准测试结果

  • 搜索响应时间:< 2秒(基本搜索)

  • 数据获取时间:2-6秒(完整蛋白质信息)

  • 文件下载速度:1-10MB/秒(取决于网络和文件大小)

  • 并发处理能力:支持最多10个并发请求

  • 内存使用效率:处理大PDB文件时内存占用< 200MB

可靠性指标

  • API成功率:> 95%(在正常网络条件下)

  • 数据完整性:100%文件校验和错误检测

  • 服务可用性:7×24小时服务稳定性

  • 自动恢复能力:网络中断后自动重连和重试

🧪 测试体系

测试覆盖

# 运行所有测试
uv run pytest tests/ -v --cov=src/protein_mcp --cov-report=html

# 运行特定测试模块
uv run pytest tests/test_tools.py -v
uv run pytest tests/test_integration.py -v

# 性能基准测试
uv run pytest tests/test_performance.py -v

测试分类

  • 单元测试 - 每个工具函数的独立测试

  • 集成测试 - 多工具协作的端到端测试

  • 性能测试 - 响应时间和资源使用测试

  • 兼容性测试 - 不同Python版本和平台兼容性

🔧 开发指南

本地开发设置

# 1. 克隆仓库
git clone https://github.com/gqy20/protein-mcp.git
cd protein-mcp

# 2. 创建虚拟环境(推荐使用uv)
uv venv .venv
source .venv/bin/activate

# 3. 安装开发依赖
uv sync --dev

# 4. 安装预提交钩子
pip install pre-commit
pre-commit install

# 5. 运行开发服务器
uv run protein-mcp --transport http --port 8080

代码质量规范

# 代码格式化
uv run black src/ tests/

# 代码检查和修复
uv run ruff check src/ tests/ --fix

# 导入排序
uv run isort src/ tests/

# 类型检查
uv run mypy src/protein_mcp/

# 预提交检查
pre-commit run --all-files

贡献流程

  1. Fork仓库 - 在GitHub上fork项目

  2. 创建功能分支 - git checkout -b feature/your-feature

  3. 开发和测试 - 确保所有测试通过

  4. 提交代码 - git commit -m 'feat: add your feature'

  5. 推送分支 - git push origin feature/your-feature

  6. 创建Pull Request - 在GitHub上创建PR

提交信息规范

  • feat: 新功能

  • fix: 错误修复

  • docs: 文档更新

  • style: 代码格式化

  • refactor: 代码重构

  • test: 测试相关

  • chore: 构建工具、依赖更新等

📦 构建和发布

本地构建

# 构建分发包
uv build

# 构建源码包
uv build --sdist

# 验证构建结果
ls -la dist/

发布流程

# 1. 构建包
uv build

# 2. 检查包内容
twine check dist/*

# 3. 上传到PyPI(需要配置API token)
twine upload dist/*

# 4. 创建GitHub Release
gh release create v0.1.0 --title="Release v0.1.0" --notes="Release notes"

版本管理

# 更新版本号(修改pyproject.toml中的version字段)
# 然后提交和创建tag
git tag v0.1.1
git push origin v0.1.1

📚 API文档

工具列表

工具名称

功能描述

主要参数

find_protein_structures_tool

蛋白质结构搜索

keywords, category, pdb_id, max_results

get_protein_data_tool

蛋白质数据获取

pdb_id, data_types, chain_id

download_structure_tool

结构文件下载

pdb_id, file_format, save_local

参数说明

搜索参数

  • keywords: 关键词搜索(支持中英文)

  • category: 分类筛选(如:酶抑制剂、膜蛋白等)

  • pdb_id: 精确PDB ID查找

  • max_results: 最大返回结果数量(默认10)

数据类型

  • basic: 基本信息(标题、作者、分辨率等)

  • sequence: 氨基酸序列信息

  • structure: 二级结构和配体信息

  • all: 包含所有数据类型

文件格式

  • pdb: 标准PDB格式(推荐,人类可读)

  • mmcif: 大分子晶体信息文件(现代标准)

  • mmtf: 高性能二进制格式(最快下载)

🌟 支持和社区

获取帮助

许可证

MIT License - 详见 LICENSE 文件


🧬 Protein MCP Server - 为生物信息学研究提供专业、高效的蛋白质数据访问服务!

蛋白质,让研究更简单! 🎉

Available Tools

3 tools
download_structure_toolA

结构文件工具 - 下载和管理蛋白质结构文件

这个工具处理所有文件相关的操作,从下载到格式说明。

Args: pdb_id: PDB ID (例如: "5G53") file_format: 文件格式 - "pdb": 标准PDB格式 (推荐,人类可读) - "mmcif": 大分子晶体信息文件格式 (现代标准) - "cif": 晶体信息文件格式 - "mmtf": 大分子传输格式 (二进制,速度快) save_local: 是否保存到本地文件 (默认False返回内容) ctx: FastMCP Context,用于进度反馈和日志记录

Returns: 文件内容或下载信息 + 格式说明和使用指南

Examples: # 获取PDB文件内容 download_structure("1A3N")

# 下载mmCIF格式并保存到本地
download_structure("2HHB", "mmcif", True)

# 获取快速MMTF格式
download_structure("6VSB", "mmtf")
ParametersJSON Schema
NameRequiredDescriptionDefault
pdb_idYes
file_formatNopdb
save_localNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses behavioral traits such as returning file content or download information with format explanations, and mentions progress feedback via ctx. However, it lacks details on error handling, rate limits, authentication needs, or what happens when save_local is true (e.g., file location, overwriting behavior). The description adds some context but is incomplete for a tool with mutation potential (saving files).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately structured with sections (Args, Returns, Examples), but includes redundant elements like '结构文件工具 - 下载和管理蛋白质结构文件' which repeats the title concept. The examples are helpful but verbose, and some sentences could be more front-loaded (e.g., the purpose statement is clear but not maximally efficient). It earns its place with parameter details but has room for trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (3 parameters, 0% schema coverage, no annotations, but has output schema), the description is fairly complete. It covers parameter meanings, return behavior, and usage examples. With an output schema present, it doesn't need to detail return values extensively. However, for a tool that can save files locally, it could better address potential side effects or error cases to be fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It provides meaningful semantics for all parameters: pdb_id is explained with an example ('PDB ID (例如: "5G53")'), file_format includes detailed options with recommendations ('推荐,人类可读' for pdb, '现代标准' for mmcif, '二进制,速度快' for mmtf), and save_local clarifies behavior ('是否保存到本地文件 (默认False返回内容)'). This adds significant value beyond the bare schema, though it could specify default values more explicitly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as '处理所有文件相关的操作,从下载到格式说明' (handles all file-related operations from download to format explanation), which is specific about downloading and managing protein structure files. It distinguishes from siblings by focusing on file operations rather than searching (find_protein_structures_tool) or general data retrieval (get_protein_data_tool). However, it could be more precise about being primarily a download tool with format management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through examples (e.g., '获取PDB文件内容' for getting content, '下载mmCIF格式并保存到本地' for saving locally), but lacks explicit guidance on when to use this tool versus alternatives like find_protein_structures_tool or get_protein_data_tool. It provides context for different scenarios (e.g., save_local parameter) but doesn't state when not to use it or compare with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_protein_structures_toolA

蛋白质结构发现工具 - 搜索、示例、验证的统一入口

这是蛋白质研究的起点,帮助你发现和验证PDB结构。

Args: keywords: 搜索关键词 (如: "hemoglobin", "kinase", "DNA") category: 预设类别 ("癌症靶点", "病毒蛋白", "酶类", "抗体", "膜蛋白", "核糖体") pdb_id: 直接验证或查看特定PDB ID (如: "1A3N") max_results: 搜索结果最大数量 (默认10,最大100) ctx: FastMCP Context,用于进度反馈和日志记录

Returns: 包含PDB结构列表、验证结果、示例数据的综合响应

Examples: # 搜索血红蛋白相关结构 find_protein_structures(keywords="hemoglobin")

# 获取癌症靶点示例
find_protein_structures(category="癌症靶点")

# 验证PDB ID
find_protein_structures(pdb_id="1A3N")
ParametersJSON Schema
NameRequiredDescriptionDefault
keywordsNo
categoryNo
pdb_idNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's multi-functional nature (search, example, validation) and mentions default/max values for max_results, but doesn't cover important behavioral aspects like rate limits, authentication needs, error conditions, or what happens when multiple parameters are provided simultaneously.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (description, Args, Returns, Examples) and front-loads the main purpose. While comprehensive, some redundancy exists between the opening description and the examples section. Most sentences earn their place by adding value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, multi-functional) and the presence of an output schema, the description provides good coverage. It explains all parameters, shows usage examples, and describes the return value format. The main gap is lack of behavioral details that would be important for a discovery/validation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining all 4 parameters in the Args section with clear examples. It provides semantic meaning for keywords, category (with specific enum values), pdb_id, and max_results (including default and max values). The ctx parameter is mentioned but not fully explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as a 'unified entry point for protein structure discovery' that helps 'discover and validate PDB structures.' It specifies the verb ('search, example, validate') and resource ('PDB structures'), though it doesn't explicitly differentiate from sibling tools like download_structure_tool or get_protein_data_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool ('starting point for protein research') and includes examples showing different usage scenarios (searching by keywords, getting examples by category, validating PDB IDs). However, it doesn't explicitly state when NOT to use it or mention alternatives among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_protein_data_toolB

蛋白质综合数据工具 - 获取完整蛋白质信息包

这个工具是蛋白质数据获取的核心,一次性获取你需要的所有信息。

Args: pdb_id: PDB ID (例如: "5G53") data_types: 需要的数据类型列表 - "basic": 基本信息 (标题、方法、分辨率等) - "sequence": 氨基酸序列信息 - "structure": 二级结构分析 - "all": 获取所有数据 chain_id: 特定链ID (例如: "A",可选) ctx: FastMCP Context,用于进度反馈和日志记录

Returns: 完整的蛋白质数据包,包含请求的所有数据类型

Examples: # 获取所有数据 get_protein_data("5G53", ["all"])

# 只获取基本信息和序列
get_protein_data("1A3N", ["basic", "sequence"])

# 获取特定链的数据
get_protein_data("2HHB", ["all"], "A")
ParametersJSON Schema
NameRequiredDescriptionDefault
pdb_idYes
data_typesNo
chain_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions the tool returns a '完整蛋白质数据包' (complete protein data package) but doesn't disclose behavioral traits like rate limits, authentication requirements, error conditions, or whether it's a read-only operation. The description adds minimal context beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately structured with sections (Args, Returns, Examples) but includes some redundancy (e.g., repeating tool name in examples). The Chinese text is clear but could be more front-loaded; the core purpose is stated early but followed by less essential details. Some sentences like '这个工具是蛋白质数据获取的核心' add minimal value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no annotations, but has output schema), the description is reasonably complete. It explains parameters well, provides examples, and states the return value. The output schema existence means it doesn't need to detail return structure. However, it lacks behavioral context and sibling tool differentiation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining all 3 parameters: pdb_id (with example), data_types (with detailed options and meanings), and chain_id (optional, with example). It provides clear semantic meaning beyond the bare schema, though it doesn't cover the ctx parameter mentioned in the description but not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '获取完整蛋白质信息包' (get complete protein information package) and '一次性获取你需要的所有信息' (get all needed information at once). It specifies the resource (protein data) and action (retrieve), though it doesn't explicitly differentiate from sibling tools like download_structure_tool or find_protein_structures_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the sibling tools (download_structure_tool, find_protein_structures_tool). It mentions this is the '核心' (core) tool for protein data, but doesn't specify scenarios where alternatives might be more appropriate or any prerequisites for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation4/5

The three tools have distinct primary purposes: downloading structure files, searching for structures, and retrieving comprehensive protein data. However, there is some overlap between find_protein_structures_tool and get_protein_data_tool, as both can retrieve basic information for a given PDB ID, which could cause minor confusion. The descriptions help clarify their different focuses—discovery vs. detailed data retrieval.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores: download_structure_tool, find_protein_structures_tool, and get_protein_data_tool. This uniformity makes the set predictable and easy to understand, with no deviations in naming conventions.

Tool Count3/5

With only three tools, the server feels somewhat thin for a protein data domain, as it lacks operations like updating, deleting, or analyzing structures beyond basic retrieval. While the tools cover core functions, the count is borderline low for comprehensive protein research workflows, potentially limiting agent capabilities.

Completeness3/5

The tools provide good coverage for downloading, searching, and retrieving protein data, but there are notable gaps. Missing operations include updating or annotating structures, performing advanced analyses (e.g., structural alignment or visualization), and managing user data or sessions. This incompleteness may require agents to work around limitations for more complex tasks.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables interaction with the RCSB Protein Data Bank to search, analyze, and visualize protein structures. It provides specialized tools for downloading coordinate files and performing structural modifications like residue mutations and metal atom replacements.
  • A
    license
    Not graded
    quality
    A
    maintenance
    A Model Context Protocol server providing programmatic access to 3D protein structural data from RCSB PDB, PDBe, and UniProt, enabling search, retrieval, comparison, and analysis of protein structures.
    269
    5
    Apache 2.0
  • A
    license
    B
    quality
    A
    maintenance
    Provides seamless access to the Protein Data Bank in Europe (PDBe) API and search capabilities, enabling AI clients to query protein structures, perform advanced searches, and retrieve structural biology data.
    33
    37
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gqy20/protein-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server