@savvy-web/mcp 0.2.0 → 0.2.1
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 +58 -0
- package/package.json +2 -1
- package/resources/content/manifest.json +23 -23
package/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# @savvy-web/mcp
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@savvy-web/mcp)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
The `savvy-mcp` [Model Context Protocol](https://modelcontextprotocol.io/) server. It serves [Silk Suite](https://github.com/savvy-web/systems) tooling and library knowledge to coding agents as structured tools and a curated documentation corpus, so an agent can read workspace facts and Silk docs instead of parsing console output or guessing.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install --save-dev @savvy-web/mcp
|
|
12
|
+
# or
|
|
13
|
+
pnpm add -D @savvy-web/mcp
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The Silk Suite Claude Code plugins spawn this server for you, so you rarely install it directly. Installing [`@savvy-web/silk`](https://www.npmjs.com/package/@savvy-web/silk) also brings it in.
|
|
17
|
+
|
|
18
|
+
## Quick start
|
|
19
|
+
|
|
20
|
+
The server speaks MCP over stdio and is meant to be spawned by an MCP client. A client declares it like this:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"savvy-mcp": {
|
|
26
|
+
"command": "savvy-mcp",
|
|
27
|
+
"args": ["."]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The single positional argument is the project directory; if omitted, the server resolves it from `SAVVY_MCP_PROJECT_DIR`, then `CLAUDE_PROJECT_DIR`, then the current working directory.
|
|
34
|
+
|
|
35
|
+
To exercise it by hand during development, run it through the MCP inspector:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx @modelcontextprotocol/inspector savvy-mcp .
|
|
39
|
+
# opens the inspector UI against a live savvy-mcp instance
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Tools
|
|
43
|
+
|
|
44
|
+
- `workspace_info` — returns a flat, structured projection of the workspace analysis: linked and fixed package groups as name arrays plus resolved registry targets. Backed by the same `silk-effects` analyzer the `savvy` CLI uses.
|
|
45
|
+
- `silk_docs_search` — ranks documents in the corpus against a plain keyword or phrase query and returns hits with a normalized confidence score plus a high/medium/low label. It never returns empty: when nothing matches, it falls back to the priority-ordered top results.
|
|
46
|
+
|
|
47
|
+
## Resources
|
|
48
|
+
|
|
49
|
+
The server exposes a curated markdown corpus behind the `silk://` URI scheme:
|
|
50
|
+
|
|
51
|
+
- `silk://catalog` — a single fixed resource listing every document grouped by tier with a "load when …" hint. The agent's mandated first read.
|
|
52
|
+
- `silk://{+path}` — a template resolving any document by its stable id, covering Silk development standards (`silk://standards/<topic>`), per-package API and usage docs (`silk://packages/<pkg>/<topic>`) and conceptual guides (`silk://guides/<slug>`).
|
|
53
|
+
|
|
54
|
+
Per-package API-reference docs under `silk://packages/<pkg>/api/*` are generated from API Extractor models and shipped with the package.
|
|
55
|
+
|
|
56
|
+
## License
|
|
57
|
+
|
|
58
|
+
[MIT](LICENSE)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@savvy-web/mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The savvy MCP server — Silk Suite tooling and library knowledge for coding agents",
|
|
6
6
|
"homepage": "https://github.com/savvy-web/systems/tree/main/packages/mcp",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"!tsconfig.json",
|
|
34
34
|
"!tsdoc.json",
|
|
35
35
|
"547.js",
|
|
36
|
+
"README.md",
|
|
36
37
|
"bin/savvy-mcp.js",
|
|
37
38
|
"index.d.ts",
|
|
38
39
|
"index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"packages/rslib-builder/overview"
|
|
21
21
|
],
|
|
22
22
|
"uri": "silk://guides/api-docs-from-api-extractor",
|
|
23
|
-
"lastModified": "2026-06-
|
|
23
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"id": "guides/building-a-github-action",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"standards/api-model-pipeline"
|
|
43
43
|
],
|
|
44
44
|
"uri": "silk://guides/building-a-github-action",
|
|
45
|
-
"lastModified": "2026-06-
|
|
45
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"id": "guides/choosing-a-builder",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"packages/rslib-builder/overview"
|
|
63
63
|
],
|
|
64
64
|
"uri": "silk://guides/choosing-a-builder",
|
|
65
|
-
"lastModified": "2026-06-
|
|
65
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
"id": "guides/llm-friendly-json-schemas",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"packages/mcp/resource-taxonomy"
|
|
83
83
|
],
|
|
84
84
|
"uri": "silk://guides/llm-friendly-json-schemas",
|
|
85
|
-
"lastModified": "2026-06-
|
|
85
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"id": "packages/cli/command-tree",
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"packages/silk/install-and-setup"
|
|
104
104
|
],
|
|
105
105
|
"uri": "silk://packages/cli/command-tree",
|
|
106
|
-
"lastModified": "2026-06-
|
|
106
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
"id": "packages/cli/init-and-check",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"packages/silk/install-and-setup"
|
|
126
126
|
],
|
|
127
127
|
"uri": "silk://packages/cli/init-and-check",
|
|
128
|
-
"lastModified": "2026-06-
|
|
128
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
"id": "packages/mcp/resource-taxonomy",
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
"packages/silk-effects/"
|
|
146
146
|
],
|
|
147
147
|
"uri": "silk://packages/mcp/resource-taxonomy",
|
|
148
|
-
"lastModified": "2026-06-
|
|
148
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
149
149
|
},
|
|
150
150
|
{
|
|
151
151
|
"id": "packages/rslib-builder/overview",
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
"standards/publishability"
|
|
167
167
|
],
|
|
168
168
|
"uri": "silk://packages/rslib-builder/overview",
|
|
169
|
-
"lastModified": "2026-06-
|
|
169
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
"id": "packages/silk/export-map",
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
"packages/silk/install-and-setup"
|
|
187
187
|
],
|
|
188
188
|
"uri": "silk://packages/silk/export-map",
|
|
189
|
-
"lastModified": "2026-06-
|
|
189
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
190
190
|
},
|
|
191
191
|
{
|
|
192
192
|
"id": "packages/silk/install-and-setup",
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
"packages/cli/init-and-check"
|
|
209
209
|
],
|
|
210
210
|
"uri": "silk://packages/silk/install-and-setup",
|
|
211
|
-
"lastModified": "2026-06-
|
|
211
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
212
212
|
},
|
|
213
213
|
{
|
|
214
214
|
"id": "packages/silk-effects/",
|
|
@@ -231,7 +231,7 @@
|
|
|
231
231
|
"standards/publishability"
|
|
232
232
|
],
|
|
233
233
|
"uri": "silk://packages/silk-effects/",
|
|
234
|
-
"lastModified": "2026-06-
|
|
234
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
235
235
|
},
|
|
236
236
|
{
|
|
237
237
|
"id": "packages/silk-effects/managed-section",
|
|
@@ -253,7 +253,7 @@
|
|
|
253
253
|
"packages/silk-effects/platform-layers"
|
|
254
254
|
],
|
|
255
255
|
"uri": "silk://packages/silk-effects/managed-section",
|
|
256
|
-
"lastModified": "2026-06-
|
|
256
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
257
257
|
},
|
|
258
258
|
{
|
|
259
259
|
"id": "packages/silk-effects/platform-layers",
|
|
@@ -275,7 +275,7 @@
|
|
|
275
275
|
"packages/silk-effects/managed-section"
|
|
276
276
|
],
|
|
277
277
|
"uri": "silk://packages/silk-effects/platform-layers",
|
|
278
|
-
"lastModified": "2026-06-
|
|
278
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
279
279
|
},
|
|
280
280
|
{
|
|
281
281
|
"id": "standards/api-model-pipeline",
|
|
@@ -296,7 +296,7 @@
|
|
|
296
296
|
"packages/mcp/resource-taxonomy"
|
|
297
297
|
],
|
|
298
298
|
"uri": "silk://standards/api-model-pipeline",
|
|
299
|
-
"lastModified": "2026-06-
|
|
299
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
300
300
|
},
|
|
301
301
|
{
|
|
302
302
|
"id": "standards/catalog-usage",
|
|
@@ -317,7 +317,7 @@
|
|
|
317
317
|
"standards/publishability"
|
|
318
318
|
],
|
|
319
319
|
"uri": "silk://standards/catalog-usage",
|
|
320
|
-
"lastModified": "2026-06-
|
|
320
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
321
321
|
},
|
|
322
322
|
{
|
|
323
323
|
"id": "standards/changeset-discipline",
|
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
"standards/publishability"
|
|
340
340
|
],
|
|
341
341
|
"uri": "silk://standards/changeset-discipline",
|
|
342
|
-
"lastModified": "2026-06-
|
|
342
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
343
343
|
},
|
|
344
344
|
{
|
|
345
345
|
"id": "standards/changeset-format",
|
|
@@ -359,7 +359,7 @@
|
|
|
359
359
|
"standards/changeset-discipline"
|
|
360
360
|
],
|
|
361
361
|
"uri": "silk://standards/changeset-format",
|
|
362
|
-
"lastModified": "2026-06-
|
|
362
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
363
363
|
},
|
|
364
364
|
{
|
|
365
365
|
"id": "standards/commit-contract",
|
|
@@ -381,7 +381,7 @@
|
|
|
381
381
|
"standards/changeset-discipline"
|
|
382
382
|
],
|
|
383
383
|
"uri": "silk://standards/commit-contract",
|
|
384
|
-
"lastModified": "2026-06-
|
|
384
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
385
385
|
},
|
|
386
386
|
{
|
|
387
387
|
"id": "standards/dependency-conventions",
|
|
@@ -402,7 +402,7 @@
|
|
|
402
402
|
"standards/catalog-usage"
|
|
403
403
|
],
|
|
404
404
|
"uri": "silk://standards/dependency-conventions",
|
|
405
|
-
"lastModified": "2026-06-
|
|
405
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
406
406
|
},
|
|
407
407
|
{
|
|
408
408
|
"id": "standards/linting-conventions",
|
|
@@ -422,7 +422,7 @@
|
|
|
422
422
|
"standards/test-classification"
|
|
423
423
|
],
|
|
424
424
|
"uri": "silk://standards/linting-conventions",
|
|
425
|
-
"lastModified": "2026-06-
|
|
425
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
426
426
|
},
|
|
427
427
|
{
|
|
428
428
|
"id": "standards/publishability",
|
|
@@ -443,7 +443,7 @@
|
|
|
443
443
|
"standards/catalog-usage"
|
|
444
444
|
],
|
|
445
445
|
"uri": "silk://standards/publishability",
|
|
446
|
-
"lastModified": "2026-06-
|
|
446
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
447
447
|
},
|
|
448
448
|
{
|
|
449
449
|
"id": "standards/semver",
|
|
@@ -463,7 +463,7 @@
|
|
|
463
463
|
"standards/changeset-discipline"
|
|
464
464
|
],
|
|
465
465
|
"uri": "silk://standards/semver",
|
|
466
|
-
"lastModified": "2026-06-
|
|
466
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
467
467
|
},
|
|
468
468
|
{
|
|
469
469
|
"id": "standards/test-classification",
|
|
@@ -483,7 +483,7 @@
|
|
|
483
483
|
"standards/linting-conventions"
|
|
484
484
|
],
|
|
485
485
|
"uri": "silk://standards/test-classification",
|
|
486
|
-
"lastModified": "2026-06-
|
|
486
|
+
"lastModified": "2026-06-02T16:34:22-04:00"
|
|
487
487
|
}
|
|
488
488
|
]
|
|
489
489
|
}
|