zoo-mcp — Claude Code MCP server: CAD work through the Zoo API
An MCP server that hands your agent Zoo's CAD tools: run KCL code, import CAD files, take snapshots and measure models.
claude mcp add zoo-mcp -e ZOO_TOKEN=<ZOO_TOKEN> -- uvx zoo_mcpWhat zoo-mcp does
The server wraps Zoo's API and exposes it as agent tools. execute_kcl and exec_kcl_project run KCL code, import_cad_file brings in existing models, and snapshot plus the camera tools show the scene. A separate set of tools lists and searches public Aquarium projects and downloads their KCL sources — those calls need no token.
Modeling runs on explicit sessions, one per server process at most. After a client reconnect, get_modeling_session returns the session ID; when none exists, start_modeling_session opens one. Pass the same session_id to snapshots and modeling tools, then close it with stop_modeling_session. Rendering starts on the first snapshot, selection, highlight or camera call and stays on until the session stops, so visual state survives between calls. Exports, measurements and geometry queries never spin up graphics.
You need a Zoo API key in ZOO_API_TOKEN; the server will not start without it. Local entry points also read KITTYCAD_API_TOKEN and the ZOO_TOKEN alias, with ZOO_HOST or KITTYCAD_HOST setting the API origin. Stdio is the default transport. For Streamable HTTP, launch with --transport streamable-http and point the client at http://127.0.0.1:8000/mcp.
What it helps with
- run KCL code from the agent and read the result
- bring a CAD file into a modeling session
- snapshot a model and inspect its current state
- find a public Aquarium project and download its KCL sources
- measure geometry without starting the renderer
Example prompts for the agent
- Run this KCL code and show me the result
- Import
bracket.stepinto the modeling session and take a snapshot - Find the public Aquarium project by name and download its KCL sources
How to install zoo-mcp
Platform CLI
claude mcp add zoo-mcp -e ZOO_TOKEN=<ZOO_TOKEN> -- uvx zoo_mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zoo_mcp <command>
Platform CLI
codex mcp add zoo-mcp --env ZOO_TOKEN=<ZOO_TOKEN> -- uvx zoo_mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zoo_mcp <command>
Config file
{
"mcpServers": {
"zoo-mcp": {
"command": "uvx",
"args": [
"zoo_mcp"
],
"env": {
"ZOO_TOKEN": "<ZOO_TOKEN>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zoo_mcp <command>
Config file
{
"servers": {
"zoo-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"zoo_mcp"
],
"env": {
"ZOO_TOKEN": "<ZOO_TOKEN>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zoo_mcp <command>
Platform CLI
gemini mcp add -e ZOO_TOKEN=<ZOO_TOKEN> zoo-mcp uvx zoo_mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zoo_mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about zoo-mcp
How do I install zoo-mcp in Claude Code?
Add the server with claude mcp add zoo-mcp -e ZOO_TOKEN=<ZOO_TOKEN> -- uvx zoo_mcp. The alternative is claude mcp add --env ZOO_TOKEN=<ZOO_TOKEN> --transport stdio zoo-mcp -- uvx zoo_mcp.
What does zoo-mcp do?
It gives the agent Zoo's CAD tools: KCL execution, CAD file import, snapshots, measurements and access to public Aquarium projects.
What does zoo-mcp need to run?
A Zoo API key in ZOO_API_TOKEN. Local entry points also accept KITTYCAD_API_TOKEN and the ZOO_TOKEN alias.