Skip to main content
Glama
huangjianhuster

Biomolecule Modeling MCP Server

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 biomodeling

That'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: uvx installs 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

query_pdb_structure

Chain-level inspection: type, sequence, residue range, numbering gaps, backbone breaks

split_pdb

Split a multi-component PDB into per-type files (protein, nucleic, ligands)

fix_pdb_structure

PDBFixer wrapper: remove heterogens, replace non-standard residues, add missing atoms/hydrogens

assemble_pdb_structures

Merge multiple PDB files back into one, with conflict resolution

relax_pdb_structure

OpenMM energy minimisation + optional short backbone-restrained MD

query_ff_presets

List available force-field presets and their parameters

get_workflow_report

Return and/or save a Markdown report of all tool calls and LLM reasoning

reset_workflow_report

Clear the session log for a new structure

set_working_directory

Change the working directory for relative path resolution


Force-Field Presets

Preset

Solvent

Notes

amber14_implicit

GBn2 implicit

Default. No periodic box needed. Fast.

amber14_explicit

TIP3P-FB explicit

Requires pre-solvated periodic box

amber99sb_implicit

OBC2 implicit

Older AMBER, implicit solvent

charmm36_explicit

CHARMM TIP3P explicit

Requires pre-solvated periodic box


Manual Installation

Use this method if you want GPU-accelerated OpenMM or prefer a local checkout.

conda install -c conda-forge openmm pdbfixer

2. Clone and install dependencies

git clone https://github.com/YOUR_USERNAME/biomolecule-modeling-mcp
cd biomolecule-modeling-mcp
uv sync

3. Register with Claude Code

claude mcp add "biomolecule-modeling" --scope user -- \
  /path/to/uv run --directory /path/to/biomolecule-modeling-mcp python main.py

Replace /path/to/uv with which uv and use the absolute path to the cloned repo.

Important: use --directory (not --project). --project sets the virtualenv but leaves cwd wherever the caller is, which breaks relative utils/ 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 structure

Example 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: true

Step 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.9

Claude'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: true

Claude'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.4

Claude'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 files

Key Gotchas

  • Never fix large loops by default. fix_missing_residues=False is 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 into ForceField(), not createSystem().


License

MIT

Available Tools

9 tools
assemble_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoRecord which components are being merged and why, e.g. "re-assembling fixed chain A with original ligand files before relaxation".
input_pdbsYesOrdered list of PDB paths to merge (order determines chain order in the output).
output_pdbYesPath for the assembled output file.
chain_id_mapNoMap of input basename → desired output chain ID.
renumber_atomsNoRenumber all atom serials sequentially (default False).
handle_conflictsNo"rename" | "merge" | "error" (default "rename").rename
renumber_residuesNoRenumber residues in every chain from 1 (default False).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
phNopH for protonation assignment (default 7.0).
notesNoRecord 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_pdbYesPath to input PDB or mmCIF file.
keep_waterNoPreserve crystallographic waters when removing heterogens (default False).
output_pdbNoOutput path (default: <stem>_fixed.pdb).
add_hydrogensNoAdd H atoms at the given pH (default True).
chains_to_keepNoRetain only these chain IDs.
chains_to_removeNoRemove these chain IDs.
remove_heterogensNoRemove ligands and ions (default True).
fix_missing_residuesNoModel missing internal loops (default False; requires SEQRES records).
fix_terminal_residuesNoAlso model missing terminal residues (default False; only with fix_missing_residues=True).
add_missing_heavy_atomsNoAdd absent side-chain heavy atoms (default True).
replace_nonstandard_residuesNoMap modified residues to standard ones (default True).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
save_toNoOptional additional path to also write the Markdown report. The auto-generated file is always written regardless.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/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 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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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].

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoRecord why you are querying this file (e.g. "initial inspection before deciding chain selection and pH").
input_pdbYesPath to the PDB or mmCIF file.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoRecord key decisions, e.g. "using implicit solvent for speed; run_md=False as structure only needed clash removal before coarse-graining".
presetNoForce-field preset (default "amber14_implicit").amber14_implicit
run_mdNoRun MD after minimisation (default True).
minimizeNoRun initial energy minimisation (default True).
input_pdbYesPrepared PDB with hydrogens and standard residues.
output_pdbNoOutput path (default: <stem>_relaxed.pdb).
restraint_kNoBackbone spring constant kJ/mol/nm² (default 1000).
temperatureNoTarget temperature in K (default 300).
timestep_fsNoIntegration timestep in fs (default 4.0).
heating_stepsNoSteps for temperature ramp (default 5 000).
platform_nameNo"CUDA", "OpenCL", "CPU", or None for auto.
final_minimizeNoFinal minimisation after MD (default True).
heating_stagesNoNumber of temperature ramp stages (default 10).
save_minimizedNoSave post-initial-minimisation PDB (default True).
report_intervalNoLog every N steps (default 1 000).
production_stepsNoSteps at target temperature (default 25 000).
minimize_max_iterNoMax minimisation steps; 0 = until convergence.
restrain_backboneNoRestrain CA/N/C/O during MD (default True).
heating_start_tempNoStarting temperature in K (default 10).
minimize_toleranceNoConvergence criterion kJ/mol/nm (default 10.0).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_fileNoOptional 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

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the desired working directory.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/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 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoRecord your reason for splitting (e.g. "separating protein from ATP ligand before fixing protein only").
input_pdbYesPath to the input PDB file.
output_prefixNoPrefix for output filenames (default: input stem).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/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 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

A4.6/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to generate, validate, and optimize PLUMED input files for molecular dynamics simulations, with templates and performance suggestions.
    12
    GPL 3.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Integrates GROMACS molecular dynamics simulations with VMD visualization, enabling setup, execution, analysis, and 3D visualization of molecular dynamics workflows through natural language.
    22
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    28
    MIT

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/huangjianhuster/biomolecule-modeling-mcp'

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