anigram-mcp 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -2
- package/package.json +28 -4
package/README.md
CHANGED
|
@@ -1,3 +1,86 @@
|
|
|
1
|
-
|
|
1
|
+
<!-- SPDX-License-Identifier: MIT -->
|
|
2
|
+
<!-- SPDX-FileCopyrightText: 2026 Vaibhav Patel -->
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
# anigram-mcp
|
|
5
|
+
|
|
6
|
+
The [Anigram](https://github.com/light-vp/Anigram) MCP server. It lets
|
|
7
|
+
a coding assistant (Claude Code, Claude Desktop, Cursor, anything that speaks
|
|
8
|
+
MCP) write living engineering diagrams, run them through a simulated day, and
|
|
9
|
+
draw them.
|
|
10
|
+
|
|
11
|
+
## Tools
|
|
12
|
+
|
|
13
|
+
| Tool | What it does |
|
|
14
|
+
| ---------------- | ---------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| `anigram_guide` | The scene format, every part that has a drawing, the signal functions. Read first. |
|
|
16
|
+
| `list_scenes` | The built-in sheets. |
|
|
17
|
+
| `get_scene` | A built-in sheet as JSON — the best example to copy. |
|
|
18
|
+
| `validate_scene` | Errors (won't load) and warnings (will run, probably not what you meant). |
|
|
19
|
+
| `write_scene` | Validate and save a `.json` scene file. |
|
|
20
|
+
| `edit_scene` | Add, move, update or remove parts and links in place. |
|
|
21
|
+
| `check_scene` | Is it done? Validate, run the day, and check every line of the scene's `expect` list. |
|
|
22
|
+
| `simulate_scene` | Run a day headless: an hour-by-hour table, every alert, unmet demand. Knobs and switches can be set. |
|
|
23
|
+
| `render_scene` | The sheet at any hour, every flow labelled: a PNG the assistant can look at (default) or an SVG. |
|
|
24
|
+
| `share_link` | A URL that opens the scene live in the browser. The scene travels in the link; nothing is uploaded. |
|
|
25
|
+
|
|
26
|
+
Every tool except `anigram_guide` declares an output schema and returns its
|
|
27
|
+
result as structured content too, so a client can read fields instead of
|
|
28
|
+
parsing text.
|
|
29
|
+
|
|
30
|
+
## Install
|
|
31
|
+
|
|
32
|
+
Once it is on npm, `npx -y anigram-mcp` is all a client needs (see
|
|
33
|
+
[RELEASING.md](../RELEASING.md)). Until then, from a checkout:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
git clone https://github.com/light-vp/Anigram anigram
|
|
37
|
+
cd anigram && npm ci && npm run build:mcp
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Claude Code**
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
claude mcp add anigram -- node /path/to/anigram/mcp/dist/anigram-mcp.mjs
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Claude Desktop, Cursor and others** (`mcpServers` in the client's config):
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"anigram": {
|
|
52
|
+
"command": "node",
|
|
53
|
+
"args": ["/path/to/anigram/mcp/dist/anigram-mcp.mjs"]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The built file is self-contained: React, the solver and the MCP SDK are
|
|
60
|
+
bundled in, so it runs anywhere Node 20+ does. Beside it sit the PNG
|
|
61
|
+
renderer ([resvg](https://github.com/linebender/resvg) as wasm, no browser or
|
|
62
|
+
native build) and the Inter font it draws text with.
|
|
63
|
+
|
|
64
|
+
## Try
|
|
65
|
+
|
|
66
|
+
> Draw a narrowboat with solar panels on the roof, a leisure battery and the
|
|
67
|
+
> engine's alternator as backup. Check the battery runs flat overnight and the
|
|
68
|
+
> engine takes over, then give me a link.
|
|
69
|
+
|
|
70
|
+
The assistant reads the guide, writes the file, simulates a day, adjusts the
|
|
71
|
+
numbers until the story holds, and hands back a link.
|
|
72
|
+
[`examples/narrowboat.json`](../examples/narrowboat.json) is that scene.
|
|
73
|
+
|
|
74
|
+
## Settings
|
|
75
|
+
|
|
76
|
+
- Paths are relative to the directory the client starts the server in, and
|
|
77
|
+
must stay inside it: `../` and absolute paths elsewhere, and symlinks out of
|
|
78
|
+
it, are refused. It only reads `.json` files, and writes `.json`, `.svg`
|
|
79
|
+
and `.png`.
|
|
80
|
+
- `ANIGRAM_ALLOW_PATHS` lets it use more folders, separated like `PATH`
|
|
81
|
+
(`:` on macOS and Linux, `;` on Windows).
|
|
82
|
+
- `ANIGRAM_APP_URL` points `share_link` at another copy of the app
|
|
83
|
+
(default `https://anigram.vaibhav.co.uk/`), e.g. `http://localhost:5173/`
|
|
84
|
+
while you run `npm run dev`.
|
|
85
|
+
|
|
86
|
+
MIT licensed.
|
package/package.json
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anigram-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for Anigram: let a coding assistant write, validate, simulate and draw living engineering diagrams.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Vaibhav Patel",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"anigram-mcp": "dist/anigram-mcp.mjs"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=20"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"mcp",
|
|
19
|
+
"model-context-protocol",
|
|
20
|
+
"diagrams",
|
|
21
|
+
"simulation",
|
|
22
|
+
"engineering",
|
|
23
|
+
"svg"
|
|
24
|
+
],
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/light-vp/Anigram.git",
|
|
28
|
+
"directory": "mcp"
|
|
29
|
+
}
|
|
30
|
+
}
|