Biomolecule Modeling MCP Server
MCP-сервер для моделирования биомолекул
MCP-сервер (Model Context Protocol), который позволяет ИИ-ассистентам (Claude и др.) очищать PDB-структуры и выполнять начальную стадию энергетической релаксации — этап подготовки перед запуском молекулярной динамики (MD) или конвейеров крупнозернистого моделирования (например, Martini).
Быстрый старт (Claude Code)
Самый простой способ использовать этот сервер — через uvx, управление зависимостями вручную не требуется:
claude mcp add "biomolecule-modeling" --scope user -- \
uvx --from git+https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp biomodelingЭто всё. uvx автоматически устанавливает пакет и все его Python-зависимости в изолированную среду. После выполнения этой команды перезапустите Claude Code, и сервер появится в списке активных MCP-серверов.
Примечание по OpenMM:
uvxустанавливает PyPI-версию OpenMM (только для CPU). Если вам нужно ускорение на GPU, сначала установите OpenMM через conda (conda install -c conda-forge openmm pdbfixer) и используйте метод ручной регистрации.
Related MCP server: PLUMED2 MCP Server
Что он делает
Сервер предоставляет набор инструментов, которые направляют LLM через структурированный рабочий процесс:
query_pdb_structure # inspect chains, sequences, gaps, structural breaks
└─ split_pdb # separate protein / nucleic acid / ligands
└─ fix_pdb_structure # clean structure (PDBFixer): residues, hydrogens, heavy atoms
└─ assemble_pdb_structures # recombine components after separate fixing
└─ relax_pdb_structure # energy minimise ± short restrained MD (OpenMM)В любой момент get_workflow_report возвращает Markdown-отчет обо всех решениях, принятых LLM, с обоснованием, который можно сохранить на диск.
Инструменты
Инструмент | Описание |
| Анализ на уровне цепей: тип, последовательность, диапазон остатков, разрывы в нумерации, разрывы остова |
| Разделение многокомпонентного PDB на файлы по типам (белки, нуклеиновые кислоты, лиганды) |
| Обертка PDBFixer: удаление гетерогенов, замена нестандартных остатков, добавление недостающих атомов/водородов |
| Объединение нескольких PDB-файлов в один с разрешением конфликтов |
| Энергетическая минимизация в OpenMM + опциональная короткая MD с ограничениями остова |
| Список доступных пресетов силовых полей и их параметров |
| Возврат и/или сохранение Markdown-отчета обо всех вызовах инструментов и рассуждениях LLM |
| Очистка журнала сессии для новой структуры |
| Изменение рабочей директории для разрешения относительных путей |
Пресеты силовых полей
Пресет | Растворитель | Примечания |
| GBn2 (неявный) | По умолчанию. Периодическая ячейка не нужна. Быстро. |
| TIP3P-FB (явный) | Требует предварительно сольватированную периодическую ячейку |
| OBC2 (неявный) | Старый AMBER, неявный растворитель |
| CHARMM TIP3P (явный) | Требует предварительно сольватированную периодическую ячейку |
Ручная установка
Используйте этот метод, если вам нужен OpenMM с поддержкой GPU или вы предпочитаете локальную сборку.
1. Установка OpenMM (рекомендуется conda для поддержки GPU)
conda install -c conda-forge openmm pdbfixer2. Клонирование и установка зависимостей
git clone https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp
cd biomolecule-modeling-mcp
uv sync3. Регистрация в Claude Code
claude mcp add "biomolecule-modeling" --scope user -- \
/path/to/uv run --directory /path/to/biomolecule-modeling-mcp python main.pyЗамените /path/to/uv на результат команды which uv и используйте абсолютный путь к клонированному репозиторию.
Важно: используйте
--directory(а не--project).--projectустанавливает виртуальное окружение, но оставляетcwdтам, где находится вызывающий процесс, что нарушает относительные импортыutils/.
Автономные скрипты (MCP-клиент не требуется)
uv run utils/pdb_query.py structure.pdb # inspect structure
uv run utils/pdb_fix.py input.pdb # fix structure
uv run utils/openmm_relax.py input.pdb # minimise structureПримеры сессий
Следующие примеры показывают реальные запросы на естественном языке, которые вы можете дать Claude, и последовательность вызовов инструментов, которые сервер выполнит в ответ.
Случай 1 — Скачивание, анализ, очистка и релаксация PDB из RCSB
Ваш запрос к Claude:
Скачай PDB 1UBQ, запроси информацию о его структуре, очисти белковую часть и выполни релаксацию структуры.
Что делает Claude:
Шаг 1 — Скачивание файла
Claude загружает 1UBQ.pdb из RCSB (https://files.rcsb.org/download/1UBQ.pdb) и сохраняет его локально.
Шаг 2 — Анализ структуры
query_pdb_structure(
pdb_file="1UBQ.pdb",
notes="Initial inspection before cleaning. Need to identify chain types, "
"any non-standard residues, and structural gaps."
)chains:
A — protein, 76 residues (MET1–GLY76), no numbering gaps, no structural breaks
heterogens: HOH (58 water molecules)
non_standard_residues: []
missing_residues: []Рассуждения Claude: Одна белковая цепь, нет разрывов, нет нестандартных остатков. Присутствует вода — удалю её. Лигандов нет; можно сразу переходить к fix_pdb_structure.
Шаг 3 — Очистка структуры
fix_pdb_structure(
input_pdb="1UBQ.pdb",
output_pdb="1UBQ_fixed.pdb",
remove_heterogens=True, # removes the 58 water molecules
add_hydrogens=True,
ph=7.0,
fix_missing_residues=False, # no gaps — nothing to fix
notes="Removing waters, adding hydrogens at pH 7.0. No non-standard residues "
"or gaps detected so no other fixing steps needed."
)output_pdb: 1UBQ_fixed.pdb
n_residues: 76
n_atoms: 1231
heterogens_removed: 58
nonstandard_residues: []
missing_atoms_added: 0
hydrogens_added: trueШаг 4 — Релаксация структуры
relax_pdb_structure(
input_pdb="1UBQ_fixed.pdb",
output_pdb="1UBQ_relaxed.pdb",
preset="amber14_implicit",
run_md=False,
notes="Minimisation-only run. Structure is clean and small (76 residues); "
"a full MD run is not needed for clash removal."
)output_pdb: 1UBQ_relaxed.pdb
preset_used: amber14_implicit
n_atoms: 1231
energy_initial_kJ_mol: -18423.4
energy_final_kJ_mol: -24817.9Итог Claude: Энергия снизилась примерно на 6400 кДж/моль во время минимизации — типично для кристаллической структуры после добавления водорода. Выходной файл 1UBQ_relaxed.pdb готов для дальнейшей MD или крупнозернистого моделирования.
Случай 2 — Очистка локальной многоцепочечной структуры, сохранение только выбранных цепей
Ваш запрос к Claude:
Проанализируй PDB-структуру в ./structures/complex.pdb, очисти её, оставив только цепи A и B, и выполни релаксацию.
Что делает Claude:
Шаг 1 — Анализ структуры
query_pdb_structure(
pdb_file="./structures/complex.pdb",
notes="Inspecting the multi-chain complex before chain selection and cleaning."
)chains:
A — protein, 312 residues (SER5–LEU316), 2 numbering gaps (at 47–51, 203–208)
B — protein, 289 residues (MET1–LYS289), no gaps
C — protein, 145 residues (ALA1–GLU145), no gaps
D — nucleic (DNA), 24 residues
heterogens: MG (3 ions), HOH (412 waters), ATP (1 molecule)
non_standard_residues: [MSE → MET in chain A (4 occurrences)]Рассуждения Claude: Пользователю нужны только цепи A и B. В цепи A есть два разрыва в нумерации — вероятно, это короткие неупорядоченные петли в кристалле; моделирование петель выполнять не буду. MSE (селенометионин) в цепи A будет преобразован в MET. ATP и ионы должны быть удалены перед релаксацией в OpenMM.
Шаг 2 — Очистка, сохранение только цепей A и B
fix_pdb_structure(
input_pdb="./structures/complex.pdb",
output_pdb="./structures/complex_AB_fixed.pdb",
chains_to_keep=["A", "B"],
replace_nonstandard_residues=True, # converts MSE → MET
remove_heterogens=True, # removes ATP, Mg²⁺, waters
add_missing_heavy_atoms=True,
add_hydrogens=True,
ph=7.0,
fix_missing_residues=False, # gaps are 4–5 residues; skipping loop modelling
notes="Keeping chains A and B only per user request. Converting 4 × MSE → MET "
"in chain A. Removing ATP, Mg ions, and waters — these cannot be "
"parameterised with standard AMBER presets. Not fixing the two loops "
"in chain A (gaps of 4–5 residues) to avoid poor loop geometry."
)output_pdb: complex_AB_fixed.pdb
n_residues: 601 (312 + 289)
n_atoms: 9847
chains_kept: [A, B]
nonstandard_residues: [MSE→MET ×4 in chain A]
heterogens_removed: 416 (ATP ×1, MG ×3, HOH ×412)
missing_atoms_added: 12
hydrogens_added: trueПредупреждение Claude пользователю: "В цепи A всё ещё есть два коротких разрыва в остатках 47–51 и 203–208 (отсутствуют в кристаллической структуре). Эти области будут отсутствовать в релаксированном результате. Если вам нужны полные петли для последующего моделирования, дайте знать, и я попробую их смоделировать — хотя геометрия для разрывов такого размера может быть неточной."
Шаг 3 — Релаксация комплекса из двух цепей
relax_pdb_structure(
input_pdb="./structures/complex_AB_fixed.pdb",
output_pdb="./structures/complex_AB_relaxed.pdb",
preset="amber14_implicit",
run_md=True,
restrain_backbone=True,
restraint_k=1000.0,
production_steps=25000,
notes="Running short restrained MD (25 000 steps ≈ 100 ps) to relax side chains "
"around the 12 newly added heavy atoms and the two gap termini in chain A. "
"Backbone restrained at 1000 kJ/mol/nm² to preserve experimental fold."
)output_pdb: complex_AB_relaxed.pdb
preset_used: amber14_implicit
n_atoms: 9847
energy_initial_kJ_mol: -71203.1
energy_post_min_kJ_mol: -89441.6
energy_post_md_kJ_mol: -94308.2
energy_final_kJ_mol: -95112.4Итог Claude: Энергия стабильно снижалась в процессе минимизации → MD → финальной минимизации. Структура сходится и готова. Выходной файл: complex_AB_relaxed.pdb.
Структура проекта
biomolecule-modeling-mcp/
├── main.py # MCP server entry point; all @mcp.tool() definitions
├── pyproject.toml # dependencies + CLI entry point (biomodeling)
├── utils/
│ ├── pdb_query.py # Structure inspection (BioPython)
│ ├── pdb_fix.py # PDBFixer wrapper
│ ├── pdb_splitter.py # Split multi-component PDB by chain type
│ ├── pdb_assemble.py # Merge PDB files
│ └── openmm_relax.py # OpenMM energy minimisation + restrained MD
└── data/ # Example / test PDB filesОсновные нюансы
Никогда не исправляйте большие петли по умолчанию.
fix_missing_residues=False— безопасное значение по умолчанию; петли > 5–10 остатков дают плохую геометрию при использовании PDBFixer.Лиганды нарушают стандартную релаксацию. Нестандартные остатки HETATM должны быть удалены (или параметризованы отдельно) перед запуском OpenMM с пресетами AMBER/CHARMM.
OpenMM >= 8.x и неявный растворитель. XML-файл неявного растворителя (например,
implicit/gbn2.xml) передается вForceField(), а не вcreateSystem().
Лицензия
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate, validate, and optimize PLUMED input files for molecular dynamics simulations using a set of MCP tools.GPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to generate, validate, and optimize PLUMED input files for molecular dynamics simulations, with templates and performance suggestions.12GPL 3.0
- AlicenseNot gradedqualityFmaintenanceIntegrates GROMACS molecular dynamics simulations with VMD visualization, enabling setup, execution, analysis, and 3D visualization of molecular dynamics workflows through natural language.21MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to execute computational chemistry and drug discovery workflows using Schrödinger Suites 2026, including protein preparation, docking, ADMET, QM/MM calculations, and job management.28MIT
Related MCP Connectors
AI-powered bioprotocol optimization — generate, search, and manage lab protocols via MCP
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/huangjianhuster/biomolecule-modeling-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server