@plurnk/plurnk-mcp 1.20.0 → 1.21.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/SPEC.md +1 -1
- package/docs/mcp.md +36 -48
- package/package.json +4 -4
package/SPEC.md
CHANGED
|
@@ -265,7 +265,7 @@ remain in the linked input-contract documents. With tools, the runtime declares
|
|
|
265
265
|
complete effective menu in the family Summary and survey row
|
|
266
266
|
({§scheme-catalog-aside}). Without authored purpose the menu stands alone. The tool
|
|
267
267
|
doc's Summary section IS the invocation form
|
|
268
|
-
|
|
268
|
+
```` ```server (tool) <!-- one-liner --> ````, so the discovery row teaches the
|
|
269
269
|
call ({§tools-resource-materialization}). Summary companions expand `${NAME}`
|
|
270
270
|
references like every other companion.
|
|
271
271
|
|
package/docs/mcp.md
CHANGED
|
@@ -1,82 +1,70 @@
|
|
|
1
1
|
# mcp
|
|
2
2
|
|
|
3
3
|
An MCP server publishes tools, and an enabled server is a runtime here under
|
|
4
|
-
its own name.
|
|
5
|
-
|
|
4
|
+
its own name. A tool runs the way `sh` or `node` runs: a fenced call names the
|
|
5
|
+
server and the tool, and its body is the tool's JSON arguments.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```files (list_directory) <!-- server (tool) -->
|
|
8
8
|
{"path": "/absolute/project/path"}
|
|
9
|
-
|
|
9
|
+
```
|
|
10
10
|
|
|
11
11
|
One fenced call runs one tool, and the result is that call's output.
|
|
12
12
|
`worker:///_plurnk/tools/<server>.md` lists a server's invocations and their
|
|
13
13
|
required top-level inputs; each invocation links to the complete raw input
|
|
14
|
-
schema
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- The turn-0 catalog lists every enabled server's document. Prefer a published
|
|
19
|
-
tool over reimplementing the same capability in `sh` or `node`.
|
|
20
|
-
- The user names a server or a tool that is not listed: `list` shows every
|
|
21
|
-
configured server, including disabled ones and unavailable ones with their
|
|
22
|
-
exact Problem; `enable` turns a configured server on.
|
|
23
|
-
- Nothing configured fits: `discover` inspects a server before anything is
|
|
24
|
-
attached.
|
|
14
|
+
schema. The turn-0 catalog lists every enabled server's document. `list`
|
|
15
|
+
shows every configured server, including disabled ones and unavailable ones
|
|
16
|
+
with their exact Problem; `enable` turns a configured server on; `discover`
|
|
17
|
+
inspects a server before anything is attached.
|
|
25
18
|
|
|
26
19
|
## discover, then add
|
|
27
20
|
|
|
28
21
|
`discover` takes `{"source": "<URL or command line>"}`: the server is
|
|
29
22
|
connected once, its tool list is read, and one inert candidate comes back
|
|
30
|
-
carrying the exact definition to add. Discovery never persists or enables a
|
|
23
|
+
carrying the exact definition to add. Discovery never persists or enables a
|
|
24
|
+
server definition.
|
|
31
25
|
|
|
32
|
-
|
|
26
|
+
```mcp (discover) <!-- inspect before adding -->
|
|
33
27
|
{"source": "npx -y @modelcontextprotocol/server-filesystem /absolute/project/path"}
|
|
34
|
-
|
|
28
|
+
```
|
|
35
29
|
|
|
36
30
|
`add` persists the definition for this workspace, connects, and enables it
|
|
37
|
-
atomically. It is a host effect
|
|
31
|
+
atomically. It is a host effect, admitted under the loop's policy.
|
|
38
32
|
|
|
39
|
-
|
|
33
|
+
```mcp (add)
|
|
40
34
|
{"alias": "files", "definition": {"name": "files", "transport": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/absolute/project/path"]}}
|
|
41
|
-
|
|
35
|
+
```
|
|
42
36
|
|
|
43
|
-
A `stdio` definition carries `command` and optional `args`, `cwd`; an
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
environment, never a pasted secret.
|
|
37
|
+
A `stdio` definition carries `command` and optional `args`, `cwd`; an `http`
|
|
38
|
+
definition carries `url` and optional `headers`. `tools` narrows the enabled
|
|
39
|
+
tool set and `read` names the tools that are read-only; every other tool keeps
|
|
40
|
+
the conservative `host` effect. A credential is a symbolic reference such as
|
|
41
|
+
`"${TOKEN}"` to the operator's environment, never a pasted secret.
|
|
49
42
|
|
|
50
|
-
Local servers start in their workspace's server directory under
|
|
51
|
-
(normally `~/.local/state/plurnk`), not in the project
|
|
52
|
-
project inputs and outputs, or
|
|
53
|
-
State survives reconnects and disable/remove; a discovery
|
|
54
|
-
directory removed after it closes. This is file
|
|
43
|
+
Local servers start in their workspace's server directory under
|
|
44
|
+
`XDG_STATE_HOME` (normally `~/.local/state/plurnk`), not in the project:
|
|
45
|
+
project inputs and outputs are absolute paths, or `cwd` is set explicitly when
|
|
46
|
+
a server requires it. State survives reconnects and disable/remove; a discovery
|
|
47
|
+
probe uses a temporary directory removed after it closes. This is file
|
|
48
|
+
placement, not a sandbox.
|
|
55
49
|
|
|
56
50
|
## Environment
|
|
57
51
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
````env (add)
|
|
63
|
-
{"scope":"workspace","alias":"NODE_ENV","definition":{"value":"production"}}
|
|
64
|
-
````
|
|
65
|
-
|
|
66
|
-
A running server keeps its launch environment; `disable` then `enable` restarts
|
|
67
|
-
that server with the current workspace values. No daemon restart is needed.
|
|
52
|
+
Workspace variables, set with the `env` family (`env.md`) before discovering
|
|
53
|
+
or adding a local server, reach every server launch; worker-local overrides do
|
|
54
|
+
not. A running server keeps its launch environment; `disable` then `enable`
|
|
55
|
+
restarts it with the current workspace values, without a daemon restart.
|
|
68
56
|
|
|
69
57
|
## Authorization
|
|
70
58
|
|
|
71
59
|
An `http` server that needs OAuth comes up `authorization-required` with an
|
|
72
|
-
authorization URL.
|
|
73
|
-
|
|
74
|
-
|
|
60
|
+
authorization URL. That step is the user's, from their client; a body carries
|
|
61
|
+
no credentials and the URL is not a resource to READ. Afterwards `enable`
|
|
62
|
+
retries and the tools appear.
|
|
75
63
|
|
|
76
64
|
## Lifecycle
|
|
77
65
|
|
|
78
66
|
`disable` withdraws a server's tools while keeping its definition; `remove`
|
|
79
67
|
deletes a workspace definition. Operator-configured servers
|
|
80
|
-
(`PLURNK_MCP_<server>` in the service environment)
|
|
81
|
-
|
|
82
|
-
reference again
|
|
68
|
+
(`PLURNK_MCP_<server>` in the service environment) are disable-only. The
|
|
69
|
+
family document projects the enabled-tool snapshot: after `enable`, FIND the
|
|
70
|
+
reference again before relying on a tool's signature.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.1",
|
|
4
4
|
"description": "Current Model Context Protocol host module for Plurnk.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@modelcontextprotocol/client": "2.0.0",
|
|
59
|
-
"@plurnk/plurnk-contracts": "1.
|
|
59
|
+
"@plurnk/plurnk-contracts": "1.21.1"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@modelcontextprotocol/conformance": "0.2.0-alpha.11",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"zod": "4.6.5"
|
|
65
65
|
},
|
|
66
66
|
"peerDependencies": {
|
|
67
|
-
"@plurnk/plurnk-execs": "^1.
|
|
68
|
-
"@plurnk/plurnk-schemes": "^1.
|
|
67
|
+
"@plurnk/plurnk-execs": "^1.21.1",
|
|
68
|
+
"@plurnk/plurnk-schemes": "^1.21.1"
|
|
69
69
|
}
|
|
70
70
|
}
|