Biomolecule Modeling MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Biomolecule Modeling MCP ServerDownload PDB 1UBQ, clean the protein structure, and run energy minimization"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Biomolecule Modeling MCP Server
An MCP (Model Context Protocol) server that lets AI assistants (Claude, etc.) clean PDB structures and run initial-stage energy relaxation — the preparation step before production MD or coarse-graining (e.g. Martini) pipelines.
Quickstart (Claude Code)
The easiest way to use this server is via uvx — no manual dependency management needed:
claude mcp add "biomolecule-modeling" --scope user -- \
uvx --from git+https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp biomodelingThat's it. uvx installs the package and all its Python dependencies into an isolated environment automatically. After running this command, restart Claude Code and the server will be listed under active MCP servers.
OpenMM note:
uvxinstalls the PyPI wheel of OpenMM (CPU-only). If you need GPU acceleration, install OpenMM via conda first (conda install -c conda-forge openmm pdbfixer) and use the manual registration method instead.
Related MCP server: PLUMED2 MCP Server
What It Does
The server exposes a set of tools that guide an LLM through a structured workflow:
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)At any point get_workflow_report returns a Markdown summary of every decision the LLM made, with its reasoning, which can be saved to disk.
Tools
Tool | Description |
| Chain-level inspection: type, sequence, residue range, numbering gaps, backbone breaks |
| Split a multi-component PDB into per-type files (protein, nucleic, ligands) |
| PDBFixer wrapper: remove heterogens, replace non-standard residues, add missing atoms/hydrogens |
| Merge multiple PDB files back into one, with conflict resolution |
| OpenMM energy minimisation + optional short backbone-restrained MD |
| List available force-field presets and their parameters |
| Return and/or save a Markdown report of all tool calls and LLM reasoning |
| Clear the session log for a new structure |
| Change the working directory for relative path resolution |
Force-Field Presets
Preset | Solvent | Notes |
| GBn2 implicit | Default. No periodic box needed. Fast. |
| TIP3P-FB explicit | Requires pre-solvated periodic box |
| OBC2 implicit | Older AMBER, implicit solvent |
| CHARMM TIP3P explicit | Requires pre-solvated periodic box |
Manual Installation
Use this method if you want GPU-accelerated OpenMM or prefer a local checkout.
1. Install OpenMM (conda recommended for GPU support)
conda install -c conda-forge openmm pdbfixer2. Clone and install dependencies
git clone https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp
cd biomolecule-modeling-mcp
uv sync3. Register with Claude Code
claude mcp add "biomolecule-modeling" --scope user -- \
/path/to/uv run --directory /path/to/biomolecule-modeling-mcp python main.pyReplace /path/to/uv with which uv and use the absolute path to the cloned repo.
Important: use
--directory(not--project).--projectsets the virtualenv but leavescwdwherever the caller is, which breaks relativeutils/imports.
Standalone scripts (no MCP client needed)
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 structureExample Sessions
The following examples show real natural-language prompts you can give Claude, and the sequence of tool calls the server will drive in response.
Case 1 — Download, inspect, clean, and relax a PDB from RCSB
Your prompt to Claude:
Download PDB 1UBQ, query its structure information, clean the protein part, and relax the structure.
What Claude does:
Step 1 — Download the file
Claude fetches 1UBQ.pdb from RCSB (https://files.rcsb.org/download/1UBQ.pdb) and saves it locally.
Step 2 — Inspect the structure
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's reasoning: Single protein chain, no gaps, no non-standard residues. Waters present — will remove them. No ligands to worry about; can go straight to fix_pdb_structure.
Step 3 — Clean the structure
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: trueStep 4 — Relax the structure
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.9Claude's summary: Energy dropped ~6400 kJ/mol during minimisation — typical for a crystal structure after hydrogen addition. Output 1UBQ_relaxed.pdb is ready for downstream MD or coarse-graining.
Case 2 — Clean a local multi-chain structure, keep only selected chains
Your prompt to Claude:
Query the PDB structure under ./structures/complex.pdb, clean it to keep only chain A and chain B, and relax the structure.
What Claude does:
Step 1 — Inspect the structure
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's reasoning: User wants chains A and B only. Chain A has two numbering gaps — these are likely short disordered loops in the crystal; will not attempt loop modelling. MSE (selenomethionine) in chain A will be converted to MET. ATP and ions must be removed before OpenMM relaxation.
Step 2 — Clean, keeping only chains A and 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: trueClaude's warning to user: "Chain A still has two short gaps at residues 47–51 and 203–208 (missing from the crystal structure). These regions will be absent in the relaxed output. If you need complete loops for your downstream simulation, let me know and I can attempt loop modelling — though the geometry for gaps this size may be rough."
Step 3 — Relax the two-chain complex
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.4Claude's summary: Energy decreased steadily through minimisation → MD → final minimisation. The structure is converged and ready. Output: complex_AB_relaxed.pdb.
Project Structure
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 filesKey Gotchas
Never fix large loops by default.
fix_missing_residues=Falseis the safe default; loops > 5–10 residues produce poor geometry with PDBFixer.Ligands break standard relaxation. Non-standard HETATM residues must be removed (or separately parameterised) before running OpenMM with AMBER/CHARMM presets.
OpenMM >= 8.x implicit solvent. The implicit solvent XML (e.g.
implicit/gbn2.xml) goes intoForceField(), notcreateSystem().
License
MIT
Available Tools
9 toolsassemble_pdb_structuresA
Merge multiple PDB files into a single PDB file.
WHEN TO USE
Use after split_pdb + fix_pdb_structure when you have separately processed components (e.g. fixed protein + original ligand) that need to be recombined before relaxation. Also useful for building hetero-complexes from individual chain files.
WORKFLOW POSITION
Optional step between fix_pdb_structure and relax_pdb_structure.
DECISION GUIDANCE
chain_id_map: Always provide this if you have performed split → fix → assemble, because fix_pdb_structure may have altered chain IDs. Map by the basename of the input file (e.g. {"protein_A_fixed.pdb": "A"}).
handle_conflicts (default "rename"): Use "rename" (default) for most cases — it is safe and non-destructive. Use "merge" only when two files represent the same biological chain split across files (e.g. modelled N-terminal extension + crystal structure). Never use "error" in automated workflows.
renumber_residues (default False): Only set True if downstream tools require sequential numbering from 1. Renumbering loses the original residue IDs, which makes cross-referencing with the source PDB harder.
renumber_atoms (default False): Set True if the output PDB will be read by tools that expect strictly sequential atom serials.
OUTPUT — WHAT TO CHECK
Run query_pdb_structure on the assembled output to verify chain IDs, residue counts, and that no unexpected gaps were introduced by the merge.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Record which components are being merged and why, e.g. "re-assembling fixed chain A with original ligand files before relaxation". | |
| input_pdbs | Yes | Ordered list of PDB paths to merge (order determines chain order in the output). | |
| output_pdb | Yes | Path for the assembled output file. | |
| chain_id_map | No | Map of input basename → desired output chain ID. | |
| renumber_atoms | No | Renumber all atom serials sequentially (default False). | |
| handle_conflicts | No | "rename" | "merge" | "error" (default "rename"). | rename |
| renumber_residues | No | Renumber residues in every chain from 1 (default False). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description assumes full responsibility for behavioral disclosure. It does so thoroughly: explains chain ID mapping risks after fix_pdb_structure, differentiates handle_conflicts modes with safety implications, and warns that renumbering loses original residue IDs. This goes well beyond basic operation descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear section headers (PURPOSE, WHEN TO USE, WORKFLOW POSITION, DECISION GUIDANCE, OUTPUT). It is information-dense but every sentence serves a purpose, covering essential guidance without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 7 parameters and no annotations, the description covers all aspects needed for correct usage: purpose, workflow position, per-parameter decision guidance, and output verification steps. This is a model of completeness for a complex structural biology tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema coverage is 100%, the description adds significant meaning beyond the schema. For example, it advises when to use chain_id_map, clarifies the practical difference between 'rename' and 'merge', and explains the consequences of renumber_residues and renumber_atoms. This is substantial added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Merge multiple PDB files into a single PDB file,' using a specific verb and resource that immediately distinguishes it from siblings like split_pdb. The inverse relationship to split_pdb is implicit, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'WHEN TO USE' section provides concrete scenarios: after split_pdb + fix_pdb_structure, for building hetero-complexes, and positions itself in the workflow between fix_pdb_structure and relax_pdb_structure. This clearly guides when to choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_pdb_structureA
Prepare a PDB file for OpenMM by correcting common structural problems.
WHEN TO USE
Run this after query_pdb_structure (and optionally split_pdb) and before relax_pdb_structure. It is required before relaxation because OpenMM needs: (a) standard residue names, (b) all heavy atoms present, (c) hydrogen atoms added.
WORKFLOW POSITION
Step 3 (or step 2 if no splitting is needed). Input is typically the raw PDB or the protein-only file produced by split_pdb.
DECISION GUIDANCE
chains_to_keep / chains_to_remove: Decide based on query_pdb_structure output. For a standard relaxation workflow keep only the biological unit (usually protein chains). Remove chains that are crystallographic symmetry mates or that lack force-field parameters.
ph (default 7.0): Controls protonation states of HIS, ASP, GLU, LYS, CYS. Use 7.4 for physiological simulation. Use the experimental pH if known from the paper. Histidine protonation is particularly sensitive — consider whether HID/HIE/HIP matters for your system.
remove_heterogens (default True): Set False only if ligands have been separately parameterised and the assembled structure is ready for a non-standard force field. For standard AMBER/CHARMM relaxation, ligands without parameters will cause createSystem() to fail.
keep_water (default False): Set True only when crystallographic waters are meaningful (e.g. active-site waters). Waters slow minimisation and are usually re-added during explicit-solvent solvation later.
fix_missing_residues (default False): Only enable for gaps ≤ ~5 residues or when the user explicitly requests loop modelling. Modelled loops have roughly-placed atoms and require extensive MD to be meaningful. Large gaps (> 10 residues) will produce severe clashes and should be left open.
fix_terminal_residues (default False): Disordered termini are almost never worth modelling; leave False unless specifically requested.
OUTPUT — WHAT TO CHECK
nonstandard_residues: List what was converted. Flag any unexpected conversions to the user (e.g. a bound cofactor being converted to a standard amino acid). missing_atoms_added: Review side-chains added. A large number (> 20) suggests significant disorder in the crystal structure. heterogens_removed: If this is 0 when ligands were present, something was misclassified — re-check with query_pdb_structure.
| Name | Required | Description | Default |
|---|---|---|---|
| ph | No | pH for protonation assignment (default 7.0). | |
| notes | No | Record key decisions, e.g. "keeping only chain A, pH 7.4 for physiological simulation, not modelling 22-residue loop as it is far from the active site". | |
| input_pdb | Yes | Path to input PDB or mmCIF file. | |
| keep_water | No | Preserve crystallographic waters when removing heterogens (default False). | |
| output_pdb | No | Output path (default: <stem>_fixed.pdb). | |
| add_hydrogens | No | Add H atoms at the given pH (default True). | |
| chains_to_keep | No | Retain only these chain IDs. | |
| chains_to_remove | No | Remove these chain IDs. | |
| remove_heterogens | No | Remove ligands and ions (default True). | |
| fix_missing_residues | No | Model missing internal loops (default False; requires SEQRES records). | |
| fix_terminal_residues | No | Also model missing terminal residues (default False; only with fix_missing_residues=True). | |
| add_missing_heavy_atoms | No | Add absent side-chain heavy atoms (default True). | |
| replace_nonstandard_residues | No | Map modified residues to standard ones (default True). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behaviors: adding hydrogens, adding missing heavy atoms, mapping nonstandard residues, removing heterogens, and modeling missing residues/termini with associated risks. It also explains consequences like clashes from large loop gaps and slow minimization with water. It could be slightly more explicit about whether the input file is modified or a new output file is written, but the output_pdb parameter and output-check section imply this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but exceptionally well-structured with clear headers (WHEN TO USE, WORKFLOW POSITION, DECISION GUIDANCE, OUTPUT). Every sentence has a purpose and front-loads the most critical workflow information. Despite its length, it remains scannable and directly actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 13 parameters, the description is remarkably complete: it gives workflow position, parameter decision rules, and output interpretation guidance. The output-check section even tells the agent what anomalies to flag (e.g., unexpected nonstandard conversions, many missing atoms, zero heterogens removed when ligands were present). This covers both correct invocation and downstream validation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema by explaining semantic choices for chains_to_keep/remove, ph, remove_heterogens, keep_water, fix_missing_residues, and fix_terminal_residues. It does not add extra color for every parameter, but the schema already handles those well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line clearly states the tool's purpose: 'Prepare a PDB file for OpenMM by correcting common structural problems.' This specifies the verb, resource, and intended context. It also distinguishes itself from siblings by placing itself in the workflow between query_pdb_structure/split_pdb and relax_pdb_structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'WHEN TO USE' section directs the agent to run this after query_pdb_structure and before relax_pdb_structure, and states it is required before relaxation. It also gives decision guidance per parameter, explaining when to adjust chains, pH, heterogen removal, water, and missing-residue modeling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_reportA
Return a summary of all tool calls and LLM decisions made in this session.
WHEN TO USE
The report is written to a Markdown file automatically after every tool call — you do not need to call this to produce the file. Call it when you want to:
Tell the user where their report file is located.
Optionally copy the report to a different path via save_to.
Read the markdown string directly (e.g. to summarise it for the user).
| Name | Required | Description | Default |
|---|---|---|---|
| save_to | No | Optional additional path to also write the Markdown report. The auto-generated file is always written regardless. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the report is automatically written after every tool call, that this tool does not produce the file, and that save_to optionally copies the report to an additional path. This is strong disclosure of side effects and behavior, though it could also mention error handling or file permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. The primary purpose is front-loaded in the first sentence, and a clear 'WHEN TO USE' section follows with an organized bulleted list. Every sentence contributes value; there is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, output schema available) and the rich context provided—purpose, usage guidelines, automatic file behavior, and side effects—the description is complete. It adequately covers all necessary aspects without needing to explain return values, as the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one optional save_to parameter with a detailed description). The tool description repeats the parameter's purpose ('Optionally copy the report to a different path via save_to') but adds no new meaning beyond the schema. Baseline of 3 applies because the schema already documents the parameter fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb and resource: 'Return a summary of all tool calls and LLM decisions made in this session.' This distinguishes it from siblings like reset_workflow_report, which implies resetting rather than retrieving.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' section explicitly explains when to call this tool and when not to, noting that the report is auto-generated after every tool call. It lists concrete use cases (telling the user the report location, copying via save_to, reading the markdown string) and clarifies that producing the file is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_ff_presetsA
List available force-field presets for relax_pdb_structure.
WHEN TO USE
Call before relax_pdb_structure when you are unsure which preset to use or want to present the user with options.
Returns: dict mapping preset name → description string.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior. It clearly states the return type ('dict mapping preset name → description string'), which is the primary observable behavior. It does not mention side effects or read-only status, but for a listing tool this is minimal and acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence summary, a clear 'WHEN TO USE' section, and a 'Returns' line. Every sentence adds value, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, a declared output schema, and a simple return format, the description is complete. It even includes usage context and a return type description, leaving no critical gaps for the agent to navigate this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema fully covers parameter semantics. The baseline for zero parameters is 4, and the description appropriately does not attempt to add parameter details that don't exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('force-field presets for relax_pdb_structure'), clearly distinguishing it from sibling tools like split_pdb or fix_pdb_structure. It states exactly what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' section explicitly instructs to call this tool before relax_pdb_structure when unsure about presets or wanting to present options. This provides clear contextual guidance and names the relevant sibling tool, fulfilling the 'when and alternatives' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_pdb_structureA
Inspect a PDB file and return a detailed chain-level summary.
WHEN TO USE
Always call this FIRST before any fixing or relaxation. The output tells you what is actually in the file so you can make informed decisions about every subsequent step.
WORKFLOW POSITION
Step 1 of every session. Re-run after split_pdb if you need per-component details.
OUTPUT — WHAT TO CHECK
chains[*].type Confirm which chains are protein, DNA/RNA, ligand, or water. Ligand chains (type="ligand") cannot be directly relaxed with the built-in presets; they must be removed with fix_pdb_structure unless they have standard force-field parameters.
chains[*].numbering_gaps Each gap lists the flanking residues and the estimated number of missing residues. Gaps ≤ 5 residues are commonly modellable with fix_missing_residues=True. Larger gaps produce poor geometry and should be left open unless the user specifically requests loop modelling.
chains[*].structural_breaks A structural break that COINCIDES with a numbering gap is strong evidence for genuinely missing coordinates. A structural break WITHOUT a numbering gap may indicate a clashing insertion or bad crystal contact — flag this to the user.
chains[*].sequence Verify the sequence is complete and plausible. Unknown residues appear as [XXX].
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Record why you are querying this file (e.g. "initial inspection before deciding chain selection and pH"). | |
| input_pdb | Yes | Path to the PDB or mmCIF file. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the behavioral burden. It goes beyond a simple read operation by explaining how to interpret output fields (e.g., chain types, numbering gaps, structural breaks) and their practical implications (e.g., ligand chains cannot be relaxed with built-in presets). This is rich useful context, though it doesn't explicitly state that the tool is non-mutating, which is implied by 'Inspect'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings (WHEN TO USE, WORKFLOW POSITION, OUTPUT — WHAT TO CHECK) and bullet points. It is longer than average, but each section earns its place by explaining workflow and output interpretation. The main purpose is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description adds substantial interpretive value that the schema alone would not provide (e.g., what a structural break coinciding with a numbering gap means). It covers the tool's role in the workflow and gives the agent enough context to act on the results. For a query tool with this complexity, it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both input_pdb and notes have clear descriptions. The tool description does not add parameter-specific details beyond the schema, but none are needed since the schema already documents the parameters well. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Inspect a PDB file and return a detailed chain-level summary.' This clearly distinguishes it from sibling tools like fix_pdb_structure or relax_pdb_structure, which modify rather than inspect. The tool's role is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Always call this FIRST before any fixing or relaxation' and 'Step 1 of every session.' It also advises re-running after split_pdb for per-component details. This directly tells the agent when to use this tool versus alternatives, and even names alternatives in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
relax_pdb_structureA
Energy-minimise and optionally run short restrained MD on a prepared PDB.
WHEN TO USE
Use as the FINAL step after fix_pdb_structure (and optionally assemble_pdb_structures). The input MUST have hydrogens and standard residue names — run fix_pdb_structure first.
Do NOT pass a raw PDB straight to this tool. OpenMM will fail if residues are missing heavy atoms or contain non-standard residue names.
WORKFLOW POSITION
Last step of the cleaning/preparation pipeline. Output is a relaxed PDB ready for production MD setup or coarse-graining.
DECISION GUIDANCE
preset (default "amber14_implicit"): amber14_implicit — use for typical protein relaxation; fast, no periodic box required. Best choice for most users. amber14_explicit — use when the input already has a periodic solvent box (added externally). More accurate but slower. amber99sb_implicit — an older force field; prefer amber14_implicit unless the user specifically requests AMBER99SB. charmm36_explicit — use when downstream simulation will use CHARMM36 and explicit solvent. Call query_ff_presets() to see the full list with descriptions.
run_md (default True): Set False for a minimisation-only run, which is much faster. Use minimisation-only when: (a) the structure is already well-relaxed, (b) a quick clash-removal pass is all that is needed, or (c) compute time is limited.
restrain_backbone (default True): Keep True unless the user wants full unrestrained relaxation. Backbone restraints preserve the experimental fold; without them a very short MD run can distort secondary structure.
restraint_k (default 1000 kJ/mol/nm²): Reduce to 100–200 for softer restraints that allow more backbone movement. Increase to 5000 for near-rigid backbone relaxation of side-chains only.
production_steps (default 25 000 ≈ 100 ps at 4 fs): Sufficient for side-chain relaxation and removal of clashes introduced by adding missing atoms. Increase to 250 000 (1 ns) for more thorough equilibration — note this takes substantially longer on CPU.
temperature (default 300 K): Use 300 K for room-temperature simulation. Some crystallographers prefer 277 K to match cryo conditions.
OUTPUT — WHAT TO CHECK
energy_initial_kJ_mol vs energy_final_kJ_mol: A drop of 10³–10⁶ kJ/mol after minimisation is normal for a raw crystal structure. If the final energy is still very large (> −10 000 kJ/mol for a 500-residue protein), the structure may have unresolved clashes — report to the user and suggest checking with query_pdb_structure. energy_post_md_kJ_mol: Should be more negative than energy_post_min_kJ_mol. If it is more positive, MD is diverging — reduce production_steps or timestep.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Record key decisions, e.g. "using implicit solvent for speed; run_md=False as structure only needed clash removal before coarse-graining". | |
| preset | No | Force-field preset (default "amber14_implicit"). | amber14_implicit |
| run_md | No | Run MD after minimisation (default True). | |
| minimize | No | Run initial energy minimisation (default True). | |
| input_pdb | Yes | Prepared PDB with hydrogens and standard residues. | |
| output_pdb | No | Output path (default: <stem>_relaxed.pdb). | |
| restraint_k | No | Backbone spring constant kJ/mol/nm² (default 1000). | |
| temperature | No | Target temperature in K (default 300). | |
| timestep_fs | No | Integration timestep in fs (default 4.0). | |
| heating_steps | No | Steps for temperature ramp (default 5 000). | |
| platform_name | No | "CUDA", "OpenCL", "CPU", or None for auto. | |
| final_minimize | No | Final minimisation after MD (default True). | |
| heating_stages | No | Number of temperature ramp stages (default 10). | |
| save_minimized | No | Save post-initial-minimisation PDB (default True). | |
| report_interval | No | Log every N steps (default 1 000). | |
| production_steps | No | Steps at target temperature (default 25 000). | |
| minimize_max_iter | No | Max minimisation steps; 0 = until convergence. | |
| restrain_backbone | No | Restrain CA/N/C/O during MD (default True). | |
| heating_start_temp | No | Starting temperature in K (default 10). | |
| minimize_tolerance | No | Convergence criterion kJ/mol/nm (default 10.0). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden and does so thoroughly. It discloses failure modes (OpenMM will fail on missing atoms/non-standard residues), explains expected energy drops, flags signs of MD divergence, and describes output readiness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured into clear sections: WHEN TO USE, WORKFLOW POSITION, DECISION GUIDANCE, and OUTPUT. Each paragraph serves a distinct purpose and provides actionable information, so the length is justified for a 20-parameter scientific tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, no annotations, and an output schema, the description covers prerequisites, workflow position, detailed parameter selection, and output validation checks. It gives the agent enough context to invoke the tool correctly and interpret results, making it effectively complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters, so baseline is 3. The description adds substantial meaning for key parameters like preset, run_md, restrain_backbone, restraint_k, production_steps, and temperature with concrete numeric values and decision rules, elevating it above baseline. It does not discuss every parameter but is not required to given schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Energy-minimise and optionally run short restrained MD on a prepared PDB.' It clearly identifies the resource (a prepared PDB), the operation (energy minimisation and optional MD), and distinguishes itself as the final pipeline step after fix_pdb_structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit WHEN TO USE guidance, positions the tool in the workflow, and warns against passing raw PDBs. It also includes per-preset decision guidance and conditions for setting run_md=False, making alternatives and exclusions clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_workflow_reportA
Clear the session workflow report and start a fresh record.
WHEN TO USE
Call at the start of a new structure-preparation task when you want a clean report that covers only the current structure, not any previous work done in the same server session. Each reset starts a new timestamped report file.
| Name | Required | Description | Default |
|---|---|---|---|
| report_file | No | Optional explicit path for the new session's report file. If omitted, a timestamped file is auto-generated in the current working directory on the first tool call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool clears the session report, starts a fresh record, and creates a new timestamped file per reset. It does not discuss whether old files are preserved or return specifics, but the output schema helps fill that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear one-line purpose followed by a short WHEN TO USE block. Every sentence adds value and there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description covers purpose, timing, and reset semantics. It could be slightly more explicit about whether previous report files are preserved, but that word 'new timestamped file' implies non-destructive behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single optional report_file parameter, which is fully described in the schema. The description adds no parameter-specific meaning, but the baseline of 3 applies when the schema already explains the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Clear the session workflow report and start a fresh record,' which is a specific verb and resource. It clearly distinguishes itself from sibling tool get_workflow_report, which reads the report rather than resetting it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' section explicitly states to call at the start of a new structure-preparation task when a clean report is needed, and explains the rationale (avoiding previous work). It does not name explicit exclusions or alternative tools, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_working_directoryA
Set the working directory for all subsequent file I/O.
WHEN TO USE
Call this first when the user's PDB files are in a specific directory and
you want to avoid writing absolute paths in every subsequent call. After
this call, relative paths in all other tools resolve against path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the desired working directory. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 a key behavioral trait: the working directory affects all subsequent file I/O and that relative paths resolve against the set path. This is essential context, though it doesn't mention error handling or how to reset the directory, which would make it more complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. It uses two sentences plus a brief usage note, with no redundancy or filler. Every sentence contributes actionable information, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, the description adequately covers purpose, usage, and behavioral impact. The presence of an output schema means return values need not be explained. It is complete for an agent to select and invoke the tool successfully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes 'path' as an absolute path, but the description adds meaning by explaining that relative paths in other tools resolve against this path. This clarifies the practical role of the parameter beyond the schema's basic type description, enhancing understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Set the working directory for all subsequent file I/O.' It uses a specific verb ('set') and resource ('working directory'), and it distinguishes itself from sibling tools by focusing on a configuration action rather than PDB structure operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' section explicitly instructs when to call the tool: when a user's PDB files are in a specific directory and to avoid writing absolute paths in every call. It also states the consequence (relative paths resolve against `path`), which provides clear guidance on usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_pdbA
Split a multi-component PDB into separate files by molecular type.
WHEN TO USE
Use when query_pdb_structure reveals a mix of protein, nucleic acid, and/or ligand chains that need to be processed differently. Common reasons:
You want to fix the protein chain but retain the ligand as-is.
The structure contains DNA/RNA that requires different force-field treatment from the protein.
You want to inspect or modify a single chain in isolation.
WORKFLOW POSITION
Optional step between query_pdb_structure (step 1) and fix_pdb_structure. After splitting, run fix_pdb_structure on the protein file, then use assemble_pdb_structures to recombine before relaxation.
OUTPUT — WHAT TO CHECK
Verify that the ligand list matches what you saw in query_pdb_structure. If a ligand is missing, it may have been classified as an ion (and silently dropped) or the HETATM record name was not in the ligand detection list.
DECISION GUIDANCE
output_prefix: Use a descriptive prefix so file names are clear, e.g. "my_protein" yields "my_protein_protein_A.pdb".
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Record your reason for splitting (e.g. "separating protein from ATP ligand before fixing protein only"). | |
| input_pdb | Yes | Path to the input PDB file. | |
| output_prefix | No | Prefix for output filenames (default: input stem). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 an important behavioral quirk: ligands may be classified as ions and 'silently dropped', and HETATM record names may cause missing ligands. It also directs the user to verify output against query_pdb_structure results. While it doesn't cover all possible side effects (e.g., whether input is modified), it reveals a non-obvious failure mode, which is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses clear section headers (WHEN TO USE, WORKFLOW POSITION, OUTPUT, DECISION GUIDANCE) to organize information. The initial sentence is the purpose statement, and every subsequent section provides actionable guidance without redundancy. It is longer than average but appropriately so given the tool's complexity and workflow integration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers when to use, workflow position, output verification, and parameter naming guidance. An output schema exists, so return values don't need to be described. The only minor gap is absence of explicit limitation notes (e.g., unsupported PDB versions), but the provided context is thorough for the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds extra value for output_prefix with a concrete naming example ('my_protein' yields 'my_protein_protein_A.pdb'), which goes beyond the schema's generic prefix description. However, it does not add semantic depth for input_pdb or notes beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Split a multi-component PDB into separate files by molecular type' — a specific verb+resource+scope statement. This clearly distinguishes the tool from siblings like fix_pdb_structure and assemble_pdb_structures, which serve different stages of the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'WHEN TO USE' section explicitly states the trigger condition (query_pdb_structure reveals a mix of protein/nucleic acid/ligand chains) and gives three concrete example scenarios. The 'WORKFLOW POSITION' section further clarifies placement among sibling tools, providing strong guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct role: working directory setup, structural analysis, force-field lookup, splitting, fixing, assembling, relaxing, and workflow reporting. There is no overlap or ambiguity about which tool to call for a given purpose.
All tool names follow the consistent verb_noun pattern with lowercase and underscores (e.g., set_working_directory, query_pdb_structure, relax_pdb_structure). Minor plural variations like 'structures' vs 'structure' do not disrupt the pattern.
The server has 9 tools, which is well within the ideal 3-15 range. Each tool covers a necessary step in the biomolecule preparation workflow, and none feel redundant or extraneous.
The workflow is fully covered: setup, inspection, force-field info, splitting, fixing, assembling, relaxing, and reporting. There are no obvious gaps for the stated purpose of preparing and relaxing PDB structures.
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 Connectors
AI orchestration for computational chemistry and HPC workflows.
AI-powered bioprotocol optimization — generate, search, and manage lab protocols via MCP
Protein analysis: ESM-2/ESMC embeddings, mutation scoring, landscape scans, ESMFold structure.
Connect AI clients to biomedical data and tools.
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.22MIT
- AlicenseAqualityDmaintenanceEnables 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
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