Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCPYMOL_PORTNoPort for the TCP listener inside PyMOL (default 9876)9876
MCPYMOL_MMSEQS_URLNoURL for a custom MMseqs2 API endpoint (default is ColabFold public API)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
contact_reportA

Lists the residues in contact across two selections, with distances and types.

This is the numeric counterpart to ligand_view and interface_view: instead of drawing the interactions, it reports them — which residue pairs touch, how close they get, and whether the contact is a salt bridge, hydrogen bond, hydrophobic packing or pi-stacking. Use it to answer "what holds this ligand in the pocket" or "which residues form this interface".

Classification uses heavy-atom distance criteria, since crystal structures usually have no hydrogens: salt bridge <= 4.0 A between formally charged sidechain tips, hydrogen bond <= 3.5 A between N/O pairs, hydrophobic <= 4.5 A between C/S pairs, pi-stacking <= 5.5 A between aromatic ring centroids (classified parallel or T-shaped by interplanar angle). A reported hydrogen bond is therefore a donor-acceptor pair with plausible geometry, not one verified against a hydrogen position.

interface_reportA

Measures how large a protein-protein interface is, and which residues form it.

Reports buried surface area — the standard measure of how much of a complex is actually complex — by comparing each chain's solvent-accessible area free and bound. Also ranks the residues by how much surface each buries, and breaks the interface down by residue chemistry.

Interpretation: a per-side area under ~400 A^2 is usually a crystal packing contact rather than a biological interface, while over ~1000 A^2 indicates a substantial, likely specific association. These are guides from PDB-wide surveys, not a verdict — small biological interfaces exist.

For the interactions themselves — which pairs hydrogen bond, which form salt bridges — use contact_report on the same two chains.

superposition_viewA

Superposes two structures and colors the mobile one by per-residue shift.

An RMSD alone tells you that something moved, not where. This superposes mobile onto target, measures how far each residue's CA ended up from its counterpart, and colors the mobile structure blue (unchanged) through white to red (most shifted). The target is left as a grey reference cartoon.

Best on two states of the same protein — apo vs holo, open vs closed, a mutant against wild type. Residues are paired by chain and residue number, falling back to residue number alone when the two use different chain IDs.

Both structures have to be loaded first, and fetch_structure clears the session by default — so fetch the second one with replace=False or it will replace the first. If either entry is a multimer, compare single chains (create one object per chain): superposing one dimer onto another fits the assembly rather than the fold, which inflates the RMSD dramatically. 4AKE against 1AKE gives 18.5 A as deposited dimers and 2.1 A chain-to-chain.

conservation_viewA

Colors the structure by evolutionary conservation using Shannon entropy.

Runs a full pipeline: extracts the protein sequence from the loaded structure, submits it to an MMseqs2 server (ColabFold public API by default) for multiple sequence alignment, computes per-residue Shannon entropy, and maps the conservation scores onto the structure via the B-factor column and spectrum coloring.

Entropy scores are cached in memory by sequence, so changing the scale or re-running on the same protein does not require a repeat API call.

Magenta/blue = highly conserved (low entropy), white = moderate, cyan/green = highly variable (high entropy).

NOTE: The first call makes an external API call and may take 30 seconds to several minutes depending on the server and sequence length. Subsequent calls for the same sequence are instant.

showB

Shows a graphical representation for a given selection.

hideC

Hides a graphical representation for a given selection.

colorC

Sets the color for a selection.

selectA

Creates (or replaces) a named selection for later reuse.

removeA

Permanently removes the atoms matching the selection. This deletes atoms; it does not just hide them. To hide instead, use :func:hide.

distanceA

Measures the distance between two selections and returns it in Angstrom.

Also draws the measurement in the viewport as a named distance object. With multi-atom selections PyMOL reports the average over the pairs it found within its default cutoff.

sasaA

Measures solvent-accessible surface area, in square Angstrom.

Reports the SASA of selection in the context of the object it belongs to — so a chain measured inside a complex is already partly occluded by its partner. To get the free (unbound) area, copy the chain to its own object first with create, or use interface_report, which does the bound/free bookkeeping for you.

Accuracy depends on PyMOL's dot_solvent (0 = molecular surface, 1 = solvent-accessible) and dot_density settings.

rms_curA

Measures RMSD between two selections without moving anything.

Use this when the structures are already superposed, or when you want to know how far apart they are as currently positioned. Compare with align and super, which move the mobile structure to minimise RMSD before reporting it, and with superposition_view, which shows where the difference is rather than summarising it as one number.

