Biomolecule Modeling MCP Server
Servidor MCP de Modelado de Biomoléculas
Un servidor MCP (Model Context Protocol) que permite a los asistentes de IA (Claude, etc.) limpiar estructuras PDB y ejecutar una etapa inicial de relajación energética, el paso de preparación antes de procesos de dinámica molecular (MD) de producción o de grano grueso (p. ej., Martini).
Inicio rápido (Claude Code)
La forma más sencilla de usar este servidor es a través de uvx: no se necesita gestión manual de dependencias:
claude mcp add "biomolecule-modeling" --scope user -- \
uvx --from git+https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp biomodelingEso es todo. uvx instala el paquete y todas sus dependencias de Python en un entorno aislado automáticamente. Después de ejecutar este comando, reinicie Claude Code y el servidor aparecerá en la lista de servidores MCP activos.
Nota sobre OpenMM:
uvxinstala el wheel de PyPI de OpenMM (solo CPU). Si necesita aceleración por GPU, instale OpenMM primero mediante conda (conda install -c conda-forge openmm pdbfixer) y utilice el método de registro manual en su lugar.
Related MCP server: PLUMED2 MCP Server
Qué hace
El servidor expone un conjunto de herramientas que guían a un LLM a través de un flujo de trabajo estructurado:
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)En cualquier momento, get_workflow_report devuelve un resumen en Markdown de cada decisión que tomó el LLM, junto con su razonamiento, el cual puede guardarse en el disco.
Herramientas
Herramienta | Descripción |
| Inspección a nivel de cadena: tipo, secuencia, rango de residuos, huecos en la numeración, roturas en el esqueleto |
| Dividir un PDB multicomponente en archivos por tipo (proteína, ácido nucleico, ligandos) |
| Envoltorio de PDBFixer: eliminar heterógenos, reemplazar residuos no estándar, añadir átomos/hidrógenos faltantes |
| Fusionar varios archivos PDB de nuevo en uno, con resolución de conflictos |
| Minimización de energía de OpenMM + MD opcional con restricciones en el esqueleto |
| Listar los preajustes de campos de fuerza disponibles y sus parámetros |
| Devolver y/o guardar un informe en Markdown de todas las llamadas a herramientas y el razonamiento del LLM |
| Borrar el registro de la sesión para una nueva estructura |
| Cambiar el directorio de trabajo para la resolución de rutas relativas |
Preajustes de campos de fuerza
Preajuste | Solvente | Notas |
| GBn2 implícito | Predeterminado. No requiere caja periódica. Rápido. |
| TIP3P-FB explícito | Requiere caja periódica presolvatada |
| OBC2 implícito | AMBER antiguo, solvente implícito |
| CHARMM TIP3P explícito | Requiere caja periódica presolvatada |
Instalación manual
Utilice este método si desea OpenMM acelerado por GPU o prefiere una descarga local.
1. Instalar OpenMM (se recomienda conda para soporte de GPU)
conda install -c conda-forge openmm pdbfixer2. Clonar e instalar dependencias
git clone https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp
cd biomolecule-modeling-mcp
uv sync3. Registrar con Claude Code
claude mcp add "biomolecule-modeling" --scope user -- \
/path/to/uv run --directory /path/to/biomolecule-modeling-mcp python main.pyReemplace /path/to/uv con which uv y utilice la ruta absoluta al repositorio clonado.
Importante: utilice
--directory(no--project).--projectestablece el virtualenv pero deja elcwddonde esté el llamador, lo que rompe las importaciones relativas deutils/.
Scripts independientes (no se necesita cliente 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 structureSesiones de ejemplo
Los siguientes ejemplos muestran prompts reales en lenguaje natural que puede darle a Claude, y la secuencia de llamadas a herramientas que el servidor ejecutará en respuesta.
Caso 1 — Descargar, inspeccionar, limpiar y relajar un PDB desde RCSB
Su prompt para Claude:
Descarga el PDB 1UBQ, consulta la información de su estructura, limpia la parte de la proteína y relaja la estructura.
Lo que hace Claude:
Paso 1 — Descargar el archivo
Claude obtiene 1UBQ.pdb de RCSB (https://files.rcsb.org/download/1UBQ.pdb) y lo guarda localmente.
Paso 2 — Inspeccionar la estructura
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: []Razonamiento de Claude: Cadena de proteína única, sin huecos, sin residuos no estándar. Hay aguas presentes: las eliminaré. No hay ligandos de los que preocuparse; puedo pasar directamente a fix_pdb_structure.
Paso 3 — Limpiar la estructura
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: truePaso 4 — Relajar la estructura
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.9Resumen de Claude: La energía disminuyó ~6400 kJ/mol durante la minimización, algo típico para una estructura cristalina después de la adición de hidrógenos. El archivo 1UBQ_relaxed.pdb está listo para MD o grano grueso posterior.
Caso 2 — Limpiar una estructura local multicadena, manteniendo solo las cadenas seleccionadas
Su prompt para Claude:
Consulta la estructura PDB en ./structures/complex.pdb, límpiala para mantener solo la cadena A y la cadena B, y relaja la estructura.
Lo que hace Claude:
Paso 1 — Inspeccionar la estructura
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)]Razonamiento de Claude: El usuario solo quiere las cadenas A y B. La cadena A tiene dos huecos en la numeración: probablemente sean bucles cortos desordenados en el cristal; no intentaré modelar bucles. La MSE (selenometionina) en la cadena A se convertirá a MET. El ATP y los iones deben eliminarse antes de la relajación con OpenMM.
Paso 2 — Limpiar, manteniendo solo las cadenas A y 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: trueAdvertencia de Claude al usuario: "La cadena A todavía tiene dos huecos cortos en los residuos 47–51 y 203–208 (faltan en la estructura cristalina). Estas regiones estarán ausentes en la salida relajada. Si necesita bucles completos para su simulación posterior, hágamelo saber y puedo intentar modelar los bucles, aunque la geometría para huecos de este tamaño puede ser irregular".
Paso 3 — Relajar el complejo de dos cadenas
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.4Resumen de Claude: La energía disminuyó constantemente a través de la minimización → MD → minimización final. La estructura ha convergido y está lista. Salida: complex_AB_relaxed.pdb.
Estructura del proyecto
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 filesProblemas comunes
Nunca arregle bucles grandes por defecto.
fix_missing_residues=Falsees el valor predeterminado seguro; los bucles > 5–10 residuos producen una geometría deficiente con PDBFixer.Los ligandos rompen la relajación estándar. Los residuos HETATM no estándar deben eliminarse (o parametrizarse por separado) antes de ejecutar OpenMM con preajustes AMBER/CHARMM.
OpenMM >= 8.x solvente implícito. El XML de solvente implícito (p. ej.,
implicit/gbn2.xml) va enForceField(), no encreateSystem().
Licencia
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