🚀 PDB MCP Server
PDB MCP Server 是一个模型上下文协议(MCP)服务器,它提供对蛋白质数据库(PDB)的访问。PDB 是一个全球范围内存储蛋白质、核酸和复杂复合物三维结构信息的数据库。
✨ 主要特性
工具
- search_structures:通过关键词、蛋白质名称或 PDB ID 在 PDB 数据库中搜索蛋白质结构。
- get_structure_info:获取特定 PDB 结构的详细信息。
- download_structure:以多种格式(PDB、mmCIF、mmTF、XML)下载结构坐标。
- search_by_uniprot:查找与 UniProt 登录号相关的 PDB 结构。
- get_structure_quality:获取结构质量指标和验证数据。
资源
- pdb://structure/{pdb_id}:特定 PDB ID 的完整结构信息。
- pdb://coordinates/{pdb_id}:PDB 格式的结构坐标。
- pdb://mmcif/{pdb_id}:mmCIF 格式的结构数据。
- pdb://validation/{pdb_id}:结构验证数据和质量指标。
- pdb://ligands/{pdb_id}:配体和结合位点信息。
- pdb://search/{query}:与查询匹配的结构搜索结果。
📦 安装指南
npm install
npm run build
💻 使用示例
基础用法
将以下内容添加到 claude_desktop_config.json 文件中:
{
"mcpServers": {
"pdb-server": {
"command": "node",
"args": ["/path/to/pdb-server/build/index.js"]
}
}
}
高级用法
示例查询
- 搜索胰岛素结构:
使用 search_structures 工具查找胰岛素蛋白质结构
- 获取特定结构的信息:
使用 get_structure_info 获取 PDB 结构 1ABC 的详细信息
- 下载结构坐标:
使用 download_structure 下载结构 1ABC 的 PDB 文件
- 查找 UniProt 蛋白质的结构:
使用 search_by_uniprot 查找 UniProt 登录号 P01308 的 PDB 结构
- 检查结构质量:
使用 get_structure_quality 获取 PDB 结构 1ABC 的验证指标
- 直接访问资源:
显示资源 pdb://structure/1abc
📚 详细文档
API 集成
此服务器与以下 API 集成:
- RCSB PDB REST API (https://data.rcsb.org/):用于获取结构元数据和信息。
- RCSB PDB Search API (https://search.rcsb.org/):用于高级搜索功能。
- RCSB PDB File Download (https://files.rcsb.org/):用于下载结构文件。
结构数据格式
- PDB:原始的蛋白质数据库格式。
- mmCIF:大分子晶体学信息文件(较新的标准)。
- mmTF:大分子传输格式(二进制、压缩)。
- XML:可扩展标记语言格式。
质量指标
服务器提供各种结构质量指标:
- 分辨率(用于 X 射线晶体学)
- R-work 和 R-free 值
- Ramachandran 图统计数据
- 冲突分数
- 旋转异构体异常值
- 模型验证分数
互补服务器
此 PDB 服务器与以下服务器配合良好:
- UniProt MCP Server:用于获取蛋白质序列和功能信息。
- AlphaFold MCP Server:用于获取预测的蛋白质结构。
这些服务器共同提供对蛋白质结构和功能数据的全面访问。
错误处理
服务器包含强大的错误处理机制,可处理以下情况:
- 无效的 PDB ID
- 网络连接问题
- API 速率限制
- 缺失的结构文件
- 格式错误的请求
🔧 技术细节
开发
npm install
npm run build
npm run dev
📄 许可证
归属
本项目由 Augmented Nature 开发。
🌐 网站:augmentednature.ai
引用
如果您在研究或出版物中使用本项目,请按以下方式引用:
@misc{pdbmcp2025,
author = {Moudather Chelbi},
title = {Protein Data Bank (PDB) MCP Server},
year = {2025},
howpublished = {https://github.com/Augmented-Nature/PDB-MCP-Server},
note = {Accessed: 2025-06-29}
}