Requires the two selections to have matching atom counts.

count_atomsA

Counts the atoms matching a selection.

Handy for checking a selection expression does what you think before building a scene on top of it — an empty count means the expression is wrong, which is otherwise invisible until the picture comes out blank.

execute_pymol_commandA

Executes a raw PyMOL command string (PyMOL CLI syntax). PREFER the dedicated tools when one exists — show, color, select, distance, ligand_view, interface_view, etc. They have better defaults, do compound setup in one call, and produce cleaner results. Reach for this tool only when no other tool covers what you need (e.g. set ray_shadow, 0, bg_color grey20, multi-statement scripts). Note: this accepts the PyMOL cmd.do mini-language, not Python.

asA

Shows one representation while hiding all others for the specified selection

setB

Sets a PyMOL setting to a specified value

cartoonB

Sets the cartoon type for the specified selection

spectrumC

Colors selection in a spectrum

labelB

Adds labels to atoms in the selection

angleA

Measures the angle between three selections and returns it in degrees.

Also draws the measurement as a named angle object.

dihedralA

Measures the dihedral (torsion) angle between four selections, in degrees.

Also draws the measurement as a named dihedral object. Useful for backbone phi/psi angles and ligand torsions.

centerB

Centers the view on a selection

orientA

Orients the view to align with principal axes of the selection

zoomC

Zooms the view on a selection

resetB

Resets the view, optionally resetting an object's matrix

turnB

Rotates the camera around an axis

moveC

Moves the camera along an axis

clipB

Adjusts the clipping planes

saveC

Saves data to a file

pngC

Saves a PNG image

deselectB

Clears the current selection

createB

Creates a new object from a selection

extractB

Extracts a selection to a new object

deleteB

Deletes objects or selections

alignC

Aligns one selection to another

superB

Superimposes one selection onto another

intra_fitC

Fits all states within an object

intra_rmsA

Calculates RMSD between states within an object

alterC

Alters atomic properties in a selection

alter_stateC

Alters atomic coordinates in a state

h_addB

Adds hydrogens to a selection

h_fillA

Fills open valences on the currently picked atom with hydrogens.

Takes no selection: cmd.h_fill operates on PyMOL's editor pick, so it needs an atom picked in the GUI and cannot be aimed from here. Passing it a selection used to land the string in its quiet argument and fail with an integer conversion error. For adding hydrogens to a selection over the bridge, use h_add.

bondC

Creates a bond between two atoms

unbondA

Removes a bond between two atoms

rebuildA

Regenerates all displayed geometry

refreshC

Refreshes the display

util_cbcC

Colors by chain (Color By Chain)

util_cbawC

Colors by atom, white carbons (Color By Atom, White)

util_cbagC

Colors by atom, green carbons (Color By Atom, Green)

util_cbacB

Colors by atom, cyan carbons (Color By Atom, Cyan)

util_cbamB

Colors by atom, magenta carbons (Color By Atom, Magenta)

util_cbayC

Colors by atom, yellow carbons (Color By Atom, Yellow)

util_cbasC

Colors by atom, salmon carbons (Color By Atom, Salmon)

util_cbabC

Colors by atom, slate carbons (Color By Atom, slateBLue)

util_cbaoB

Colors by atom, orange carbons (Color By Atom, Orange)

util_cbapC

Colors by atom, purple carbons (Color By Atom, Purple)

util_cbakC

Colors by atom, pink carbons (Color By Atom, pinK)

util_chainbowB

Colors chains in rainbow gradient (CHAINs in rainBOW)

util_rainbowA

Colors residues in rainbow from N to C terminus

util_ssC

Colors by secondary structure

util_color_by_elementB

Colors atoms by their element

util_color_secondaryB

Colors secondary structure elements

spheroidB

Displays atoms as smooth spheres

isomeshC

Creates a mesh isosurface

isosurfaceC

Creates a solid isosurface

sculpt_activateB

Activates sculpting mode for an object

sculpt_deactivateB

Deactivates sculpting mode for an object

sculpt_iterateD

Performs sculpting iterations

sceneC

Manages scenes for later recall

scene_orderC

Sets the order of scenes

msetB

Defines a sequence of states for movie playback

mplayB

Starts playing the movie

mstopB

Stops the movie

frameB

Sets or queries the current frame

forwardA

Advances one frame

backwardA

Goes back one frame

rockB

Toggles a rocking animation

rayD

Performs ray-tracing

drawC

Uses OpenGL renderer (faster but lower quality)

mpngB

