Skip to main content
Glama
README.md
# anatomy-mcp

MCP server wrapping the [Anatomy](https://github.com/Muwei-TA/anatomy) skill
(crafted, interactive isometric figures that explain an idea as a real,
working object) using [FastMCP](https://github.com/PrefectHQ/fastmcp).

Anatomy is a Claude *skill*, not a CLI: instructions (`SKILL.md`),
references, a Node drawing kit (`kit/`), verification scripts
(`scripts/capture.mjs`, `drive.mjs`, `lines.mjs`) and eight example figures.
This server exposes that surface as MCP tools, so any MCP client can read the
skill's knowledge, study examples, build and audit figures, capture and check
them in headless Chrome, and prepare a gallery publish.

## Prerequisites

- Python 3.10+
- Node.js 20.10+ on PATH (the kit and scripts use only built-in modules)
- A checkout of the Anatomy repo — set `ANATOMY_REPO_DIR` to its path
- Chrome or Chromium (only for the capture / drive / line-check tools; the
  scripts find it via `CHROME_PATH` or a system install)

## Install

```bash
pip install -e .
```

## Run

```bash
export ANATOMY_REPO_DIR=/path/to/anatomy
anatomy-mcp                     # stdio, for MCP clients
anatomy-mcp --transport http --host 0.0.0.0 --port 8000
```

## Tools

Knowledge (no Chrome needed):

- `anatomy_skill_instructions` — full SKILL.md; read before any figure
- `anatomy_reference(name)` — one of craft, kit, motion, react, verify,
  webgl, walkthrough, 3d, publish (or SKILL)
- `anatomy_list_references` / `anatomy_list_examples` — inventories
- `anatomy_example_source(name, file?)` — an example's build script, or a
  React example's figure.tsx / geometry.ts / rig.ts / live.tsx / view.ts
- `anatomy_repo_file(path)` — any file in the repo (kit/, scripts/, ...)

Build and audit (Node, no Chrome):

- `anatomy_build_example(name, light?, audit?)` — run an example's
  `build.mjs` (`--light`, `--audit` must end `audit passed`)
- `anatomy_build_figure(build_script, light?, audit?)` — run any figure's
  own build script from its folder

Verification (need Chrome):

- `anatomy_capture(page, out, ...)` — headless-Chrome screenshot with zoom,
  hover and key options (`scripts/capture.mjs`)
- `anatomy_drive(page, actions, ...)` — scripted interaction: move, click,
  drag, key, slow motion, until, eval, shot, lines, turn, orbit, sheet
  (`scripts/drive.mjs`)
- `anatomy_line_check(page, out?)` — every texture line must end on
  something; `line ends: 0` (`scripts/lines.mjs`)

Publish:

- `anatomy_publish_prep(...)` — copy a finished figure into a local clone of
  the community gallery and print the PR commands; nothing is pushed
  (`scripts/publish.mjs`)

All tools return JSON; command output and exit codes are passed through
unchanged so failures stay diagnosable.

### Typical workflow

1. `anatomy_skill_instructions`, then the closest example's source
2. Write the figure's build script against `kit/iso-kit.mjs`
3. `anatomy_build_figure` with `audit=true` until `audit passed`
4. `anatomy_capture` (dark + light, desktop + 390px phone, zoom close-ups)
   and `anatomy_line_check` until `line ends: 0`
5. `anatomy_publish_prep` only when the user asks to publish

## License

MIT