boondmanager-mcp-server 2.10.0 → 2.11.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/README.md +68 -3
- package/dist/config/access-policy.d.ts +5 -0
- package/dist/config/access-policy.d.ts.map +1 -1
- package/dist/config/access-policy.js +36 -1
- package/dist/config/access-policy.js.map +1 -1
- package/dist/config/env-flags.d.ts +11 -0
- package/dist/config/env-flags.d.ts.map +1 -0
- package/dist/config/env-flags.js +16 -0
- package/dist/config/env-flags.js.map +1 -0
- package/dist/config/profiles.d.ts +71 -0
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/profiles.js +115 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/icons.d.ts +79 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +169 -0
- package/dist/icons.js.map +1 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +6 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/schemas/filter-aliases.d.ts +69 -0
- package/dist/schemas/filter-aliases.d.ts.map +1 -0
- package/dist/schemas/filter-aliases.js +225 -0
- package/dist/schemas/filter-aliases.js.map +1 -0
- package/dist/schemas/index.d.ts +22 -22
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +54 -43
- package/dist/schemas/index.js.map +1 -1
- package/dist/server.d.ts +18 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +26 -3
- package/dist/server.js.map +1 -1
- package/dist/services/boond-client.d.ts.map +1 -1
- package/dist/services/boond-client.js +17 -2
- package/dist/services/boond-client.js.map +1 -1
- package/dist/tools/crud-factory.d.ts +0 -8
- package/dist/tools/crud-factory.d.ts.map +1 -1
- package/dist/tools/crud-factory.js +66 -14
- package/dist/tools/crud-factory.js.map +1 -1
- package/dist/tools/registration-decorators.d.ts +35 -0
- package/dist/tools/registration-decorators.d.ts.map +1 -0
- package/dist/tools/registration-decorators.js +30 -0
- package/dist/tools/registration-decorators.js.map +1 -0
- package/dist/tools/validation-wrapper.d.ts +43 -0
- package/dist/tools/validation-wrapper.d.ts.map +1 -0
- package/dist/tools/validation-wrapper.js +108 -0
- package/dist/tools/validation-wrapper.js.map +1 -0
- package/manifest.json +8 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud-factory.d.ts","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"crud-factory.d.ts","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import { apiRequest, apiSearch, buildSearchQuery, formatListResponse, formatDetailResponse, formatEntitySummary, } from "../services/boond-client.js";
|
|
3
4
|
import { SearchSchema, IdSchema, IdTabSchema } from "../schemas/index.js";
|
|
5
|
+
import { isFeatureDisabled } from "../config/env-flags.js";
|
|
4
6
|
// ---- Structured output schemas (MCP outputSchema / structuredContent) ----
|
|
5
7
|
// Deliberately compact: the structured payload mirrors the text summary
|
|
6
8
|
// (ids + one-line summaries, or the caller-selected `fields`), never the full
|
|
@@ -76,10 +78,7 @@ function entityRef(response) {
|
|
|
76
78
|
// ---- Delete confirmation via MCP elicitation ----
|
|
77
79
|
/** `BOOND_MCP_CONFIRM_DELETE=0|false|no|off` opts out of the confirmation prompt. */
|
|
78
80
|
function deleteConfirmationDisabled() {
|
|
79
|
-
|
|
80
|
-
if (!v)
|
|
81
|
-
return false;
|
|
82
|
-
return ["0", "false", "no", "off"].includes(v.trim().toLowerCase());
|
|
81
|
+
return isFeatureDisabled(process.env.BOOND_MCP_CONFIRM_DELETE);
|
|
83
82
|
}
|
|
84
83
|
/**
|
|
85
84
|
* Ask the end user to confirm a destructive delete through MCP elicitation
|
|
@@ -87,8 +86,45 @@ function deleteConfirmationDisabled() {
|
|
|
87
86
|
* keep the legacy behaviour (delete proceeds — `destructiveHint` already lets
|
|
88
87
|
* hosts gate the call). A failed elicitation round-trip (e.g. stateless HTTP
|
|
89
88
|
* quirks) also falls back to legacy rather than breaking deletes; only an
|
|
90
|
-
* explicit decline/cancel
|
|
89
|
+
* explicit decline/cancel, or an answer that isn't "delete", aborts.
|
|
90
|
+
*
|
|
91
|
+
* The requested schema is a **titled single-select enum** with a default
|
|
92
|
+
* (SEP-1330 / SEP-1034), not the boolean it used to be. Rationale: a checkbox
|
|
93
|
+
* labelled "Confirmer la suppression" is trivially mis-clicked and pre-checked
|
|
94
|
+
* by some hosts, whereas `oneOf: [{const,title}]` + `default: "cancel"` makes
|
|
95
|
+
* the safe answer the pre-selected one and puts the consequence
|
|
96
|
+
* ("Supprimer définitivement") in the option label itself.
|
|
97
|
+
*
|
|
98
|
+
* Backwards compatibility is deliberate on two axes:
|
|
99
|
+
* - a client still answering the old shape (`{ confirm: true }`) is honoured;
|
|
100
|
+
* - `required` is intentionally NOT set, so the SDK's Ajv validation of the
|
|
101
|
+
* response can't reject a legacy-shaped answer merely for omitting the field.
|
|
102
|
+
*
|
|
103
|
+
* The response *is* still validated by the SDK against the `oneOf` above, and a
|
|
104
|
+
* rejection throws — so `isElicitationResponseRejected()` peels that specific
|
|
105
|
+
* failure out of the catch-all fallback. Without it, a host that renders the
|
|
106
|
+
* titled enum as a free-text field (SEP-1330 unaware) and a user typing
|
|
107
|
+
* "annuler" would produce an Ajv rejection that lands in the "round-trip
|
|
108
|
+
* failed → delete anyway" branch: an explicit refusal causing an irreversible
|
|
109
|
+
* delete. Lenient schema, strict interpretation, and a validation failure counts
|
|
110
|
+
* as a refusal — not as a broken transport.
|
|
111
|
+
*/
|
|
112
|
+
const CONFIRM_DELETE_VALUE = "delete";
|
|
113
|
+
const CANCEL_DELETE_VALUE = "cancel";
|
|
114
|
+
/**
|
|
115
|
+
* Did `elicitInput` throw because the *client's answer* did not match the
|
|
116
|
+
* requested schema? The SDK raises `McpError(InvalidParams)` in that case (and
|
|
117
|
+
* `InternalError` if its own validator blew up on the schema). Both mean "we
|
|
118
|
+
* never got a usable confirmation", which must abort — unlike a transport /
|
|
119
|
+
* capability failure, which keeps the legacy direct-delete behaviour.
|
|
91
120
|
*/
|
|
121
|
+
function isElicitationResponseRejected(error) {
|
|
122
|
+
if (!(error instanceof McpError))
|
|
123
|
+
return false;
|
|
124
|
+
if (error.code === ErrorCode.InvalidParams)
|
|
125
|
+
return true;
|
|
126
|
+
return error.code === ErrorCode.InternalError && /elicitation response/i.test(error.message);
|
|
127
|
+
}
|
|
92
128
|
export async function confirmDeletion(server, entityName, id) {
|
|
93
129
|
if (deleteConfirmationDisabled())
|
|
94
130
|
return { confirmed: true };
|
|
@@ -107,21 +143,37 @@ export async function confirmDeletion(server, entityName, id) {
|
|
|
107
143
|
requestedSchema: {
|
|
108
144
|
type: "object",
|
|
109
145
|
properties: {
|
|
110
|
-
|
|
111
|
-
type: "
|
|
112
|
-
title:
|
|
113
|
-
description:
|
|
146
|
+
confirmation: {
|
|
147
|
+
type: "string",
|
|
148
|
+
title: `Suppression de ${entityName} #${id}`,
|
|
149
|
+
description: "Choisir « Supprimer définitivement » pour confirmer, sinon rien ne sera supprimé.",
|
|
150
|
+
oneOf: [
|
|
151
|
+
{ const: CONFIRM_DELETE_VALUE, title: "Supprimer définitivement" },
|
|
152
|
+
{ const: CANCEL_DELETE_VALUE, title: "Annuler" },
|
|
153
|
+
],
|
|
154
|
+
default: CANCEL_DELETE_VALUE,
|
|
114
155
|
},
|
|
115
156
|
},
|
|
116
|
-
required: ["confirm"],
|
|
117
157
|
},
|
|
118
158
|
});
|
|
119
|
-
if (result.action
|
|
159
|
+
if (result.action !== "accept")
|
|
160
|
+
return { confirmed: false, reason: result.action };
|
|
161
|
+
const content = result.content ?? {};
|
|
162
|
+
if (content.confirmation === CONFIRM_DELETE_VALUE)
|
|
120
163
|
return { confirmed: true };
|
|
121
|
-
|
|
122
|
-
|
|
164
|
+
// Legacy boolean answer from a client built against the previous schema.
|
|
165
|
+
if (content.confirmation === undefined && content.confirm === true)
|
|
166
|
+
return { confirmed: true };
|
|
167
|
+
return {
|
|
168
|
+
confirmed: false,
|
|
169
|
+
reason: typeof content.confirmation === "string" ? `confirmation=${content.confirmation}` : "not-confirmed",
|
|
170
|
+
};
|
|
123
171
|
}
|
|
124
|
-
catch {
|
|
172
|
+
catch (error) {
|
|
173
|
+
// An off-schema answer is a refusal, not a broken round-trip: never delete.
|
|
174
|
+
if (isElicitationResponseRejected(error)) {
|
|
175
|
+
return { confirmed: false, reason: "invalid-confirmation-response" };
|
|
176
|
+
}
|
|
125
177
|
return { confirmed: true };
|
|
126
178
|
}
|
|
127
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud-factory.js","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crud-factory.js","sourceRoot":"","sources":["../../src/tools/crud-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { DomainName } from "../constants.js";
|
|
3
|
+
/**
|
|
4
|
+
* Per-domain registration decorations, applied centrally in
|
|
5
|
+
* `server.ts::registerAll` so none of the 38 domain files has to know about
|
|
6
|
+
* them. Two jobs, both keyed on the domain the registrar belongs to (which the
|
|
7
|
+
* caller knows for free — it is iterating `TOOL_REGISTRARS`):
|
|
8
|
+
*
|
|
9
|
+
* 1. enrich `*_search` input schemas with filter-correction messages
|
|
10
|
+
* (`validation-wrapper.ts`);
|
|
11
|
+
* 2. record `tool name → domain` so the icon layer can attach the right
|
|
12
|
+
* domain icon without parsing tool names (`icons.ts`).
|
|
13
|
+
*
|
|
14
|
+
* Deliberately NOT merged into `withPolicy`: that wrapper has a fast path
|
|
15
|
+
* returning the untouched server when no operation filter is active, and these
|
|
16
|
+
* decorations must apply unconditionally.
|
|
17
|
+
*/
|
|
18
|
+
export interface RegistrationIndex {
|
|
19
|
+
/**
|
|
20
|
+
* Tool name → owning domain. Filled at registration time from
|
|
21
|
+
* `TOOL_REGISTRARS`, so it is exact for multi-word domains
|
|
22
|
+
* (`provider-invoices`) and for tools whose name doesn't start with their
|
|
23
|
+
* domain (`boond_workflow_*` ← `workflows`).
|
|
24
|
+
*/
|
|
25
|
+
toolDomains: Map<string, DomainName>;
|
|
26
|
+
}
|
|
27
|
+
export declare function createRegistrationIndex(): RegistrationIndex;
|
|
28
|
+
/**
|
|
29
|
+
* Wrap a server (or an already-wrapped Proxy) so every `registerTool` call made
|
|
30
|
+
* by `domain`'s registrar is decorated. Methods other than `registerTool` pass
|
|
31
|
+
* straight through, bound to the real target so the SDK's private fields keep
|
|
32
|
+
* working (same technique as `withPolicy`).
|
|
33
|
+
*/
|
|
34
|
+
export declare function decorateRegistrations(server: McpServer, domain: DomainName, index?: RegistrationIndex): McpServer;
|
|
35
|
+
//# sourceMappingURL=registration-decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-decorators.d.ts","sourceRoot":"","sources":["../../src/tools/registration-decorators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACtC;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAmBjH"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { withValidationFeedback } from "./validation-wrapper.js";
|
|
2
|
+
export function createRegistrationIndex() {
|
|
3
|
+
return { toolDomains: new Map() };
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Wrap a server (or an already-wrapped Proxy) so every `registerTool` call made
|
|
7
|
+
* by `domain`'s registrar is decorated. Methods other than `registerTool` pass
|
|
8
|
+
* straight through, bound to the real target so the SDK's private fields keep
|
|
9
|
+
* working (same technique as `withPolicy`).
|
|
10
|
+
*/
|
|
11
|
+
export function decorateRegistrations(server, domain, index) {
|
|
12
|
+
return new Proxy(server, {
|
|
13
|
+
get(target, prop) {
|
|
14
|
+
const value = Reflect.get(target, prop, target);
|
|
15
|
+
if (typeof value !== "function")
|
|
16
|
+
return value;
|
|
17
|
+
if (prop === "registerTool") {
|
|
18
|
+
return (...args) => {
|
|
19
|
+
const name = args[0];
|
|
20
|
+
const config = args[1];
|
|
21
|
+
index?.toolDomains.set(name, domain);
|
|
22
|
+
const decorated = config === undefined ? config : withValidationFeedback(name, config, domain);
|
|
23
|
+
return value.apply(target, [name, decorated, ...args.slice(2)]);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return value.bind(target);
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=registration-decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-decorators.js","sourceRoot":"","sources":["../../src/tools/registration-decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AA4BjE,MAAM,UAAU,uBAAuB;IACrC,OAAO,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAkB,EAAE,KAAyB;IACpG,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAY,CAAC;YAC3D,IAAI,OAAO,KAAK,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAC;YAE9C,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE;oBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;oBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAA0C,CAAC;oBAChE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACrC,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC/F,OAAQ,KAAsC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpG,CAAC,CAAC;YACJ,CAAC;YAED,OAAQ,KAAsC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { DomainName } from "../constants.js";
|
|
2
|
+
/**
|
|
3
|
+
* Rebuild a strict object schema with a filter-aware unrecognized-key message.
|
|
4
|
+
* Anything else (raw shapes, non-strict objects, unions) is returned as-is —
|
|
5
|
+
* we never make a lenient schema strict as a side effect.
|
|
6
|
+
*
|
|
7
|
+
* The rebuild reuses the exact same field schemas, so defaults, descriptions
|
|
8
|
+
* and per-field messages are preserved. Only issues raised *by the object
|
|
9
|
+
* itself* reach our error function; a field-level failure (e.g. `page: 500`)
|
|
10
|
+
* keeps the message its own schema defines, which is why the returned
|
|
11
|
+
* `undefined` fallback matters.
|
|
12
|
+
*/
|
|
13
|
+
export declare function withFilterHints<T>(schema: T, domain?: DomainName): T;
|
|
14
|
+
interface ToolConfigLike {
|
|
15
|
+
inputSchema?: unknown;
|
|
16
|
+
annotations?: {
|
|
17
|
+
openWorldHint?: boolean;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Is this a search-shaped tool, i.e. one whose filter vocabulary is worth
|
|
22
|
+
* explaining?
|
|
23
|
+
*
|
|
24
|
+
* Keyed on the *registration* rather than the name only. `openWorldHint: true`
|
|
25
|
+
* is exactly the annotation the codebase reserves for paginated,
|
|
26
|
+
* keyword-filtered listing tools (see CLAUDE.md §MCP Annotations), so it catches
|
|
27
|
+
* `boond_reporting_{companies,projects,resources,synthesis,production_plans}` —
|
|
28
|
+
* strict schemas carrying the same treacherous `perimeter*` / `*States`
|
|
29
|
+
* vocabulary, which a `_search` suffix test silently skipped — and any future
|
|
30
|
+
* hand-rolled search tool that doesn't happen to be named `*_search`. The name
|
|
31
|
+
* check is kept as an OR so a listing tool that omits the annotation is still
|
|
32
|
+
* covered.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isSearchTool(name: string, config?: ToolConfigLike): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Return the registration config a search tool should be registered with:
|
|
37
|
+
* the same object with its `inputSchema` swapped for the hint-enriched clone.
|
|
38
|
+
* Non-search tools and configs without a strict object schema come back
|
|
39
|
+
* untouched (same reference), so this is a no-op for the ~150 other tools.
|
|
40
|
+
*/
|
|
41
|
+
export declare function withValidationFeedback<C extends ToolConfigLike>(name: string, config: C, domain?: DomainName): C;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=validation-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-wrapper.d.ts","sourceRoot":"","sources":["../../src/tools/validation-wrapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAoDlD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,CAYpE;AAED,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,CAKhH"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { unknownFilterMessage, ENDPOINT_FILTER_ALIASES } from "../schemas/filter-aliases.js";
|
|
3
|
+
/**
|
|
4
|
+
* Turn a `.strict()` search schema's unrecognized-key rejection into a
|
|
5
|
+
* correction the model can act on (SEP-1303).
|
|
6
|
+
*
|
|
7
|
+
* ## Why this is a *schema* wrapper and not a handler wrapper
|
|
8
|
+
*
|
|
9
|
+
* The issue this implements proposed wrapping the tool handler and
|
|
10
|
+
* `safeParse`-ing before the SDK does. That cannot work: `McpServer` validates
|
|
11
|
+
* the input **before** invoking the handler
|
|
12
|
+
* (`server/mcp.js::validateToolInput`), so on a validation failure the handler
|
|
13
|
+
* is never reached. The two options left were (a) declare a permissive schema
|
|
14
|
+
* to the SDK and validate strictly ourselves — which drops
|
|
15
|
+
* `additionalProperties: false` from the advertised `inputSchema`, the thing
|
|
16
|
+
* that lets a client validate before it even calls us — or (b) keep the strict
|
|
17
|
+
* schema and make *its own* error message the correction. We do (b):
|
|
18
|
+
*
|
|
19
|
+
* - the advertised `inputSchema` is byte-for-byte what it was before (verified
|
|
20
|
+
* in the tests: the rebuilt schema's JSON Schema is unchanged);
|
|
21
|
+
* - there is no second parse, so nothing is added to the hot path of a search;
|
|
22
|
+
* - the SDK already reports a validation failure as a *tool* error
|
|
23
|
+
* (`isError: true`) rather than a protocol error — it catches its own
|
|
24
|
+
* `McpError` and funnels it through `createToolError`. So SEP-1303's
|
|
25
|
+
* requirement is met by the SDK; what was missing, and what this adds, is a
|
|
26
|
+
* message worth self-correcting from.
|
|
27
|
+
*
|
|
28
|
+
* Applied to search-shaped tools only (see `isSearchTool`): that is where the
|
|
29
|
+
* filter vocabulary is treacherous (`mainManagers` vs `perimeterManagers`,
|
|
30
|
+
* `states` vs `resourceStates`). `get`/`create`/`update` take ids and attribute
|
|
31
|
+
* names the model reads straight off the schema.
|
|
32
|
+
*/
|
|
33
|
+
/** Does the domain have an endpoint-specific filter vocabulary? */
|
|
34
|
+
function searchEndpointOf(domain) {
|
|
35
|
+
if (domain !== undefined && Object.hasOwn(ENDPOINT_FILTER_ALIASES, domain))
|
|
36
|
+
return domain;
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A Zod v4 object schema that *rejects* unknown keys — i.e. `catchall` is
|
|
41
|
+
* `ZodNever`, not merely present. `.catchall(z.string())` also sets it, and
|
|
42
|
+
* rebuilding such a schema as `strictObject` would silently turn a permissive
|
|
43
|
+
* schema into a strict one.
|
|
44
|
+
*/
|
|
45
|
+
function isStrictObject(schema) {
|
|
46
|
+
if (!(schema instanceof z.ZodObject))
|
|
47
|
+
return false;
|
|
48
|
+
const def = schema._zod?.def;
|
|
49
|
+
return def?.catchall instanceof z.ZodNever;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Rebuild a strict object schema with a filter-aware unrecognized-key message.
|
|
53
|
+
* Anything else (raw shapes, non-strict objects, unions) is returned as-is —
|
|
54
|
+
* we never make a lenient schema strict as a side effect.
|
|
55
|
+
*
|
|
56
|
+
* The rebuild reuses the exact same field schemas, so defaults, descriptions
|
|
57
|
+
* and per-field messages are preserved. Only issues raised *by the object
|
|
58
|
+
* itself* reach our error function; a field-level failure (e.g. `page: 500`)
|
|
59
|
+
* keeps the message its own schema defines, which is why the returned
|
|
60
|
+
* `undefined` fallback matters.
|
|
61
|
+
*/
|
|
62
|
+
export function withFilterHints(schema, domain) {
|
|
63
|
+
if (!isStrictObject(schema))
|
|
64
|
+
return schema;
|
|
65
|
+
const shape = schema.shape;
|
|
66
|
+
const validKeys = Object.keys(shape);
|
|
67
|
+
const endpoint = searchEndpointOf(domain);
|
|
68
|
+
return z.strictObject(shape, {
|
|
69
|
+
error: (issue) => {
|
|
70
|
+
const raw = issue;
|
|
71
|
+
if (raw.code !== "unrecognized_keys" || !Array.isArray(raw.keys))
|
|
72
|
+
return undefined;
|
|
73
|
+
return unknownFilterMessage(raw.keys.map(String), validKeys, endpoint);
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Is this a search-shaped tool, i.e. one whose filter vocabulary is worth
|
|
79
|
+
* explaining?
|
|
80
|
+
*
|
|
81
|
+
* Keyed on the *registration* rather than the name only. `openWorldHint: true`
|
|
82
|
+
* is exactly the annotation the codebase reserves for paginated,
|
|
83
|
+
* keyword-filtered listing tools (see CLAUDE.md §MCP Annotations), so it catches
|
|
84
|
+
* `boond_reporting_{companies,projects,resources,synthesis,production_plans}` —
|
|
85
|
+
* strict schemas carrying the same treacherous `perimeter*` / `*States`
|
|
86
|
+
* vocabulary, which a `_search` suffix test silently skipped — and any future
|
|
87
|
+
* hand-rolled search tool that doesn't happen to be named `*_search`. The name
|
|
88
|
+
* check is kept as an OR so a listing tool that omits the annotation is still
|
|
89
|
+
* covered.
|
|
90
|
+
*/
|
|
91
|
+
export function isSearchTool(name, config) {
|
|
92
|
+
return name.endsWith("_search") || config?.annotations?.openWorldHint === true;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Return the registration config a search tool should be registered with:
|
|
96
|
+
* the same object with its `inputSchema` swapped for the hint-enriched clone.
|
|
97
|
+
* Non-search tools and configs without a strict object schema come back
|
|
98
|
+
* untouched (same reference), so this is a no-op for the ~150 other tools.
|
|
99
|
+
*/
|
|
100
|
+
export function withValidationFeedback(name, config, domain) {
|
|
101
|
+
if (!isSearchTool(name, config) || config?.inputSchema === undefined)
|
|
102
|
+
return config;
|
|
103
|
+
const enriched = withFilterHints(config.inputSchema, domain);
|
|
104
|
+
if (enriched === config.inputSchema)
|
|
105
|
+
return config;
|
|
106
|
+
return { ...config, inputSchema: enriched };
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=validation-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-wrapper.js","sourceRoot":"","sources":["../../src/tools/validation-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAuB,MAAM,8BAA8B,CAAC;AAElH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,mEAAmE;AACnE,SAAS,gBAAgB,CAAC,MAA8B;IACtD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC;QAAE,OAAO,MAAwB,CAAC;IAC5G,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,MAAM,GAAG,GAAI,MAAiE,CAAC,IAAI,EAAE,GAAG,CAAC;IACzF,OAAO,GAAG,EAAE,QAAQ,YAAY,CAAC,CAAC,QAAQ,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAI,MAAS,EAAE,MAAmB;IAC/D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;QAC3B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;YACf,MAAM,GAAG,GAAG,KAA0C,CAAC;YACvD,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YACnF,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzE,CAAC;KACF,CAAiB,CAAC;AACrB,CAAC;AAOD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAuB;IAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE,WAAW,EAAE,aAAa,KAAK,IAAI,CAAC;AACjF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAA2B,IAAY,EAAE,MAAS,EAAE,MAAmB;IAC3G,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACpF,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,MAAM,CAAC,WAAW;QAAE,OAAO,MAAM,CAAC;IACnD,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAC9C,CAAC"}
|
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.
|
|
5
|
+
"version": "2.11.0",
|
|
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",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"BOOND_API_TOKEN": "${user_config.api_token}",
|
|
31
31
|
"BOOND_USER": "${user_config.user}",
|
|
32
32
|
"BOOND_PASSWORD": "${user_config.password}",
|
|
33
|
+
"BOOND_MCP_PROFILE": "${user_config.mcp_profile}",
|
|
33
34
|
"BOOND_MCP_DOMAINS": "${user_config.mcp_domains}",
|
|
34
35
|
"BOOND_MCP_EXCLUDE_DOMAINS": "${user_config.mcp_exclude_domains}",
|
|
35
36
|
"BOOND_MCP_OPERATIONS": "${user_config.mcp_operations}",
|
|
@@ -88,6 +89,12 @@
|
|
|
88
89
|
"sensitive": true,
|
|
89
90
|
"required": false
|
|
90
91
|
},
|
|
92
|
+
"mcp_profile": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"title": "Restriction : profil d'accès",
|
|
95
|
+
"description": "Profil préconfiguré parmi recruiting, sales, finance, delivery, admin (plusieurs = séparés par des virgules, union). Raccourci pour ne pas lister les domaines un par un. Ignoré si 'domaines autorisés' est renseigné. Voir docs/access-control.md.",
|
|
96
|
+
"required": false
|
|
97
|
+
},
|
|
91
98
|
"mcp_domains": {
|
|
92
99
|
"type": "string",
|
|
93
100
|
"title": "Restriction : domaines autorisés",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "boondmanager-mcp-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
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",
|
|
@@ -40,6 +40,8 @@
|
|
|
40
40
|
"typecheck": "tsc --noEmit",
|
|
41
41
|
"docs:tools": "npm run build && node scripts/generate-tools-catalog.mjs",
|
|
42
42
|
"docs:tools:check": "npm run build && node scripts/generate-tools-catalog.mjs --check",
|
|
43
|
+
"plugin:manifest": "node scripts/generate-plugin-manifest.mjs",
|
|
44
|
+
"plugin:manifest:check": "node scripts/generate-plugin-manifest.mjs --check",
|
|
43
45
|
"api:monitor:test": "node scripts/test-api-monitor.cjs",
|
|
44
46
|
"api:monitor:save": "node scripts/test-api-monitor.cjs --save",
|
|
45
47
|
"prepare": "husky || true",
|