Local physics/chemistry bench as MCP: plain words in, 12-domain simulations out.
Runs on your machine from its package; the steps are below.
At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y anvil-mcp
MCP client config
{
"mcpServers": {
"anvil": {
"command": "npx",
"args": [
"-y",
"anvil-mcp"
]
}
}
}Anvil — a full workbench for your agent.
No cloud. No Bridge. No API key. No LLM inside — the tools are pure computation; your agent host brings the thinking.
Plain words in — your agent forges the design, tests it against proof metrics, iterates until it passes, and hands you the file. You never touch a tool.
you: "I need a 5-stage CMOS ring oscillator at 7nm — prove it works
before I print anything."
agent: anvil.forge → blueprint: silicon · 8 nodes · "5-stage ring at 7 nm, VDD 0.75 V."
anvil.solve → [pass] Joule power · [pass] junction temp · [warn] EM margin thin
anvil.forge → widens the vias, re-forges
anvil.solve → all metrics pass
anvil.export → 532 triangles of ASCII STL
you get: the printable file, plus the proof it works.
Requires Node ≥ 20. No build step needed for use:
npx github:The-Warl0ck/anvil-mcp
Or clone and run:
git clone https://github.com/The-Warl0ck/anvil-mcp
cd anvil-mcp
npm install
npm run build
npm start
Add to your claude_desktop_config.json:
{
"mcpServers": {
"anvil": {
"command": "npx",
"args": ["github:The-Warl0ck/anvil-mcp"]
}
}
}
| Tool | Input | Output |
|---|---|---|
anvil.domains | {} | The 12 domains and what each simulates |
anvil.forge | { intent, domain? } | Blueprint JSON + rationale (offline — no LLM in the tool itself) |
anvil.solve | { blueprint, steps? } | SimSnapshot + ProofMetric[] with real numbers |
anvil.export | { blueprint, format } | STL (ASCII) or OBJ text for 3D printing / CAD |
silicon (nets, delay, heat, electromigration) · cellular (membranes, ions, morphogens) · quantum (wells, tunneling, decoherence) · neural (spikes, region flows) · mechanical (stress, modes, yield) · chemistry (mass-action kinetics, ΔH, equilibrium) · architecture (plans, interiors, circulation) · metallurgy (alloys, CE, melt, print window) · robotics (arms, torque, reach, payload) · machines (engines, gears, printable parts) · optics (geometry, gnomon, shadows, sundials) · sky (sun position / ephemeris)
anvil.forge — readIntent scores your words against per-domain keyword
sets, picks a domain, and forgeOffline builds a schematic graph (nodes,
edges, physical params) from templates plus your numbers (e.g. "7nm",
"5-stage", "0.75 V"). Pure local compute.anvil.solve — createSolver dispatches to the domain solver
(Kirchhoff MNA for silicon, Euler–Bernoulli for mechanical, mass-action for
chemistry, …), steps it, and returns a snapshot plus proof metrics — checks
with real tolerances and statuses.anvil.export — blueprint geometry meshed to ASCII STL or OBJ text.Everything runs in-process. There is no network call anywhere in the default path.
Optional — nothing is required to run:
ANVIL_HOME=~/.anvil # where saved designs / assets / exports live (default ~/.anvil)
anvil.solve returns a deterministic snapshot after N steps of the solver's
recommended dt — no wall-clock randomness.