@vielzeug/codex 1.0.3 → 2.0.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 +46 -107
- package/data/catalog.json +1679 -0
- package/data/llms-full.txt +18997 -31516
- package/data/llms.txt +32 -110
- package/data/manifest.json +8 -0
- package/data/packages/arsenal.json +210 -0
- package/data/packages/assay.json +40 -0
- package/data/packages/clockwork.json +67 -0
- package/data/packages/codex.json +43 -0
- package/data/packages/coins.json +103 -0
- package/data/packages/conduit.json +60 -0
- package/data/packages/courier.json +58 -0
- package/data/packages/dnd.json +75 -0
- package/data/packages/familiar.json +30 -0
- package/data/packages/flux.json +93 -0
- package/data/packages/forge.json +84 -0
- package/data/packages/herald.json +122 -0
- package/data/packages/keymap.json +65 -0
- package/data/packages/ledger.json +54 -0
- package/data/packages/lingua.json +66 -0
- package/data/packages/orbit.json +112 -0
- package/data/packages/ore.json +73 -0
- package/data/packages/prism.json +70 -0
- package/data/packages/pulse.json +58 -0
- package/data/packages/refine.json +12 -0
- package/data/packages/ripple.json +79 -0
- package/data/packages/rune.json +81 -0
- package/data/packages/sandbox.json +39 -0
- package/data/packages/scout.json +60 -0
- package/data/packages/scroll.json +113 -0
- package/data/packages/sourcerer.json +74 -0
- package/data/packages/spell.json +134 -0
- package/data/packages/tempo.json +113 -0
- package/data/packages/vault.json +90 -0
- package/data/packages/ward.json +125 -0
- package/data/packages/wayfinder.json +113 -0
- package/data/refine.json +11752 -0
- package/data/search.json +1437 -0
- package/dist/catalog.js +149 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.js +33 -59
- package/dist/cli.js.map +1 -1
- package/dist/errors.js +0 -14
- package/dist/errors.js.map +1 -1
- package/dist/http.js +54 -96
- package/dist/http.js.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/server.js +4 -9
- package/dist/server.js.map +1 -1
- package/dist/snapshot.js +233 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/tools/index.js +21 -42
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/packages.js +67 -166
- package/dist/tools/packages.js.map +1 -1
- package/dist/tools/refine.js +99 -305
- package/dist/tools/refine.js.map +1 -1
- package/dist/tools/schema.js +8 -8
- package/dist/tools/schema.js.map +1 -1
- package/dist/tools/shared.js +1 -26
- package/dist/tools/shared.js.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/mcp-setup.json +10 -0
- package/package.json +7 -7
- package/data/.cache.json +0 -33
- package/data/vielzeug-data.json +0 -15999
package/README.md
CHANGED
|
@@ -1,142 +1,81 @@
|
|
|
1
1
|
# @vielzeug/codex
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MCP server for Vielzeug package metadata, documentation, public source, REPL examples, and Refine component data.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Install and run
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
**Key exports:** `createServer`, `createServerFromDisk`, `loadData`, `packageMeta`, `validateBundledData`, `startHttpServer`
|
|
13
|
-
|
|
14
|
-
**When to use:** You want AI clients to query Vielzeug docs and package metadata through a compact MCP tool set.
|
|
15
|
-
|
|
16
|
-
**Related:** [@vielzeug/refine](https://vielzeug.dev/refine/) · [@vielzeug/spell](https://vielzeug.dev/spell/)
|
|
17
|
-
|
|
18
|
-
</details>
|
|
7
|
+
```sh
|
|
8
|
+
npx -y @vielzeug/codex
|
|
9
|
+
npx -y @vielzeug/codex --port=3100
|
|
10
|
+
```
|
|
19
11
|
|
|
20
|
-
|
|
12
|
+
Stdio is default. HTTP uses Streamable HTTP on `127.0.0.1`; health endpoint: `http://127.0.0.1:3100/health`.
|
|
21
13
|
|
|
22
|
-
|
|
14
|
+
`mcp-setup.json` ships a machine-readable generic stdio/HTTP setup manifest:
|
|
23
15
|
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"command": "npx",
|
|
19
|
+
"args": ["-y", "@vielzeug/codex"]
|
|
20
|
+
}
|
|
28
21
|
```
|
|
29
22
|
|
|
30
|
-
##
|
|
23
|
+
## Local development
|
|
31
24
|
|
|
32
|
-
|
|
25
|
+
Node 22+ and root workspace setup required:
|
|
33
26
|
|
|
34
27
|
```sh
|
|
35
|
-
|
|
28
|
+
pnpm setup
|
|
29
|
+
cd packages/codex
|
|
30
|
+
pnpm test:unit
|
|
31
|
+
pnpm test:integration
|
|
32
|
+
pnpm dev
|
|
36
33
|
```
|
|
37
34
|
|
|
38
|
-
|
|
35
|
+
`pnpm dev` regenerates an atomic chunked snapshot whenever docs or package inputs change. Use `--debug` to log tool timings and expected failures.
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
npx -y @vielzeug/codex --port 3100
|
|
42
|
-
```
|
|
37
|
+
## Programmatic API
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
```ts
|
|
40
|
+
import { SnapshotCatalog, createMcpServer, loadSnapshot } from '@vielzeug/codex';
|
|
41
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
45
42
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
const snapshot = loadSnapshot();
|
|
44
|
+
const catalog = new SnapshotCatalog(snapshot);
|
|
45
|
+
await createMcpServer(catalog, { version: snapshot.manifest.version }).connect(new StdioServerTransport());
|
|
49
46
|
```
|
|
50
47
|
|
|
51
48
|
## Tools
|
|
52
49
|
|
|
53
|
-
Two tiers: generic tools work for every bundled package; `refine-*` tools expose
|
|
54
|
-
[@vielzeug/refine](https://vielzeug.dev/refine/)'s structured component metadata (Custom
|
|
55
|
-
Elements Manifest data generated from refine's real build output, never hand-duplicated).
|
|
56
|
-
There's no ore/spell/sandbox-specific tooling — `get-docs`, `get-source`, and
|
|
57
|
-
`get-type-signature` already cover those packages accurately; see
|
|
58
|
-
[docs/ore/api.md](https://vielzeug.dev/ore/api), [docs/spell/api.md](https://vielzeug.dev/spell/api),
|
|
59
|
-
and [docs/sandbox/api.md](https://vielzeug.dev/sandbox/api).
|
|
60
|
-
|
|
61
|
-
These tables are generated from the tool registry (`pnpm gen:tool-docs`) — never hand-edit them.
|
|
62
|
-
|
|
63
50
|
<!-- TOOLS:GENERIC:START -->
|
|
64
51
|
| Tool | Input | Description |
|
|
65
52
|
| --- | --- | --- |
|
|
66
|
-
| `list-packages` | — | List
|
|
67
|
-
| `get-package` | `packageSlug` |
|
|
68
|
-
| `get-docs` | `packageSlug`, `page?` | Read
|
|
69
|
-
| `get-source` | `packageSlug` | Read
|
|
70
|
-
| `list-examples` | `packageSlug` | List runnable REPL
|
|
71
|
-
| `get-example` | `exampleId`, `packageSlug` | Read
|
|
72
|
-
| `search-packages` | `query` | Search
|
|
73
|
-
| `get-type-signature` | `slug`, `symbol` |
|
|
53
|
+
| `list-packages` | — | List every Vielzeug package. |
|
|
54
|
+
| `get-package` | `packageSlug` | Read metadata for one package. |
|
|
55
|
+
| `get-docs` | `packageSlug`, `page?` | Read one documentation page as Markdown. |
|
|
56
|
+
| `get-source` | `packageSlug` | Read bundled public source for one package. |
|
|
57
|
+
| `list-examples` | `packageSlug` | List runnable REPL examples for one package. |
|
|
58
|
+
| `get-example` | `exampleId`, `packageSlug` | Read one runnable REPL example. |
|
|
59
|
+
| `search-packages` | `query` | Search package metadata, docs, examples, and source. |
|
|
60
|
+
| `get-type-signature` | `slug`, `symbol` | Read one exported TypeScript declaration. |
|
|
74
61
|
<!-- TOOLS:GENERIC:END -->
|
|
75
62
|
|
|
76
63
|
<!-- TOOLS:REFINE:START -->
|
|
77
64
|
| Tool | Input | Description |
|
|
78
65
|
| --- | --- | --- |
|
|
79
|
-
| `refine-list-components` | — | List
|
|
80
|
-
| `refine-get-component` | `tagName` |
|
|
81
|
-
| `refine-generate-template` | `scenario?`, `tagName` | Generate a
|
|
82
|
-
| `refine-get-tokens` | `filter?` | List
|
|
83
|
-
| `refine-validate-usage` | `html`, `tagName` | Validate
|
|
66
|
+
| `refine-list-components` | — | List bundled Refine web components. |
|
|
67
|
+
| `refine-get-component` | `tagName` | Read one Refine component declaration. |
|
|
68
|
+
| `refine-generate-template` | `scenario?`, `tagName` | Generate a minimal Refine component HTML template. |
|
|
69
|
+
| `refine-get-tokens` | `filter?` | List bundled Refine CSS custom properties. |
|
|
70
|
+
| `refine-validate-usage` | `html`, `tagName` | Validate unknown attributes in one Refine component HTML fragment. |
|
|
84
71
|
<!-- TOOLS:REFINE:END -->
|
|
85
72
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
A failed tool call returns `isError: true` with a single text content block containing
|
|
89
|
-
`{"code": "...", "message": "..."}` — `code` is one of `INVALID_ARG` (bad or missing argument),
|
|
90
|
-
`NOT_FOUND` (unknown slug/tag/symbol/example), or `UNAVAILABLE` (data not bundled, e.g. refine
|
|
91
|
-
CEM metadata when refine wasn't built). Branch on `code` instead of matching `message` text.
|
|
92
|
-
|
|
93
|
-
## HTTP mode
|
|
73
|
+
## Snapshot layout
|
|
94
74
|
|
|
95
|
-
|
|
96
|
-
- Health check: `http://localhost:<port>/health`
|
|
97
|
-
- No authentication and permissive CORS (`Access-Control-Allow-Origin: *`) — any origin reachable from the machine running the server can call every tool. All bundled tools are read-only and side-effect-free (no filesystem writes, no shell/network access beyond serving pre-bundled data), so this is a deliberate trade-off for local developer tooling (editor extensions, browser-based MCP inspectors) rather than a public-facing deployment mode. Do not expose `--port` beyond `localhost` or a trusted network.
|
|
98
|
-
|
|
99
|
-
## Debugging
|
|
100
|
-
|
|
101
|
-
Environment variables for local development (not needed for normal use):
|
|
102
|
-
|
|
103
|
-
| Variable | Effect |
|
|
104
|
-
| --- | --- |
|
|
105
|
-
| `CODEX_DEBUG=1` | Logs every tool call (name, args, timing, and errors) to stderr. |
|
|
106
|
-
| `CODEX_PORT=<port>` | Port used by `pnpm dev` (default `3001`). |
|
|
107
|
-
| `CODEX_FORCE_REGEN=1` | Skips the incremental cache in `prepare:data` — full regeneration. |
|
|
108
|
-
|
|
109
|
-
Local dev loop: `pnpm dev` generates bundled data once, then runs the CLI directly against
|
|
110
|
-
`src/` (via `node --watch`, no build step) alongside a `docs/` watcher that regenerates data on
|
|
111
|
-
change.
|
|
112
|
-
|
|
113
|
-
## Programmatic API
|
|
114
|
-
|
|
115
|
-
`createServerFromDisk()` is the simplest entry point — one call, no arguments:
|
|
116
|
-
|
|
117
|
-
```ts
|
|
118
|
-
import { createServerFromDisk } from '@vielzeug/codex';
|
|
119
|
-
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
120
|
-
|
|
121
|
-
await createServerFromDisk().connect(new StdioServerTransport());
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
For explicit control over data loading:
|
|
125
|
-
|
|
126
|
-
```ts
|
|
127
|
-
import { createServer, loadData } from '@vielzeug/codex';
|
|
128
|
-
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
129
|
-
|
|
130
|
-
await createServer(loadData()).connect(new StdioServerTransport());
|
|
131
|
-
```
|
|
75
|
+
Published `data/` contains one static snapshot: `manifest.json`, lightweight `catalog.json` and `search.json`, optional `refine.json`, and lazy package chunks under `packages/`. Local `pnpm dev` snapshots live under ignored `.dev/` and use `current.json` to select an immutable generation. Pass `--snapshot=<directory>` to load either form.
|
|
132
76
|
|
|
133
77
|
## Documentation
|
|
134
78
|
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
- [Examples](https://vielzeug.dev/codex/examples)
|
|
139
|
-
|
|
140
|
-
## License
|
|
141
|
-
|
|
142
|
-
MIT © [Helmuth Saatkamp](https://github.com/helmuthdu) — part of the [Vielzeug](https://github.com/helmuthdu/vielzeug) monorepo.
|
|
79
|
+
- https://vielzeug.dev/codex/
|
|
80
|
+
- https://vielzeug.dev/codex/usage
|
|
81
|
+
- https://vielzeug.dev/codex/api
|