MCPymol
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCPYMOL_PORT | No | Port for the TCP listener inside PyMOL (default 9876) | 9876 |
| MCPYMOL_MMSEQS_URL | No | URL 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 |
| 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
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 |
| 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: |
| 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 Accuracy depends on PyMOL's |
| 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 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. |
| 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 |
| 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 After calling this, export the fused solid with:: |
| 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 |
| renderA | Renders the current scene and returns the image, so you can see it. Use this instead of calling Every render is ray-traced, which takes seconds to minutes on a large
assembly. |
| 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.
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 |
| 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 |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/chemrich/MCPymol'
If you have feedback or need assistance with the MCP directory API, please join our Discord server