MCP server that connects AI coding tools to UCSF ChimeraX for natural-language protein editing
SaferSkills independently audited chimerax-mcp (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Talk to proteins in natural language. This MCP server connects AI coding tools (Claude Code, Cursor, VS Code, etc.) to UCSF ChimeraX, letting you load, edit, visualize, and analyze protein structures through conversation -- no manual ChimeraX commands needed.
Just say "open 6VXX, mutate A:501 to Lys, color by hydrophobicity, and take a screenshot" and watch ChimeraX do it in real time.
This project is in early development and actively looking for contributors. Bug reports, feature requests, and pull requests are very welcome -- check out the issues page or open a PR!
Load & Visualize
"Load 3LJ5, show only chain A, make it publication-ready with rainbow coloring and transparent surface"

Mutate Residue
"Open 6VXX, zoom to residue A:501, highlight it, mutate Thr to Lys, show nearby residues"

Electrostatic & Hydrophobicity Surfaces
"Load 1AKI, show surface, color by electrostatic potential, then switch to hydrophobicity"

A:48 and /A:48 spec formats, both 1-letter and 3-letter amino acid codes.cxc and .py scripts with path validationChimeraX will be launched automatically when the first tool is called. No need to start it manually or enable the REST API yourself.
<details> <summary>Manual setup (if auto-launch doesn't work)</summary>
Open ChimeraX and run in its command line:
remotecontrol rest start port 8765To use a custom ChimeraX install location, set the CHIMERAX_BIN environment variable:
export CHIMERAX_BIN="/path/to/ChimeraX"</details>
pip install chimerax-mcp<details> <summary>Other install methods</summary>
From GitHub (latest dev):
pip install git+https://github.com/mahynotch/chimerax-mcp.gitFrom source (development):
git clone https://github.com/mahynotch/chimerax-mcp.git
cd chimerax-mcp
pip install -e .</details>
After installing, add the server to your AI coding tool:
<details open> <summary><strong>Claude Code</strong></summary>
claude mcp add -s user chimerax -- chimerax-mcp</details>
<details> <summary><strong>Claude Desktop</strong></summary>
Edit config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": {
"chimerax": {
"command": "chimerax-mcp",
"args": []
}
}
}</details>
<details> <summary><strong>Cursor</strong></summary>
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"chimerax": {
"command": "chimerax-mcp",
"args": []
}
}
}</details>
<details> <summary><strong>Windsurf</strong></summary>
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"chimerax": {
"command": "chimerax-mcp",
"args": []
}
}
}</details>
<details> <summary><strong>VS Code (Copilot)</strong></summary>
Add to .vscode/mcp.json:
{
"servers": {
"chimerax": {
"type": "stdio",
"command": "chimerax-mcp"
}
}
}</details>
<details> <summary><strong>Cline</strong></summary>
Use the "Edit MCP Settings" button in the Cline panel, or edit directly:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json{
"mcpServers": {
"chimerax": {
"command": "chimerax-mcp",
"args": [],
"disabled": false
}
}
}</details>
<details> <summary><strong>OpenCode</strong></summary>
Add to ~/.config/opencode/opencode.json or project opencode.json:
{
"mcp": {
"chimerax": {
"type": "local",
"command": ["chimerax-mcp"],
"enabled": true
}
}
}</details>
<details> <summary><strong>Continue</strong></summary>
Add to .continue/config.yaml:
mcpServers:
- name: chimerax
type: stdio
command: chimerax-mcp</details>
Once configured, just talk naturally:
"Open 6VXX, color by chain, show surface, zoom to residue A:501"
The AI will call MCP tools sequentially and ChimeraX renders each step in real time:
open_structure("6VXX") -- fetches the structure from RCSBcolor_structure("#1", "chain") -- colors each chain differentlyshow_surface("#1") -- displays the molecular surfacezoom_to("/A:501") -- centers the view on residue 501 of chain A| Tool | Description |
|---|---|
open_structure | Open PDB ID, file path, or URL |
close_structure | Close one or all models |
save_structure | Save to PDB/mmCIF/mol2 |
list_models | List all open models |
get_sequence | Get amino acid sequence for a chain |
run_script | Execute a .cxc or .py script |
| Tool | Description |
|---|---|
mutate_residue | Swap residue using Dunbrack rotamer library |
delete_atoms | Delete atoms or residues |
add_hydrogen | Add hydrogens (protonate) |
minimize_energy | Run energy minimization |
| Tool | Description |
|---|---|
color_structure | Color by scheme (chain, bfactor, rainbow) or named/hex color |
show_electrostatic_surface | Coulombic ESP (red=negative, blue=positive) |
show_hydrophobicity_surface | Molecular Lipophilicity Potential |
show_surface | Show molecular surface with optional transparency |
hide_surface | Hide molecular surface |
show_cartoon | Show ribbon/cartoon |
show_sticks | Show stick representation |
hide_atoms | Hide atoms |
zoom_to | Zoom camera to a selection |
set_background | Set background color |
label_residues | Add text labels to residues |
clear_labels | Remove all labels |
reset_view | Reset to default camera view |
take_snapshot | Save PNG screenshot |
start_recording | Begin recording session as video |
stop_recording | Stop recording and save to MP4/WebM/MOV |
spin | Rotate model around an axis |
record_spin | Record a full turntable spin video |
| Tool | Description |
|---|---|
measure_distance | Distance between two atoms (Angstroms) |
measure_angle | Bond angle from three atoms (degrees) |
align_and_rmsd | Structural alignment with RMSD |
find_contacts | Residues within N Angstroms of selection |
get_bfactors | B-factor values for selection |
measure_buried_area | Buried solvent-accessible surface area |
| Tool | Description |
|---|---|
select_atoms | Select by ChimeraX specifier |
select_near | Select within distance |
select_chain | Select entire chain |
invert_selection | Invert current selection |
name_selection | Save selection under a reusable name |
Commands are sanitized before being sent to ChimeraX:
; and newlines rejected (ChimeraX uses these as command separators)exec, shell, system are rejectedrun_script only accepts existing .cxc/.py files with path validation127.0.0.1 only, not exposed to the networkRun the full test suite (53 tests) against a live ChimeraX instance:
pip install pytest
python -m pytest tests/test_live.py -vSecurity tests run without ChimeraX. Live tests auto-skip if ChimeraX is not available.
If a user asks you to install this MCP server, follow these steps:
pip install chimerax-mcp| Tool | Command |
|---|---|
| Claude Code | claude mcp add -s user chimerax -- chimerax-mcp |
| Cursor | Add to ~/.cursor/mcp.json |
| VS Code | Add to .vscode/mcp.json |
For Cursor / VS Code / others, create or update the config file with:
{
"mcpServers": {
"chimerax": {
"command": "chimerax-mcp"
}
}
}open_structure("1aki")Important: Before proceeding, confirm with the user that UCSF ChimeraX is installed on their machine. If not, direct them to https://www.cgl.ucsf.edu/chimerax/download.html -- the server auto-launches ChimeraX but cannot install it.
This project is not affiliated with, endorsed by, or sponsored by UCSF or the RBVI team. "ChimeraX" is a trademark of the University of California. This server communicates with ChimeraX through its public REST API and contains no ChimeraX source code.
Users are responsible for complying with ChimeraX's license terms. ChimeraX is free for academic and non-commercial use; commercial use requires a separate license from UCSF.
MIT -- see LICENSE
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.