@uluops/registry-mcp 0.8.1 → 0.8.2
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 +60 -0
- package/README.md +2 -2
- package/dist/config/limits.d.ts +11 -0
- package/dist/config/limits.d.ts.map +1 -0
- package/dist/config/limits.js +11 -0
- package/dist/config/limits.js.map +1 -0
- package/dist/config/tool-registry.d.ts.map +1 -1
- package/dist/config/tool-registry.js +39 -29
- package/dist/config/tool-registry.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -8
- package/dist/index.js.map +1 -1
- package/dist/types/mcp.d.ts +4 -4
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/types/server.d.ts +12 -8
- package/dist/types/server.d.ts.map +1 -1
- package/dist/utils/tool-handler.d.ts.map +1 -1
- package/dist/utils/tool-handler.js +27 -2
- package/dist/utils/tool-handler.js.map +1 -1
- package/package.json +2 -2
- package/tool-policies.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.8.2] - 2026-09-24
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **An unknown name in `fields` no longer reports a completed write as failed** (tracker
|
|
10
|
+
`14baaacc`). The RG1 check (0.8.0) validates `fields` against the *response*, so it runs after
|
|
11
|
+
the SDK call — for a write tool the mutation had already committed when the error came back.
|
|
12
|
+
Observed 2026-09-24: `retranslate_definition` with `fields: [..., "promptHash"]` rewrote the
|
|
13
|
+
stored `runtime_md` and returned "Unknown field(s) in 'fields'"; the retry then correctly said
|
|
14
|
+
`changed: false`, which read as "nothing happened". A caller retrying a non-idempotent write
|
|
15
|
+
(`create_definition`, `publish_definition`) on that error would apply it twice.
|
|
16
|
+
- **Behaviour change, write tools only** (the 12 the security tool registry declares
|
|
17
|
+
`sideEffects: 'write'`): an unknown field returns a success response — the known fields
|
|
18
|
+
projected (the full result when none are known) in `content[0]`, and a `warning` naming the
|
|
19
|
+
unknown fields and the valid set in `content[1]`. `content[0]` keeps its meaning, so clients
|
|
20
|
+
that parse the first content item are unaffected.
|
|
21
|
+
- **Read tools unchanged:** unknown fields are still rejected with the valid set listed —
|
|
22
|
+
nothing happened, so rejecting is safe, and RG1's reason (silently dropped fields returned
|
|
23
|
+
rows with no identity) still holds.
|
|
24
|
+
- The test derives the write set from `toolRegistry` rather than listing names, so a new write
|
|
25
|
+
tool is covered by construction; it failed for all 12 against 0.8.1.
|
|
26
|
+
- **The bundled `tool-policies.json` is loaded — it never was.** It shipped in `files`, but
|
|
27
|
+
`src/index.ts` never passed `toolPoliciesPath`, and mcp-secure-server's default lookup
|
|
28
|
+
(`TOOL_POLICIES_PATH` env → `<cwd>/tool-policies.json` → `~/.config/…`) cannot find it under an
|
|
29
|
+
MCP host whose cwd is the user's project. None of its relaxations were ever in effect: inline
|
|
30
|
+
YAML was pattern-scanned as content, and an 84 KB ADL was refused as "Path traversal detected"
|
|
31
|
+
because its JSON-serialized form contains `\"...\"`, where `..\` matches the traversal
|
|
32
|
+
pattern. Now passed explicitly (`require.resolve('../tool-policies.json')`, as @uluops/ops-mcp
|
|
33
|
+
does). **Behaviour change:** the file's STORAGE-level `yaml` relaxation takes effect — YAML
|
|
34
|
+
content is no longer pattern-scanned at the MCP layer (the registry API's publish-time
|
|
35
|
+
definition safety scanner covers it); non-relaxed fields are still scanned (control: `../` in
|
|
36
|
+
`create_definition.name` stays blocked). Four stale entries removed before loading
|
|
37
|
+
(`create_definition.description`/`tags`, `upgrade_definition.source_format`,
|
|
38
|
+
`record_execution.idempotency_key` — fields those tools do not accept); a new
|
|
39
|
+
`tool-policy-fields.test.ts` binds the file to the input shapes.
|
|
40
|
+
- **Per-tool size caps re-derived** (`tool-registry.ts`). mcp-secure-server evaluates
|
|
41
|
+
`maxEgressBytes` at REQUEST time as `argsBytes × 16`, so every tool whose egress was below
|
|
42
|
+
16 × `maxArgsSize` had egress/16 as its real argument cap — observed: `set_default_type("workflow")`
|
|
43
|
+
refused (18 B × 16 > 256) while `"agent"` passed; `validate_definition` capped near 6.4 KB;
|
|
44
|
+
`create`/`update`/`update_and_publish` near 64 KB; `record_execution` and `delete_definition` at
|
|
45
|
+
640 B. Every egress is now ≥ 16 × `maxArgsSize`; every tool allows ≥ 1 KB (the universal
|
|
46
|
+
`fields` parameter); the five YAML tools' cap is exactly the shared 500 KB request envelope
|
|
47
|
+
(new `config/limits.ts` `ENVELOPE_BYTES`, also feeding the four stacked envelope settings), so
|
|
48
|
+
the tool gate neither binds first nor sits dead above it. `tool-registry-caps.test.ts` derives
|
|
49
|
+
the rules from the Zod shapes; it failed 29 checks against 0.8.1's registry.
|
|
50
|
+
|
|
51
|
+
### Changed
|
|
52
|
+
|
|
53
|
+
- **mcp-secure-server `0.0.22-security` → `0.0.25-security` (exact pin).** Brings: `maxArgsSize`
|
|
54
|
+
enforced on every tool and measured in UTF-8 bytes (0.0.23), non-object arguments refused
|
|
55
|
+
(0.0.23), registration methods typed as the SDK's own (0.0.24), call-shaped patterns anchored
|
|
56
|
+
against word suffixes (0.0.25). Registration now goes through `registerTool()` /
|
|
57
|
+
`registerResource()` (the SDK marks `tool()` / `resource()` deprecated) via one adapter in
|
|
58
|
+
`src/index.ts`; `McpToolResponse` and the resource types are `type` aliases and
|
|
59
|
+
`ResourceContent` is the SDK's text-xor-blob union (types only, no runtime change).
|
|
60
|
+
- Verified over stdio against a dead registry URL, 0.8.1 vs this build:
|
|
61
|
+
`set_default_type("workflow")` and an inline 84 KB `validate_definition` now pass the security
|
|
62
|
+
layer (both refused on 0.8.1); `set_default_type` padded past 1 KB and `../` in a non-relaxed
|
|
63
|
+
`name` are still refused.
|
|
64
|
+
|
|
5
65
|
## [0.8.1] - 2026-09-20
|
|
6
66
|
|
|
7
67
|
### Fixed
|
package/README.md
CHANGED
|
@@ -205,7 +205,7 @@ read_resource("registry://definition-types")
|
|
|
205
205
|
|
|
206
206
|
## Rate limiting
|
|
207
207
|
|
|
208
|
-
This server uses [mcp-secure-server](https://github.com/aself101/mcp-secure-server) with configuration tuned for typical harness usage patterns. Source of truth: `src/index.ts` (global)
|
|
208
|
+
This server uses [mcp-secure-server](https://github.com/aself101/mcp-secure-server) with configuration tuned for typical harness usage patterns. Source of truth: `src/index.ts` (global), `src/config/limits.ts` (the shared envelope), `src/config/tool-registry.ts` (per-tool caps and quotas), and `tool-policies.json` (per-tool security level and relaxed fields — loaded explicitly since 0.8.2; `yaml` is not pattern-scanned at this layer, the registry API scans definitions at publish).
|
|
209
209
|
|
|
210
210
|
| Setting | Value | Notes |
|
|
211
211
|
|---------|-------|-------|
|
|
@@ -219,7 +219,7 @@ This server uses [mcp-secure-server](https://github.com/aself101/mcp-secure-serv
|
|
|
219
219
|
| Burst window | 5000 ms | |
|
|
220
220
|
| Automation detection | Disabled | The calling harness is trusted automation |
|
|
221
221
|
|
|
222
|
-
The four size settings are stacked ceilings — a rejection names whichever fires first, so they
|
|
222
|
+
The four size settings are stacked ceilings — a rejection names whichever fires first, so they share one value, `ENVELOPE_BYTES`; the per-tool `maxArgsSize` in `tool-registry.ts` is the tool-scoped gate beneath them (never above; exactly at it for the YAML tools). Each tool's `maxEgressBytes` is kept ≥ 16 × its `maxArgsSize`, because mcp-secure-server checks egress at request time as argument bytes × 16.
|
|
223
223
|
|
|
224
224
|
Per-tool quotas are configured in `src/config/tool-registry.ts`. Read-heavy tools (list, get, search) allow up to 240 req/min. Write tools (create, update, publish) are 30–60 req/min.
|
|
225
225
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The request envelope: one byte ceiling shared by all four stacked size settings
|
|
3
|
+
* (maxMessageSize, maxStringLength, maxParamBytes, suspiciousMessageSize) in src/index.ts,
|
|
4
|
+
* which apply to every request before any per-tool gate. Per-tool `maxArgsSize` in
|
|
5
|
+
* tool-registry.ts sits BENEATH it: never above (it would be dead — the envelope fires first),
|
|
6
|
+
* and exactly at it for the yaml-bearing tools, whose 500,000-char YAML parameter is the
|
|
7
|
+
* largest legitimate payload, so their tool gate never binds before the envelope.
|
|
8
|
+
* tool-registry-caps.test.ts asserts both.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ENVELOPE_BYTES: number;
|
|
11
|
+
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/config/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,QAAa,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The request envelope: one byte ceiling shared by all four stacked size settings
|
|
3
|
+
* (maxMessageSize, maxStringLength, maxParamBytes, suspiciousMessageSize) in src/index.ts,
|
|
4
|
+
* which apply to every request before any per-tool gate. Per-tool `maxArgsSize` in
|
|
5
|
+
* tool-registry.ts sits BENEATH it: never above (it would be dead — the envelope fires first),
|
|
6
|
+
* and exactly at it for the yaml-bearing tools, whose 500,000-char YAML parameter is the
|
|
7
|
+
* largest legitimate payload, so their tool gate never binds before the envelope.
|
|
8
|
+
* tool-registry-caps.test.ts asserts both.
|
|
9
|
+
*/
|
|
10
|
+
export const ENVELOPE_BYTES = 500 * 1024;
|
|
11
|
+
//# sourceMappingURL=limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/config/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/config/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/config/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAgBlD,eAAO,MAAM,YAAY,EAAE,QAAQ,EAqXlC,CAAC"}
|
|
@@ -4,8 +4,18 @@
|
|
|
4
4
|
* Per-tool security policies for the MCP server.
|
|
5
5
|
* Required by mcp-secure-server's semantic validation layer.
|
|
6
6
|
*/
|
|
7
|
+
import { ENVELOPE_BYTES } from './limits.js';
|
|
7
8
|
const KB = 1024;
|
|
8
9
|
const MB = 1024 * KB;
|
|
10
|
+
// SIZE CAPS — re-derived 2026-09-24 for mcp-secure-server 0.0.25 (tracker 14baaacc follow-up).
|
|
11
|
+
// Layer 4 evaluates maxEgressBytes at REQUEST time as argsBytes * 16, so any maxEgressBytes
|
|
12
|
+
// below 16 * maxArgsSize silently made egress/16 the real argument cap (set_default_type
|
|
13
|
+
// "workflow" was refused; validate_definition topped out near 6.4 KB). Every egress is now
|
|
14
|
+
// >= 16 * maxArgsSize. Since 0.0.23 maxArgsSize itself is enforced on every tool (UTF-8 bytes
|
|
15
|
+
// of the JSON arguments): the five yaml-bearing tools get exactly ENVELOPE_BYTES (config/limits.ts) —
|
|
16
|
+
// the shared 500 KB request envelope, so the tool gate never binds before it and never sits
|
|
17
|
+
// dead above it; every tool gets at least 1 KB for the universal `fields` parameter. tool-registry-caps.test.ts derives both
|
|
18
|
+
// rules from the Zod shapes and fails on any regression.
|
|
9
19
|
export const toolRegistry = [
|
|
10
20
|
// ============================================================================
|
|
11
21
|
// Session Management
|
|
@@ -13,8 +23,8 @@ export const toolRegistry = [
|
|
|
13
23
|
{
|
|
14
24
|
name: 'set_default_type',
|
|
15
25
|
sideEffects: 'read',
|
|
16
|
-
maxArgsSize:
|
|
17
|
-
maxEgressBytes:
|
|
26
|
+
maxArgsSize: 1 * KB,
|
|
27
|
+
maxEgressBytes: 16 * (1 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
18
28
|
quotaPerMinute: 30,
|
|
19
29
|
quotaPerHour: 200,
|
|
20
30
|
},
|
|
@@ -57,15 +67,15 @@ export const toolRegistry = [
|
|
|
57
67
|
name: 'resolve_alias',
|
|
58
68
|
sideEffects: 'read',
|
|
59
69
|
maxArgsSize: 10 * KB,
|
|
60
|
-
maxEgressBytes: 10 * KB,
|
|
70
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
61
71
|
quotaPerMinute: 240,
|
|
62
72
|
quotaPerHour: 5000,
|
|
63
73
|
},
|
|
64
74
|
{
|
|
65
75
|
name: 'validate_definition',
|
|
66
76
|
sideEffects: 'read',
|
|
67
|
-
maxArgsSize:
|
|
68
|
-
maxEgressBytes:
|
|
77
|
+
maxArgsSize: ENVELOPE_BYTES,
|
|
78
|
+
maxEgressBytes: 16 * ENVELOPE_BYTES, // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
69
79
|
quotaPerMinute: 60,
|
|
70
80
|
quotaPerHour: 1000,
|
|
71
81
|
},
|
|
@@ -83,16 +93,16 @@ export const toolRegistry = [
|
|
|
83
93
|
{
|
|
84
94
|
name: 'create_definition',
|
|
85
95
|
sideEffects: 'write',
|
|
86
|
-
maxArgsSize:
|
|
87
|
-
maxEgressBytes:
|
|
96
|
+
maxArgsSize: ENVELOPE_BYTES,
|
|
97
|
+
maxEgressBytes: 16 * ENVELOPE_BYTES, // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
88
98
|
quotaPerMinute: 60,
|
|
89
99
|
quotaPerHour: 1000,
|
|
90
100
|
},
|
|
91
101
|
{
|
|
92
102
|
name: 'update_definition',
|
|
93
103
|
sideEffects: 'write',
|
|
94
|
-
maxArgsSize:
|
|
95
|
-
maxEgressBytes:
|
|
104
|
+
maxArgsSize: ENVELOPE_BYTES,
|
|
105
|
+
maxEgressBytes: 16 * ENVELOPE_BYTES, // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
96
106
|
quotaPerMinute: 60,
|
|
97
107
|
quotaPerHour: 1000,
|
|
98
108
|
},
|
|
@@ -108,7 +118,7 @@ export const toolRegistry = [
|
|
|
108
118
|
name: 'deprecate_definition',
|
|
109
119
|
sideEffects: 'write',
|
|
110
120
|
maxArgsSize: 20 * KB,
|
|
111
|
-
maxEgressBytes:
|
|
121
|
+
maxEgressBytes: 16 * (20 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
112
122
|
quotaPerMinute: 30,
|
|
113
123
|
quotaPerHour: 500,
|
|
114
124
|
},
|
|
@@ -124,15 +134,15 @@ export const toolRegistry = [
|
|
|
124
134
|
name: 'delete_definition',
|
|
125
135
|
sideEffects: 'write',
|
|
126
136
|
maxArgsSize: 10 * KB,
|
|
127
|
-
maxEgressBytes: 10 * KB,
|
|
137
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
128
138
|
quotaPerMinute: 10,
|
|
129
139
|
quotaPerHour: 100,
|
|
130
140
|
},
|
|
131
141
|
{
|
|
132
142
|
name: 'update_and_publish',
|
|
133
143
|
sideEffects: 'write',
|
|
134
|
-
maxArgsSize:
|
|
135
|
-
maxEgressBytes:
|
|
144
|
+
maxArgsSize: ENVELOPE_BYTES,
|
|
145
|
+
maxEgressBytes: 16 * ENVELOPE_BYTES, // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
136
146
|
quotaPerMinute: 30,
|
|
137
147
|
quotaPerHour: 500,
|
|
138
148
|
},
|
|
@@ -180,7 +190,7 @@ export const toolRegistry = [
|
|
|
180
190
|
name: 'get_execution_stats',
|
|
181
191
|
sideEffects: 'read',
|
|
182
192
|
maxArgsSize: 10 * KB,
|
|
183
|
-
maxEgressBytes:
|
|
193
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
184
194
|
quotaPerMinute: 120,
|
|
185
195
|
quotaPerHour: 2000,
|
|
186
196
|
},
|
|
@@ -199,7 +209,7 @@ export const toolRegistry = [
|
|
|
199
209
|
name: 'fork_definition',
|
|
200
210
|
sideEffects: 'write',
|
|
201
211
|
maxArgsSize: 20 * KB,
|
|
202
|
-
maxEgressBytes:
|
|
212
|
+
maxEgressBytes: 16 * (20 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
203
213
|
quotaPerMinute: 30,
|
|
204
214
|
quotaPerHour: 500,
|
|
205
215
|
},
|
|
@@ -207,7 +217,7 @@ export const toolRegistry = [
|
|
|
207
217
|
name: 'is_forkable',
|
|
208
218
|
sideEffects: 'read',
|
|
209
219
|
maxArgsSize: 10 * KB,
|
|
210
|
-
maxEgressBytes: 10 * KB,
|
|
220
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
211
221
|
quotaPerMinute: 120,
|
|
212
222
|
quotaPerHour: 2000,
|
|
213
223
|
},
|
|
@@ -215,7 +225,7 @@ export const toolRegistry = [
|
|
|
215
225
|
name: 'get_fork_lineage',
|
|
216
226
|
sideEffects: 'read',
|
|
217
227
|
maxArgsSize: 10 * KB,
|
|
218
|
-
maxEgressBytes:
|
|
228
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
219
229
|
quotaPerMinute: 120,
|
|
220
230
|
quotaPerHour: 2000,
|
|
221
231
|
},
|
|
@@ -223,7 +233,7 @@ export const toolRegistry = [
|
|
|
223
233
|
name: 'record_execution',
|
|
224
234
|
sideEffects: 'write',
|
|
225
235
|
maxArgsSize: 50 * KB,
|
|
226
|
-
maxEgressBytes:
|
|
236
|
+
maxEgressBytes: 16 * (50 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
227
237
|
quotaPerMinute: 120,
|
|
228
238
|
quotaPerHour: 2000,
|
|
229
239
|
},
|
|
@@ -238,8 +248,8 @@ export const toolRegistry = [
|
|
|
238
248
|
{
|
|
239
249
|
name: 'upgrade_definition',
|
|
240
250
|
sideEffects: 'write',
|
|
241
|
-
maxArgsSize:
|
|
242
|
-
maxEgressBytes:
|
|
251
|
+
maxArgsSize: ENVELOPE_BYTES,
|
|
252
|
+
maxEgressBytes: 16 * ENVELOPE_BYTES, // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
243
253
|
quotaPerMinute: 30,
|
|
244
254
|
quotaPerHour: 500,
|
|
245
255
|
},
|
|
@@ -247,7 +257,7 @@ export const toolRegistry = [
|
|
|
247
257
|
name: 'get_model',
|
|
248
258
|
sideEffects: 'read',
|
|
249
259
|
maxArgsSize: 10 * KB,
|
|
250
|
-
maxEgressBytes:
|
|
260
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
251
261
|
quotaPerMinute: 240,
|
|
252
262
|
quotaPerHour: 5000,
|
|
253
263
|
},
|
|
@@ -255,7 +265,7 @@ export const toolRegistry = [
|
|
|
255
265
|
name: 'list_providers',
|
|
256
266
|
sideEffects: 'read',
|
|
257
267
|
maxArgsSize: 10 * KB,
|
|
258
|
-
maxEgressBytes:
|
|
268
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
259
269
|
quotaPerMinute: 240,
|
|
260
270
|
quotaPerHour: 5000,
|
|
261
271
|
},
|
|
@@ -263,7 +273,7 @@ export const toolRegistry = [
|
|
|
263
273
|
name: 'list_aliases',
|
|
264
274
|
sideEffects: 'read',
|
|
265
275
|
maxArgsSize: 10 * KB,
|
|
266
|
-
maxEgressBytes:
|
|
276
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
267
277
|
quotaPerMinute: 240,
|
|
268
278
|
quotaPerHour: 5000,
|
|
269
279
|
},
|
|
@@ -271,7 +281,7 @@ export const toolRegistry = [
|
|
|
271
281
|
name: 'get_translator_version',
|
|
272
282
|
sideEffects: 'read',
|
|
273
283
|
maxArgsSize: 10 * KB,
|
|
274
|
-
maxEgressBytes: 10 * KB,
|
|
284
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
275
285
|
quotaPerMinute: 240,
|
|
276
286
|
quotaPerHour: 5000,
|
|
277
287
|
},
|
|
@@ -279,7 +289,7 @@ export const toolRegistry = [
|
|
|
279
289
|
name: 'get_user',
|
|
280
290
|
sideEffects: 'read',
|
|
281
291
|
maxArgsSize: 10 * KB,
|
|
282
|
-
maxEgressBytes:
|
|
292
|
+
maxEgressBytes: 16 * (10 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
283
293
|
quotaPerMinute: 120,
|
|
284
294
|
quotaPerHour: 2000,
|
|
285
295
|
},
|
|
@@ -287,15 +297,15 @@ export const toolRegistry = [
|
|
|
287
297
|
name: 'batch_users',
|
|
288
298
|
sideEffects: 'read',
|
|
289
299
|
maxArgsSize: 20 * KB,
|
|
290
|
-
maxEgressBytes:
|
|
300
|
+
maxEgressBytes: 16 * (20 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
291
301
|
quotaPerMinute: 60,
|
|
292
302
|
quotaPerHour: 1000,
|
|
293
303
|
},
|
|
294
304
|
{
|
|
295
305
|
name: 'list_languages',
|
|
296
306
|
sideEffects: 'read',
|
|
297
|
-
maxArgsSize:
|
|
298
|
-
maxEgressBytes:
|
|
307
|
+
maxArgsSize: 1 * KB,
|
|
308
|
+
maxEgressBytes: 16 * (1 * KB), // = 16 x maxArgsSize — Layer 4 checks argsBytes*16 at request time
|
|
299
309
|
quotaPerMinute: 240,
|
|
300
310
|
quotaPerHour: 5000,
|
|
301
311
|
},
|
|
@@ -329,7 +339,7 @@ export const toolRegistry = [
|
|
|
329
339
|
{
|
|
330
340
|
name: 'get_ecosystem_overview',
|
|
331
341
|
sideEffects: 'read',
|
|
332
|
-
maxArgsSize:
|
|
342
|
+
maxArgsSize: 1 * KB,
|
|
333
343
|
maxEgressBytes: 100 * KB,
|
|
334
344
|
quotaPerMinute: 30,
|
|
335
345
|
quotaPerHour: 500,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/config/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/config/tool-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAyBH,iBAAe,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA4LnC;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,13 +7,22 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { realpathSync } from 'node:fs';
|
|
9
9
|
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { createRequire } from 'node:module';
|
|
10
11
|
import { SecureMcpServer } from 'mcp-secure-server';
|
|
11
12
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
12
13
|
import { RegistryClient } from '@uluops/registry-sdk';
|
|
13
14
|
import { loadConfig, validateConfig, VERSION } from './config/index.js';
|
|
14
15
|
import { toolRegistry } from './config/tool-registry.js';
|
|
16
|
+
import { ENVELOPE_BYTES } from './config/limits.js';
|
|
15
17
|
import { registerAllTools } from './tools/index.js';
|
|
16
18
|
import { registerAllResources } from './resources/index.js';
|
|
19
|
+
// The bundled tool-policies.json (shipped in `files`). It MUST be passed explicitly:
|
|
20
|
+
// mcp-secure-server's default lookup is TOOL_POLICIES_PATH -> <cwd>/tool-policies.json ->
|
|
21
|
+
// ~/.config/mcp-secure-server/, and under an MCP host the cwd is the user's project, so
|
|
22
|
+
// through 0.8.1 this file was never loaded and none of its relaxations were in effect.
|
|
23
|
+
// Same resolution as @uluops/ops-mcp.
|
|
24
|
+
const require = createRequire(import.meta.url);
|
|
25
|
+
const TOOL_POLICIES_PATH = require.resolve('../tool-policies.json');
|
|
17
26
|
import { createLogger } from './utils/logger.js';
|
|
18
27
|
async function main() {
|
|
19
28
|
if (process.argv.includes('--version') || process.argv.includes('-v')) {
|
|
@@ -51,23 +60,24 @@ async function main() {
|
|
|
51
60
|
});
|
|
52
61
|
const server = await SecureMcpServer.create(config.server, {
|
|
53
62
|
securityLevel: 'basic',
|
|
63
|
+
toolPoliciesPath: TOOL_POLICIES_PATH,
|
|
54
64
|
maxRequestsPerMinute: 120,
|
|
55
|
-
maxMessageSize:
|
|
65
|
+
maxMessageSize: ENVELOPE_BYTES,
|
|
56
66
|
// Raise the per-string-parameter cap from the secure-server default (5000)
|
|
57
67
|
// to the message ceiling. Definition tools (validate/create/update) carry
|
|
58
68
|
// full YAML / runtime markdown in a single string field that routinely
|
|
59
|
-
// exceeds 5000 chars; the
|
|
69
|
+
// exceeds 5000 chars; the yaml tools' maxArgsSize is set to this same envelope,
|
|
60
70
|
// so the default string cap was the artificial bottleneck. Requires
|
|
61
71
|
// mcp-secure-server >= 0.0.17, which exposes maxStringLength at create time.
|
|
62
|
-
maxStringLength:
|
|
72
|
+
maxStringLength: ENVELOPE_BYTES,
|
|
63
73
|
maxParamCount: 500,
|
|
64
74
|
// Raise the Layer 2 serialized-params cap (default 50000 bytes) and the
|
|
65
75
|
// Layer 3 suspicious-message block (basic preset: 50000 bytes) to the
|
|
66
76
|
// message ceiling — definition YAML payloads routinely exceed 50KB and
|
|
67
|
-
// the
|
|
77
|
+
// the yaml tools' maxArgsSize is set to this same envelope. Requires
|
|
68
78
|
// mcp-secure-server >= 0.0.19-security (maxParamBytes).
|
|
69
|
-
maxParamBytes:
|
|
70
|
-
suspiciousMessageSize:
|
|
79
|
+
maxParamBytes: ENVELOPE_BYTES,
|
|
80
|
+
suspiciousMessageSize: ENVELOPE_BYTES,
|
|
71
81
|
burstThreshold: 15,
|
|
72
82
|
burstWindowMs: 5000,
|
|
73
83
|
// Disabled: this MCP server is designed for programmatic use by Claude Code;
|
|
@@ -87,8 +97,26 @@ async function main() {
|
|
|
87
97
|
verboseLogging: config.security.verboseLogging,
|
|
88
98
|
logPerformanceMetrics: config.security.logPerformanceMetrics,
|
|
89
99
|
});
|
|
90
|
-
|
|
91
|
-
|
|
100
|
+
// mcp-secure-server 0.0.24+ types SecureMcpServer's registration methods as the SDK's own
|
|
101
|
+
// overloads, which the package's narrow (name, description, shape, handler) interfaces no longer
|
|
102
|
+
// match structurally. Adapt them onto registerTool()/registerResource() — the SDK's current API
|
|
103
|
+
// (tool()/resource() are @deprecated) — in one place instead of across 41 tool files.
|
|
104
|
+
// SecureMcpServer wraps registerTool handlers for Layer 5 exactly as it did tool(). Same
|
|
105
|
+
// precedent as @uluops/ops-mcp 0.21.3.
|
|
106
|
+
const registration = {
|
|
107
|
+
tool: (name, description, schema, handler) => {
|
|
108
|
+
server.registerTool(name, { description, inputSchema: schema }, handler);
|
|
109
|
+
},
|
|
110
|
+
resource: (name, uri, metadataOrHandler, handler) => {
|
|
111
|
+
const metadata = typeof metadataOrHandler === 'function' ? {} : metadataOrHandler;
|
|
112
|
+
const read = typeof metadataOrHandler === 'function' ? metadataOrHandler : handler;
|
|
113
|
+
if (read === undefined)
|
|
114
|
+
throw new Error(`resource ${name}: no read handler`);
|
|
115
|
+
server.registerResource(name, uri, metadata, read);
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
registerAllTools(registration, registryClient);
|
|
119
|
+
registerAllResources(registration, registryClient);
|
|
92
120
|
const shutdown = (signal) => {
|
|
93
121
|
logger.info(`Received ${signal}, shutting down gracefully`);
|
|
94
122
|
process.exit(0);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/mcp.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP-specific types for tool responses
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
4
|
+
export type McpTextContent = {
|
|
5
5
|
type: 'text';
|
|
6
6
|
text: string;
|
|
7
|
-
}
|
|
8
|
-
export
|
|
7
|
+
};
|
|
8
|
+
export type McpToolResponse = {
|
|
9
9
|
content: McpTextContent[];
|
|
10
10
|
isError?: boolean;
|
|
11
|
-
}
|
|
11
|
+
};
|
|
12
12
|
/**
|
|
13
13
|
* Create a successful MCP tool response.
|
|
14
14
|
* Handles void/undefined SDK responses (e.g., delete operations).
|
package/dist/types/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAOF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAQpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAUpE"}
|
package/dist/types/server.d.ts
CHANGED
|
@@ -4,20 +4,24 @@
|
|
|
4
4
|
import type { ZodRawShape } from 'zod';
|
|
5
5
|
import type { McpToolResponse } from './mcp.js';
|
|
6
6
|
export type ToolHandler = (args: unknown) => Promise<McpToolResponse>;
|
|
7
|
-
|
|
7
|
+
/** Exactly one of text or blob — the SDK's ReadResourceResult content union (typed since mcp-secure-server 0.0.24). */
|
|
8
|
+
export type ResourceContent = {
|
|
8
9
|
uri: string;
|
|
9
10
|
mimeType?: string;
|
|
10
|
-
text
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
text: string;
|
|
12
|
+
} | {
|
|
13
|
+
uri: string;
|
|
14
|
+
mimeType?: string;
|
|
15
|
+
blob: string;
|
|
16
|
+
};
|
|
17
|
+
export type ResourceResponse = {
|
|
14
18
|
contents: ResourceContent[];
|
|
15
|
-
}
|
|
19
|
+
};
|
|
16
20
|
export type ResourceHandler = () => Promise<ResourceResponse>;
|
|
17
|
-
export
|
|
21
|
+
export type ResourceMetadata = {
|
|
18
22
|
description?: string;
|
|
19
23
|
mimeType?: string;
|
|
20
|
-
}
|
|
24
|
+
};
|
|
21
25
|
export interface McpServerToolRegistration {
|
|
22
26
|
tool: (name: string, description: string, schema: ZodRawShape, handler: ToolHandler) => void;
|
|
23
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/types/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAEtE,MAAM,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/types/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAEtE,uHAAuH;AACvH,MAAM,MAAM,eAAe,GACvB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;CAC9F;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,gBAAgB,GAAG,eAAe,EACrD,OAAO,CAAC,EAAE,eAAe,KACtB,IAAI,CAAC;CACX;AAED,MAAM,WAAW,SAAU,SAAQ,yBAAyB,EAAE,6BAA6B;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-handler.d.ts","sourceRoot":"","sources":["../../src/utils/tool-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAA8C,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-handler.d.ts","sourceRoot":"","sources":["../../src/utils/tool-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAA8C,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA2DrG;;;;;;;;;;;GAWG;AACH,KAAK,eAAe,GAAG,GAAG,CAAC;AAE3B;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAC3B,OAAO,EAAE,CAIP,UAAU,EAAE,eAAe,KACxB,OAAO,CAAC,OAAO,CAAC,EACrB,OAAO,CAAC,EAAE;IACR,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sIAAsI;IACtI,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,eAAe,CAAC;IACzD,0FAA0F;IAC1F,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CAC5C,GACA,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,eAAe,CAAC,CAiG7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAWxD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC9B,CAiBA;AAKD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAgB/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAoE7E"}
|
|
@@ -9,6 +9,7 @@ import { mapSdkErrorToMcp, mapZodErrorToMcp, sanitizeErrorMessage } from '../cli
|
|
|
9
9
|
import { normalizeKeys } from './normalize-keys.js';
|
|
10
10
|
import { createSuccessResponse, createErrorResponse } from '../types/index.js';
|
|
11
11
|
import { getDefaultType } from './session-state.js';
|
|
12
|
+
import { toolRegistry } from '../config/tool-registry.js';
|
|
12
13
|
/**
|
|
13
14
|
* Coerce string values to numbers for fields that the Zod schema expects as numeric.
|
|
14
15
|
* MCP JSON-RPC sometimes serializes numeric parameters as strings (e.g., "50" instead of 50).
|
|
@@ -57,6 +58,12 @@ function isMcpToolResponse(value) {
|
|
|
57
58
|
'content' in value &&
|
|
58
59
|
Array.isArray(value.content));
|
|
59
60
|
}
|
|
61
|
+
/** True when the security tool registry declares this tool as mutating (sideEffects: 'write'). */
|
|
62
|
+
function isWriteTool(toolName) {
|
|
63
|
+
if (toolName === undefined)
|
|
64
|
+
return false;
|
|
65
|
+
return toolRegistry.some((t) => t.name === toolName && t.sideEffects === 'write');
|
|
66
|
+
}
|
|
60
67
|
/**
|
|
61
68
|
* Creates a standardized tool handler with Zod validation, key normalization,
|
|
62
69
|
* and SDK error mapping.
|
|
@@ -115,8 +122,26 @@ export function createToolHandler(schema, sdkCall, options) {
|
|
|
115
122
|
const universe = collectFieldUniverse(result);
|
|
116
123
|
const unknown = fields.filter((f) => !universe.has(f));
|
|
117
124
|
if (unknown.length > 0) {
|
|
118
|
-
|
|
119
|
-
`Valid fields for this response: ${[...universe].sort().join(', ')}
|
|
125
|
+
const message = `Unknown field(s) in 'fields': ${unknown.join(', ')}. ` +
|
|
126
|
+
`Valid fields for this response: ${[...universe].sort().join(', ')}.`;
|
|
127
|
+
// Tracker 14baaacc: this check runs AFTER sdkCall. For a read, rejecting is safe
|
|
128
|
+
// (nothing happened). For a WRITE the mutation has already committed, so an error
|
|
129
|
+
// here would report a completed write as failed — and a caller retrying a
|
|
130
|
+
// non-idempotent write (create, publish) would apply it twice. Writes succeed:
|
|
131
|
+
// project the known fields (the full result if none are known) and warn.
|
|
132
|
+
if (isWriteTool(options?.toolName)) {
|
|
133
|
+
const known = fields.filter((f) => universe.has(f));
|
|
134
|
+
const projected = known.length > 0 ? filterResponseFields(result, known) : result;
|
|
135
|
+
const response = createSuccessResponse(projected);
|
|
136
|
+
response.content.push({
|
|
137
|
+
type: 'text',
|
|
138
|
+
text: JSON.stringify({
|
|
139
|
+
warning: `${message} The write completed; ${known.length > 0 ? 'the known fields are shown' : 'the full result is shown'}.`,
|
|
140
|
+
}),
|
|
141
|
+
});
|
|
142
|
+
return response;
|
|
143
|
+
}
|
|
144
|
+
return createErrorResponse(message);
|
|
120
145
|
}
|
|
121
146
|
result = filterResponseFields(result, fields);
|
|
122
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-handler.js","sourceRoot":"","sources":["../../src/utils/tool-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAwB,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-handler.js","sourceRoot":"","sources":["../../src/utils/tool-handler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uluops/registry-mcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "MCP server for the UluOps Registry API — definition management, versioning, and analytics",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
65
65
|
"@uluops/registry-sdk": "0.54.0",
|
|
66
66
|
"@uluops/sdk-core": "0.18.0",
|
|
67
|
-
"mcp-secure-server": "0.0.
|
|
67
|
+
"mcp-secure-server": "0.0.25-security",
|
|
68
68
|
"zod": "3.25.76"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
package/tool-policies.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"create_definition": {
|
|
10
10
|
"level": "STORAGE",
|
|
11
|
-
"relaxedFields": ["yaml"
|
|
11
|
+
"relaxedFields": ["yaml"],
|
|
12
12
|
"description": "Creates definitions with YAML content that may contain code patterns"
|
|
13
13
|
},
|
|
14
14
|
"update_definition": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"upgrade_definition": {
|
|
25
25
|
"level": "STORAGE",
|
|
26
|
-
"relaxedFields": ["yaml"
|
|
26
|
+
"relaxedFields": ["yaml"],
|
|
27
27
|
"description": "Upgrades legacy YAML format - may contain code patterns"
|
|
28
28
|
},
|
|
29
29
|
"deprecate_definition": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"record_execution": {
|
|
50
50
|
"level": "STORAGE",
|
|
51
|
-
"relaxedFields": [
|
|
51
|
+
"relaxedFields": [],
|
|
52
52
|
"description": "Records execution with idempotency key"
|
|
53
53
|
},
|
|
54
54
|
"get_user": {
|