figpilot
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@figpilotcreate a contact map figure for PDB 7KMG and run QA"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
figpilot
figpilot checks a figure the way a reviewer would, before you submit it.
It is a Claude Code skill, an opt-in hook and an MCP server that drive structfig, a toolkit that builds structure-biology figures from HTML pages and measures them against a list of checkable rules.
What you get
A skill (
skill/figpilot) that knows the six steps: study, one object, two prototypes and a gate, build by page, independent reads, QA. It also knows what never to do: heredocs for HTML, invented palettes, ranges for lists, hover-only legends.An MCP server (
mcp/server.mjs) with seven tools:list_templates,new_figure,build_figure,qa_figure,palette_sample,palette_check,render_structure. They call structfig's scripts, so figpilot carries no copy of them.A hook (
hook/figpilot_hook.mjs) that, after you write a page, reads the QA marks of its last build and says them in one line. It is off until you add it, and silent in any project without a control file.
Related MCP server: Rosetta MCP
Start
git clone https://github.com/danilkotelnikov/structfig
git clone https://github.com/danilkotelnikov/figpilot
cd figpilot
npm ci
node scripts/install-notes.mjsThe last command prints the exact commands for your machine: where to link the skill, the claude mcp add line, the hook entry for settings.json. It runs none of them. You paste what you want.
figpilot finds structfig through FIGPILOT_STRUCTFIG, or the folder ../structfig next to it.
One session, in short
You ask for the contact map of a nanobody and its antigen. figpilot lists the templates, copies contacts into your project with a notes stub, fetches the entry from the RCSB if you allow it, renders it in ChimeraX, builds the page, and runs the marks. Then it hands the PNG, and only the PNG, to a fresh reader and asks three questions. The reader usually finds a problem. You fix it, rebuild, ask again. The notes file keeps the dates and the answers.
Settings
Copy figpilot.example.json to figpilot.json in your figure project. It has the same keys as structfig's structfig.example.json: strictness, palette, typeLadder, words, widthMm, review, claimBoundary, chimerax, art, plus two for the hook, hook and hookBlocks. Either file name works for the hook and for structfig's build.
Hook setting | Effect |
| silent |
| a failed strict check exits with code 2 and the reason; otherwise the hook never blocks |
To turn the hook off for good, delete the control file or remove the entry from your settings.
What the server checks
Every argument is checked before it reaches a command or a path.
entryis a four-character PDB code, or the path of a.pdbor.ciffile inside your project.chainstakes only the keys that structfig's renderer reads (binder,antigen,light,drop,cdr,light_cdr,seed,sigma,t,assign). Values use letters, digits and_ , . : = + -. A semicolon, space, quote or line break is refused.key,nameandtemplateuse letters, digits,_and-, up to 64 characters.dir,out,artand the file arguments must lie inside the project folder. That is the folder of the nearestfigpilot.jsonorstructfig.json, else the working directory.art,tokens,dirofqa_figureand the palette inputs may also lie inside structfig. Files are written only inside the project folder.render_structuredoes not use the network. If the entry is not in structfig'sdata/pdb, it stops and tells you to passfetch=true. Withfetch=trueit downloads the file and its record from the RCSB intodata/pdbof the structfig folder.
The hook exits 0 and prints nothing when the control file or its input is malformed.
Tests
npm testThey start the server over stdio and call its tools, fire the hook with fake payloads, and compare the skill's copied references with structfig's docs. They need structfig next to figpilot. The test that renders with ChimeraX runs only when STRUCTFIG_CHIMERAX is set.
Keeping the skill current
The skill's references are copies of structfig's docs. After you change a doc there, run node scripts/sync-references.mjs; --check fails if a copy is stale.
Licence
Code: MIT, see LICENSE. The files in skill/figpilot/references are copies of structfig documents, which are CC BY 4.0, copied from structfig with attribution. See skill/figpilot/references/LICENSE.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Run protein folding, docking, design and sequence analysis tools, and read their results.
Create scientific illustrations, data charts and flowcharts with your SciFig account.
Create and edit scientific figures, generate data charts, and export editable SVG and PowerPoint.
Protein analysis: ESM-2/ESMC embeddings, mutation scoring, landscape scans, ESMFold structure.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables interaction with the RCSB Protein Data Bank to search, analyze, and visualize protein structures. It provides specialized tools for downloading coordinate files and performing structural modifications like residue mutations and metal atom replacements.-
- FlicenseNot gradedqualityCmaintenanceEnables protein modeling and design using the Rosetta suite via Docker, including structure refinement, mutation stability analysis, docking, and loop modeling through natural language commands.-
- AlicenseNot gradedqualityDmaintenanceMCP server for foldkit that exposes the 7-prime spine, 7 κ-bands, and 6 fold operations as native tools and resources in any MCP client for interaction via natural language.MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for foldkit that exposes the 7-prime spine, 7 κ-bands, and 6 fold operations as tools and resources, enabling interaction with fold state analysis and manipulation via natural language in any MCP client.MIT