boondmanager-mcp-server 2.12.1 → 2.12.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/dist/schema-dialect.d.ts +21 -0
- package/dist/schema-dialect.d.ts.map +1 -0
- package/dist/schema-dialect.js +133 -0
- package/dist/schema-dialect.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +7 -0
- package/dist/server.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Recursively drop `$schema` string members. Returns the input **by identity**
|
|
4
|
+
* when there is nothing to strip, so a future SDK that stops emitting the
|
|
5
|
+
* declaration costs no allocation at all.
|
|
6
|
+
*
|
|
7
|
+
* The `typeof === "string"` guard matters: a dialect declaration is always a
|
|
8
|
+
* string URI, whereas a *property named* `$schema` inside a `properties` map
|
|
9
|
+
* would be a schema **object**. Without the guard this would silently delete
|
|
10
|
+
* such a property from the advertised input shape.
|
|
11
|
+
*/
|
|
12
|
+
export declare function stripSchemaDialect<T>(value: T): T;
|
|
13
|
+
/**
|
|
14
|
+
* Remove the JSON Schema dialect declaration from `tools/list` responses.
|
|
15
|
+
*
|
|
16
|
+
* MUST be called before the first `registerTool` on this server: it works by
|
|
17
|
+
* intercepting the `setRequestHandler` call the SDK makes when it lazily
|
|
18
|
+
* installs the `tools/list` handler.
|
|
19
|
+
*/
|
|
20
|
+
export declare function installSchemaDialectCompat(server: McpServer): void;
|
|
21
|
+
//# sourceMappingURL=schema-dialect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-dialect.d.ts","sourceRoot":"","sources":["../src/schema-dialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+DzE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAwBjD;AAgBD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgBlE"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Strip the JSON Schema **dialect declaration** (`$schema`) from the
|
|
4
|
+
* `inputSchema` / `outputSchema` advertised in `tools/list`.
|
|
5
|
+
*
|
|
6
|
+
* ## The bug this fixes
|
|
7
|
+
*
|
|
8
|
+
* `McpServer` converts our Zod schemas with `toJsonSchemaCompat`, which for
|
|
9
|
+
* Zod v4 calls `z.toJSONSchema(schema, { target: 'draft-7' })` — and that
|
|
10
|
+
* stamps every advertised schema with
|
|
11
|
+
*
|
|
12
|
+
* "$schema": "http://json-schema.org/draft-07/schema#"
|
|
13
|
+
*
|
|
14
|
+
* Hosts that validate `structuredContent` with a **2020-12-only** validator
|
|
15
|
+
* (Ajv's `Ajv2020`, which is what the JSON Schema tooling around the Claude
|
|
16
|
+
* tool API uses) refuse to *compile* such a schema at all:
|
|
17
|
+
*
|
|
18
|
+
* no schema with key or ref "http://json-schema.org/draft-07/schema#"
|
|
19
|
+
*
|
|
20
|
+
* The compile happens when the tool is registered client-side, i.e. **before**
|
|
21
|
+
* any call, so the tool doesn't fail — it becomes unusable. The symptom is
|
|
22
|
+
* asymmetric and looks baffling: only the 59 tools that declare an
|
|
23
|
+
* `outputSchema` are affected (every `*_search`, plus create/update/delete),
|
|
24
|
+
* while the ~120 tools without one (`*_get`, dictionaries, reporting) work
|
|
25
|
+
* fine — even though *all* 180 carry the same `$schema` on their `inputSchema`.
|
|
26
|
+
* That leaves a client able to read an entity only if the id is already known,
|
|
27
|
+
* with no way to search for it.
|
|
28
|
+
*
|
|
29
|
+
* ## Why removing the declaration is the right fix
|
|
30
|
+
*
|
|
31
|
+
* - `$schema` is **not** part of MCP's `Tool.inputSchema` / `Tool.outputSchema`
|
|
32
|
+
* shape. The spec asks for "a JSON Schema object"; the dialect declaration is
|
|
33
|
+
* optional metadata that no client needs, and most servers never emit.
|
|
34
|
+
* - Our schemas use **no dialect-specific keyword** (verified over the whole
|
|
35
|
+
* catalogue: `type`, `properties`, `required`, `items`, `enum`, `pattern`,
|
|
36
|
+
* `propertyNames`, `additionalProperties`, `anyOf` — identical semantics in
|
|
37
|
+
* draft-07 and 2020-12; no `$ref`, no `$defs`, no `definitions`). Dropping
|
|
38
|
+
* the declaration therefore changes no schema's meaning: every validator
|
|
39
|
+
* applies its own default dialect and reads them the same way.
|
|
40
|
+
* - The alternative — declaring 2020-12 instead — would just move the failure
|
|
41
|
+
* to draft-07-only validators (the MCP SDK's own client uses plain Ajv 8,
|
|
42
|
+
* whose default *is* draft-07). Declaring nothing is the only choice that
|
|
43
|
+
* satisfies both.
|
|
44
|
+
* - Bonus: 45 bytes × 239 schemas ≈ **10 KiB off the `tools/list` payload**,
|
|
45
|
+
* which this codebase budgets carefully (see `icons.ts`).
|
|
46
|
+
*
|
|
47
|
+
* ## Why a response decorator
|
|
48
|
+
*
|
|
49
|
+
* `registerTool` takes Zod, and the draft-07 target is hardcoded inside the SDK
|
|
50
|
+
* (`server/zod-json-schema-compat.js`) with no option to change or omit it — so
|
|
51
|
+
* there is nothing to pass at registration time. Same shim mechanism as
|
|
52
|
+
* `installProtocolIcons`: wrap the `tools/list` handler through the public
|
|
53
|
+
* `Server.setRequestHandler`, keyed on schema identity. When the SDK stops
|
|
54
|
+
* emitting `$schema` (or lets us choose), this file can be deleted —
|
|
55
|
+
* `schema-dialect.test.ts` asserts over a real client, so the regression can't
|
|
56
|
+
* come back silently.
|
|
57
|
+
*/
|
|
58
|
+
/** The two fields of a `tools/list` entry that carry a JSON Schema. */
|
|
59
|
+
const SCHEMA_FIELDS = ["inputSchema", "outputSchema"];
|
|
60
|
+
/**
|
|
61
|
+
* Recursively drop `$schema` string members. Returns the input **by identity**
|
|
62
|
+
* when there is nothing to strip, so a future SDK that stops emitting the
|
|
63
|
+
* declaration costs no allocation at all.
|
|
64
|
+
*
|
|
65
|
+
* The `typeof === "string"` guard matters: a dialect declaration is always a
|
|
66
|
+
* string URI, whereas a *property named* `$schema` inside a `properties` map
|
|
67
|
+
* would be a schema **object**. Without the guard this would silently delete
|
|
68
|
+
* such a property from the advertised input shape.
|
|
69
|
+
*/
|
|
70
|
+
export function stripSchemaDialect(value) {
|
|
71
|
+
if (Array.isArray(value)) {
|
|
72
|
+
let changed = false;
|
|
73
|
+
const out = value.map((item) => {
|
|
74
|
+
const stripped = stripSchemaDialect(item);
|
|
75
|
+
if (stripped !== item)
|
|
76
|
+
changed = true;
|
|
77
|
+
return stripped;
|
|
78
|
+
});
|
|
79
|
+
return (changed ? out : value);
|
|
80
|
+
}
|
|
81
|
+
if (value === null || typeof value !== "object")
|
|
82
|
+
return value;
|
|
83
|
+
let changed = false;
|
|
84
|
+
const out = {};
|
|
85
|
+
for (const [key, member] of Object.entries(value)) {
|
|
86
|
+
if (key === "$schema" && typeof member === "string") {
|
|
87
|
+
changed = true;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const stripped = stripSchemaDialect(member);
|
|
91
|
+
if (stripped !== member)
|
|
92
|
+
changed = true;
|
|
93
|
+
out[key] = stripped;
|
|
94
|
+
}
|
|
95
|
+
return (changed ? out : value);
|
|
96
|
+
}
|
|
97
|
+
/** Strip the dialect from one `tools/list` entry, keeping identity when possible. */
|
|
98
|
+
function withoutSchemaDialect(tool) {
|
|
99
|
+
let result = tool;
|
|
100
|
+
for (const field of SCHEMA_FIELDS) {
|
|
101
|
+
const schema = result[field];
|
|
102
|
+
if (schema === undefined || schema === null)
|
|
103
|
+
continue;
|
|
104
|
+
const stripped = stripSchemaDialect(schema);
|
|
105
|
+
if (stripped !== schema)
|
|
106
|
+
result = { ...result, [field]: stripped };
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Remove the JSON Schema dialect declaration from `tools/list` responses.
|
|
112
|
+
*
|
|
113
|
+
* MUST be called before the first `registerTool` on this server: it works by
|
|
114
|
+
* intercepting the `setRequestHandler` call the SDK makes when it lazily
|
|
115
|
+
* installs the `tools/list` handler.
|
|
116
|
+
*/
|
|
117
|
+
export function installSchemaDialectCompat(server) {
|
|
118
|
+
// `Server.setRequestHandler` is generic over the request schema; the shim is
|
|
119
|
+
// schema-agnostic, hence the single cast at the boundary.
|
|
120
|
+
const underlying = server.server;
|
|
121
|
+
const original = underlying.setRequestHandler.bind(underlying);
|
|
122
|
+
underlying.setRequestHandler = (schema, handler) => {
|
|
123
|
+
if (schema !== ListToolsRequestSchema)
|
|
124
|
+
return original(schema, handler);
|
|
125
|
+
return original(schema, async (...args) => {
|
|
126
|
+
const result = (await handler(...args));
|
|
127
|
+
if (!Array.isArray(result?.tools))
|
|
128
|
+
return result;
|
|
129
|
+
return { ...result, tools: result.tools.map(withoutSchemaDialect) };
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=schema-dialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-dialect.js","sourceRoot":"","sources":["../src/schema-dialect.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4CpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAoD,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAChH,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4CpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAoD,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAChH,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,WAAW,4BAA4B,CAAC;AAmCrD,eAAO,MAAM,cAAc,QAA4D,CAAC;AAExF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAG9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC,CAwClH,CAAC;AAEJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAiBpG;AAED,wBAAgB,eAAe,IAAI,SAAS,CA+B3C"}
|
package/dist/server.js
CHANGED
|
@@ -9,6 +9,7 @@ import { SERVER_INSTRUCTIONS } from "./instructions.js";
|
|
|
9
9
|
import { resolveAccessPolicy, isDomainAllowed, withPolicy } from "./config/access-policy.js";
|
|
10
10
|
import { createRegistrationIndex, decorateRegistrations, } from "./tools/registration-decorators.js";
|
|
11
11
|
import { installProtocolIcons } from "./icons.js";
|
|
12
|
+
import { installSchemaDialectCompat } from "./schema-dialect.js";
|
|
12
13
|
// Re-exported for the catalogue generator and tests that import it from here.
|
|
13
14
|
export { REGISTERED_DOMAINS } from "./constants.js";
|
|
14
15
|
export const SERVER_NAME = "boondmanager-mcp-server";
|
|
@@ -163,6 +164,12 @@ export function createMcpServer() {
|
|
|
163
164
|
// call. The index it closes over is filled during registerAll below.
|
|
164
165
|
const index = createRegistrationIndex();
|
|
165
166
|
installProtocolIcons(server, index);
|
|
167
|
+
// Same "before any registration" constraint, same mechanism: drops the
|
|
168
|
+
// draft-07 `$schema` the SDK stamps on every advertised inputSchema/
|
|
169
|
+
// outputSchema, which a 2020-12-only host validator refuses to compile —
|
|
170
|
+
// making every tool that declares an outputSchema (all `*_search`) unusable
|
|
171
|
+
// client-side. See schema-dialect.ts.
|
|
172
|
+
installSchemaDialectCompat(server);
|
|
166
173
|
// Operator-configured restrictions (env-driven). Absent config = full surface.
|
|
167
174
|
registerAll(server, resolveAccessPolicy(), index);
|
|
168
175
|
return server;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,EAAqB,MAAM,2BAA2B,CAAC;AAChH,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GAEtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "boondmanager-mcp-server",
|
|
4
4
|
"display_name": "BoondManager MCP Server",
|
|
5
|
-
"version": "2.12.
|
|
5
|
+
"version": "2.12.2",
|
|
6
6
|
"description": "MCP Server for BoondManager API - 180 tools, 11 prompts, 22 resources (ERP/CRM)",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Frédéric Auguste",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "boondmanager-mcp-server",
|
|
3
|
-
"version": "2.12.
|
|
3
|
+
"version": "2.12.2",
|
|
4
4
|
"description": "MCP Server for BoondManager API - 180 tools, 11 prompts, 22 resources (ERP/CRM)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
"@eslint/js": "^10.0.1",
|
|
69
69
|
"@types/node": "^26.0.0",
|
|
70
70
|
"@vitest/coverage-v8": "^4.0.18",
|
|
71
|
+
"ajv": "^8.17.1",
|
|
71
72
|
"eslint": "^10.0.2",
|
|
72
73
|
"husky": "^9.1.7",
|
|
73
74
|
"lint-staged": "^17.0.4",
|