@procedures/mcp-dev-tools 0.6.0 → 0.8.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/CHANGELOG.md +39 -0
- package/README.md +20 -13
- package/dist/.tsbuildinfo +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/config.js +1 -1
- package/dist/host.d.ts +6 -3
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +10 -8
- package/dist/host.js.map +1 -1
- package/package.json +6 -6
- package/src/config.ts +4 -4
- package/src/host.ts +13 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# @procedures/mcp-dev-tools
|
|
2
2
|
|
|
3
|
+
## 0.8.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3f376af: The root of the files confines each procedure, not only `fs.*` (roadmap R33). `mark --fs-root`, `procedure-server --fs-root` and `MCP_FS_ROOT` start `confineToRoot()` of `@procedures/fs`. Each procedure keeps its paths in the root, or the host refuses it with `FORBIDDEN` and the reason `outside-root`.
|
|
8
|
+
|
|
9
|
+
This change is breaking under a root. The hosts refuse procedures that they ran before: `git.*`, `pnpm.*`, `docker.run`, `docker.build`, `docker.compose.*`, a call of `shell.run`, and each procedure that reaches files without `metadata.fsRoot`. `lib.scan` of a workspace outside the root gives `FORBIDDEN`, not a warning. Without a root, nothing changes. The list of the MCP tools does not change.
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [4b09a03]
|
|
14
|
+
- Updated dependencies [4b09a03]
|
|
15
|
+
- Updated dependencies [aa6e3aa]
|
|
16
|
+
- Updated dependencies [698e24d]
|
|
17
|
+
- Updated dependencies [4b09a03]
|
|
18
|
+
- Updated dependencies [600c497]
|
|
19
|
+
- Updated dependencies [7c2e7f7]
|
|
20
|
+
- Updated dependencies [90ea741]
|
|
21
|
+
- Updated dependencies [90ea741]
|
|
22
|
+
- Updated dependencies [c4cfa34]
|
|
23
|
+
- Updated dependencies [d25805a]
|
|
24
|
+
- @procedures/client@0.8.0
|
|
25
|
+
- @procedures/fs@0.8.0
|
|
26
|
+
- @procedures/bundle-mcp@0.8.0
|
|
27
|
+
- @procedures/mcp-server@0.8.0
|
|
28
|
+
- @procedures/compiler@0.8.0
|
|
29
|
+
|
|
30
|
+
## 0.7.0
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- Updated dependencies [841d083]
|
|
35
|
+
- Updated dependencies [389b054]
|
|
36
|
+
- @procedures/client@0.7.0
|
|
37
|
+
- @procedures/bundle-mcp@0.7.0
|
|
38
|
+
- @procedures/fs@0.7.0
|
|
39
|
+
- @procedures/mcp-server@0.7.0
|
|
40
|
+
- @procedures/compiler@0.7.0
|
|
41
|
+
|
|
3
42
|
## 0.6.0
|
|
4
43
|
|
|
5
44
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -45,30 +45,37 @@ Claude Code starts the server once for each session. After a rebuild, restart th
|
|
|
45
45
|
| `MCP_READ_ONLY` | `false` | With `true`, the tools are only the procedures that change nothing |
|
|
46
46
|
| `MCP_HTTP_PORT`, `MCP_HTTP_HOST`, `MCP_HTTP_TOKEN` | not set | The server uses Streamable HTTP on this port, not stdio. The host is `127.0.0.1` by default. |
|
|
47
47
|
| `MCP_PROGRAM_CHECK` | `true` | With `false`, a program starts without the check before the run |
|
|
48
|
-
| `MCP_FS_ROOT` | not set | The
|
|
48
|
+
| `MCP_FS_ROOT` | not set | The root of the files: each tool keeps its paths in this folder, or the host refuses it. Refer to "The root of the files". |
|
|
49
49
|
|
|
50
50
|
`mark mcp` starts the same server. Its flags replace the variables: `--bundles`, `--tool-timeout`, `--read-only`, `--http`, `--host`, `--token` and `--fs-root`.
|
|
51
51
|
|
|
52
52
|
The server serves no remote events (`documentation/EVENTS.md`). Its transport carries only MCP, and `events.subscribe` is not a tool. Thus the host has no variable for the topics.
|
|
53
53
|
|
|
54
|
-
## The root of the
|
|
54
|
+
## The root of the files
|
|
55
55
|
|
|
56
|
-
With `MCP_FS_ROOT` (or `mark mcp --fs-root <folder>`), the host confines each
|
|
56
|
+
With `MCP_FS_ROOT` (or `mark mcp --fs-root <folder>`), the host confines each tool to the folder (roadmap R33):
|
|
57
57
|
|
|
58
|
-
- The host starts `
|
|
59
|
-
-
|
|
60
|
-
- A tool
|
|
61
|
-
- A path outside the root gives `FORBIDDEN` with the reason `outside-root`. A relative path starts at the root.
|
|
58
|
+
- The host starts `confineToRoot()` of `@procedures/fs` after it builds its registry. The function replaces handlers, and it adds no procedure.
|
|
59
|
+
- The list of the tools and `tools.snapshot.txt` do not change. The host refuses some tools under a root.
|
|
60
|
+
- A tool keeps its paths in the root. The host examines the path inputs of its rules (`metadata.fsRoot`) before it starts. The nested `fs.*` calls are confined too.
|
|
61
|
+
- A path outside the root gives `FORBIDDEN` with the reason `outside-root`. A relative path starts at the root. A working folder without a value is the root.
|
|
62
|
+
- The host refuses each tool that the root cannot confine, with the same error. At the start, it writes the refused procedures to stderr.
|
|
62
63
|
- The host does not start when the folder does not exist.
|
|
63
64
|
|
|
64
|
-
The
|
|
65
|
+
The tools of `bundle-mcp` under a root:
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
| Tools | Under a root |
|
|
68
|
+
|---|---|
|
|
69
|
+
| `cue.*` | Confined: `cwd` |
|
|
70
|
+
| `lib.scan`, `lib.graph`, `lib.audit`, `lib.rename` | Confined: `rootPath`. Their nested git calls are refused, and `lib.scan` gives a warning. |
|
|
71
|
+
| `procedure.new` | Confined: `path` |
|
|
72
|
+
| `sqlite.*`, `logs.*` | Confined: `dbPath`, which a call must give, or `:memory:` |
|
|
73
|
+
| `docker.ps`, `docker.logs`, `docker.stop`, `docker.rm`, `docker.images`, `docker.inspect`, `docker.pull`, `docker.tag`, `docker.volume.*`, `docker.network.*` | Confined: `cwd`. Docker runs in a folder of the root. |
|
|
74
|
+
| `docker.run`, `docker.exec`, `docker.build`, `docker.compose.*` | Refused: a volume, a compose file or a Dockerfile reaches host folders, or runs a program |
|
|
75
|
+
| `lib.new`, `vitest.run`, `vitest.coverage` | Refused: they start code of the project |
|
|
76
|
+
| `client.*`, `json.*`, `yaml.*`, `mongo.*`, `program.*`, the other `procedure.*` tools | Unchanged: they reach no file |
|
|
70
77
|
|
|
71
|
-
|
|
78
|
+
The rules and the table of all the procedures are in [CAPABILITIES-2026-10.md](../documentation/CAPABILITIES-2026-10.md#the-root-of-the-files-roadmap-r33).
|
|
72
79
|
|
|
73
80
|
## How it selects the tools
|
|
74
81
|
|