Saves a series of PNG images for movie frames

symexpC

Generates symmetry-related copies

set_symmetryC

Sets symmetry parameters for an object

fabB

Creates a peptide chain from a sequence

fragmentB

Loads a molecular fragment

full_screenA

Toggles fullscreen mode

viewportB

Sets the viewport size

cdC

Changes the current directory

pwdA

Prints the current directory

lsA

Lists files in the current directory

systemC

Executes a system command

helpA

Shows help for a command

print_ribbon_viewA

Chunky β-arrow ribbons plus a continuous backbone "spine", tuned for rigid, gap-free 3D printing.

Configures the look developed for FDM printing: thick β-strand arrows and a fat helix on the main object with loop cartoon hidden, plus a separate <obj>_spine object showing PyMOL's cartoon tube (which ignores secondary structure) running unbroken through the whole backbone. The spine threads through the strand bodies, so when the two objects are exported together the voxel step fuses them into ONE watertight solid with no strand→loop discontinuity. The spine also acts as internal rebar, reinforcing the thin junctions for print rigidity.

After calling this, export the fused solid with::

print_export(obj_name="<obj>",
              groups="<obj>=(<obj> or <obj>_spine)",
              representation="cartoon",
              method="voxel", voxel_pitch=0.2)
print_exportA

Exports a structure as watertight STL files ready for multi-colour 3D printing.

Each colour group becomes one STL file. PyMOL's OBJ exporter writes the whole visible scene, so each group is isolated on its own before export, then rebuilt into a single watertight, manifold solid. All groups share the same coordinate frame, so a slicer can load them as aligned multi-material parts (e.g. add the second STL as a "part" of the first in Bambu Studio).

Requires the optional print extra (trimesh, pymeshlab); see the install hint returned if the libraries are missing.

renderA

Renders the current scene and returns the image, so you can see it.

Use this instead of calling ray and png separately — those leave you holding a filename you cannot look at. Call this after setting up a view to check what it actually looks like, and iterate.

Every render is ray-traced, which takes seconds to minutes on a large assembly. ray_trace=False is accepted but ignored: PyMOL's fast unshaded frame grab needs its GUI thread, which this plugin does not run on, so that path wrote blank images. Render smaller to render faster.

turntableA

Renders a full 360° rotation as a numbered PNG sequence.

Spins the camera around the vertical axis in equal steps and writes one frame per step, ready to assemble into a GIF or MP4 (e.g. ffmpeg -i turntable_0000.png out.mp4).

Every frame is ray-traced, which is slow — 36 frames of a large assembly can take an hour, so start with few frames and a small width/height. The unshaded OpenGL renderer would be far faster but does not work over this bridge (it needs PyMOL's GUI thread), and silently produced blank frames until this was found.

fetch_structureA

Fetches a protein structure from the PDB, or a predicted model from AlphaFold DB.

By default, it attempts to fetch the first biological assembly (multimer), and removes any unrelated chains/states that are not part of the primary multimer.

A UniProt accession or an AF- prefixed identifier routes to AlphaFold DB instead and is coloured by pLDDT confidence — see :func:fetch_alphafold.

load_structureA

Loads a structure from a local file path and applies the BFS multimer heuristic.

fetch_alphafoldA

Fetches a predicted structure from AlphaFold DB by UniProt accession.

These are predictions, not experimental structures, so the model is coloured by pLDDT confidence rather than the usual style — dark blue is reliable, orange is essentially unmodelled. Read the orange and yellow regions as "probably disordered or wrong", not as flexible loops.

Note that pLDDT rides in the B-factor column, so bfactor_view and putty_view will mis-colour these models (they assume low = rigid, which is backwards for confidence). Use plddt_view instead.

structure_infoA

Summarises what a loaded structure actually is, in one call.

Answers the question you ask before any analysis: what protein is this, how was it determined, at what resolution, what is in the file. Combines what PyMOL knows (chains, residue and atom counts, ligands, symmetry) with entry metadata from the RCSB (title, method, resolution, release date, source organism).

Metadata lookup is best-effort — it is skipped silently if the object is not named after a PDB entry, or the API is unreachable.

get_sequenceA

Returns the amino-acid sequence of a loaded structure, in FASTA.

Also reports how the sequence positions line up with the residue numbers in the file, and where the chain is broken. Both matter: PDB numbering rarely starts at 1, so "residue 50" in a paper and position 50 in the sequence are usually different residues — and unmodelled loops leave gaps in the structure that the sequence alone does not reveal.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/chemrich/MCPymol'

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