boondmanager-mcp-server 2.15.2 → 2.17.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/LICENSE +1 -1
- package/NOTICE +16 -2
- package/README.md +60 -15
- package/dist/config/access-policy.d.ts.map +1 -1
- package/dist/config/access-policy.js +6 -18
- package/dist/config/access-policy.js.map +1 -1
- package/dist/config/dictionary-overrides.d.ts.map +1 -1
- package/dist/config/dictionary-overrides.js +2 -12
- package/dist/config/dictionary-overrides.js.map +1 -1
- package/dist/config/env.d.ts +63 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +116 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/profiles.d.ts +22 -8
- package/dist/config/profiles.d.ts.map +1 -1
- package/dist/config/profiles.js +48 -4
- package/dist/config/profiles.js.map +1 -1
- package/dist/constants.d.ts +13 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +25 -1
- package/dist/constants.js.map +1 -1
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +6 -1
- package/dist/icons.js.map +1 -1
- package/dist/index.js +33 -15
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +6 -6
- package/dist/instructions.js.map +1 -1
- package/dist/prompts/index.d.ts +19 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +495 -25
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/periods.d.ts +45 -0
- package/dist/prompts/periods.d.ts.map +1 -0
- package/dist/prompts/periods.js +154 -0
- package/dist/prompts/periods.js.map +1 -0
- package/dist/resources/index.d.ts +14 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +285 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/templates.d.ts +1 -1
- package/dist/resources/templates.d.ts.map +1 -1
- package/dist/resources/templates.js +2 -0
- package/dist/resources/templates.js.map +1 -1
- package/dist/schema-dialect.js.map +1 -1
- package/dist/schemas/filter-aliases.d.ts +1 -1
- package/dist/schemas/filter-aliases.d.ts.map +1 -1
- package/dist/schemas/filter-aliases.js +101 -2
- package/dist/schemas/filter-aliases.js.map +1 -1
- package/dist/schemas/index.d.ts +987 -161
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +853 -323
- package/dist/schemas/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -3
- package/dist/server.js.map +1 -1
- package/dist/services/boond-client.d.ts +29 -213
- package/dist/services/boond-client.d.ts.map +1 -1
- package/dist/services/boond-client.js +29 -1168
- package/dist/services/boond-client.js.map +1 -1
- package/dist/services/dictionary.d.ts +27 -3
- package/dist/services/dictionary.d.ts.map +1 -1
- package/dist/services/dictionary.js +60 -23
- package/dist/services/dictionary.js.map +1 -1
- package/dist/services/document-text.d.ts +32 -0
- package/dist/services/document-text.d.ts.map +1 -0
- package/dist/services/document-text.js +120 -0
- package/dist/services/document-text.js.map +1 -0
- package/dist/services/format/detail.d.ts +16 -0
- package/dist/services/format/detail.d.ts.map +1 -0
- package/dist/services/format/detail.js +36 -0
- package/dist/services/format/detail.js.map +1 -0
- package/dist/services/format/html.d.ts +19 -0
- package/dist/services/format/html.d.ts.map +1 -0
- package/dist/services/format/html.js +87 -0
- package/dist/services/format/html.js.map +1 -0
- package/dist/services/format/list.d.ts +3 -0
- package/dist/services/format/list.d.ts.map +1 -0
- package/dist/services/format/list.js +44 -0
- package/dist/services/format/list.js.map +1 -0
- package/dist/services/format/summary.d.ts +16 -0
- package/dist/services/format/summary.d.ts.map +1 -0
- package/dist/services/format/summary.js +172 -0
- package/dist/services/format/summary.js.map +1 -0
- package/dist/services/format/tab.d.ts +9 -0
- package/dist/services/format/tab.d.ts.map +1 -0
- package/dist/services/format/tab.js +32 -0
- package/dist/services/format/tab.js.map +1 -0
- package/dist/services/http/auth.d.ts +44 -0
- package/dist/services/http/auth.d.ts.map +1 -0
- package/dist/services/http/auth.js +146 -0
- package/dist/services/http/auth.js.map +1 -0
- package/dist/services/http/download.d.ts +60 -0
- package/dist/services/http/download.d.ts.map +1 -0
- package/dist/services/http/download.js +160 -0
- package/dist/services/http/download.js.map +1 -0
- package/dist/services/http/errors.d.ts +45 -0
- package/dist/services/http/errors.d.ts.map +1 -0
- package/dist/services/http/errors.js +188 -0
- package/dist/services/http/errors.js.map +1 -0
- package/dist/services/http/rate-limit.d.ts +40 -0
- package/dist/services/http/rate-limit.d.ts.map +1 -0
- package/dist/services/http/rate-limit.js +92 -0
- package/dist/services/http/rate-limit.js.map +1 -0
- package/dist/services/http/retry.d.ts +46 -0
- package/dist/services/http/retry.d.ts.map +1 -0
- package/dist/services/http/retry.js +101 -0
- package/dist/services/http/retry.js.map +1 -0
- package/dist/services/http/transport.d.ts +73 -0
- package/dist/services/http/transport.d.ts.map +1 -0
- package/dist/services/http/transport.js +272 -0
- package/dist/services/http/transport.js.map +1 -0
- package/dist/services/logger.d.ts +53 -2
- package/dist/services/logger.d.ts.map +1 -1
- package/dist/services/logger.js +82 -21
- package/dist/services/logger.js.map +1 -1
- package/dist/services/oauth.d.ts +12 -0
- package/dist/services/oauth.d.ts.map +1 -1
- package/dist/services/oauth.js +21 -8
- package/dist/services/oauth.js.map +1 -1
- package/dist/services/rate-limiter.d.ts +9 -2
- package/dist/services/rate-limiter.d.ts.map +1 -1
- package/dist/services/rate-limiter.js +18 -6
- package/dist/services/rate-limiter.js.map +1 -1
- package/dist/services/request-context.d.ts +47 -0
- package/dist/services/request-context.d.ts.map +1 -0
- package/dist/services/request-context.js +112 -0
- package/dist/services/request-context.js.map +1 -0
- package/dist/services/search.d.ts +26 -0
- package/dist/services/search.d.ts.map +1 -0
- package/dist/services/search.js +98 -0
- package/dist/services/search.js.map +1 -0
- package/dist/services/update-checker.d.ts.map +1 -1
- package/dist/services/update-checker.js +15 -8
- package/dist/services/update-checker.js.map +1 -1
- package/dist/tools/absences.d.ts +9 -0
- package/dist/tools/absences.d.ts.map +1 -1
- package/dist/tools/absences.js +65 -20
- package/dist/tools/absences.js.map +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +11 -27
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/advantages.d.ts +2 -0
- package/dist/tools/advantages.d.ts.map +1 -1
- package/dist/tools/advantages.js +66 -13
- package/dist/tools/advantages.js.map +1 -1
- package/dist/tools/alerts.d.ts +18 -0
- package/dist/tools/alerts.d.ts.map +1 -0
- package/dist/tools/alerts.js +82 -0
- package/dist/tools/alerts.js.map +1 -0
- package/dist/tools/application.d.ts +2 -1
- package/dist/tools/application.d.ts.map +1 -1
- package/dist/tools/application.js +9 -3
- package/dist/tools/application.js.map +1 -1
- package/dist/tools/contacts.d.ts.map +1 -1
- package/dist/tools/contacts.js +3 -7
- package/dist/tools/contacts.js.map +1 -1
- package/dist/tools/contracts.d.ts +22 -0
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +185 -52
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/crud-factory.d.ts +33 -2
- package/dist/tools/crud-factory.d.ts.map +1 -1
- package/dist/tools/crud-factory.js +42 -15
- package/dist/tools/crud-factory.js.map +1 -1
- package/dist/tools/deliveries.d.ts +3 -0
- package/dist/tools/deliveries.d.ts.map +1 -1
- package/dist/tools/deliveries.js +50 -94
- package/dist/tools/deliveries.js.map +1 -1
- package/dist/tools/description-builders.d.ts +0 -1
- package/dist/tools/description-builders.d.ts.map +1 -1
- package/dist/tools/description-builders.js +46 -3
- package/dist/tools/description-builders.js.map +1 -1
- package/dist/tools/documents.d.ts.map +1 -1
- package/dist/tools/documents.js +73 -21
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/expenses.d.ts.map +1 -1
- package/dist/tools/expenses.js +2 -11
- package/dist/tools/expenses.js.map +1 -1
- package/dist/tools/find.d.ts +61 -0
- package/dist/tools/find.d.ts.map +1 -0
- package/dist/tools/find.js +221 -0
- package/dist/tools/find.js.map +1 -0
- package/dist/tools/flags.d.ts +5 -0
- package/dist/tools/flags.d.ts.map +1 -1
- package/dist/tools/flags.js +116 -1
- package/dist/tools/flags.js.map +1 -1
- package/dist/tools/forms.d.ts +5 -0
- package/dist/tools/forms.d.ts.map +1 -0
- package/dist/tools/forms.js +64 -0
- package/dist/tools/forms.js.map +1 -0
- package/dist/tools/groupments.d.ts +5 -0
- package/dist/tools/groupments.d.ts.map +1 -0
- package/dist/tools/groupments.js +68 -0
- package/dist/tools/groupments.js.map +1 -0
- package/dist/tools/inactivities.d.ts +5 -0
- package/dist/tools/inactivities.d.ts.map +1 -0
- package/dist/tools/inactivities.js +59 -0
- package/dist/tools/inactivities.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/invoices.d.ts.map +1 -1
- package/dist/tools/invoices.js +27 -2
- package/dist/tools/invoices.js.map +1 -1
- package/dist/tools/linked-entity-filters.d.ts +48 -0
- package/dist/tools/linked-entity-filters.d.ts.map +1 -0
- package/dist/tools/linked-entity-filters.js +64 -0
- package/dist/tools/linked-entity-filters.js.map +1 -0
- package/dist/tools/notifications.d.ts.map +1 -1
- package/dist/tools/notifications.js +0 -5
- package/dist/tools/notifications.js.map +1 -1
- package/dist/tools/orders.d.ts.map +1 -1
- package/dist/tools/orders.js +33 -4
- package/dist/tools/orders.js.map +1 -1
- package/dist/tools/parameter-disclosure.js.map +1 -1
- package/dist/tools/payments.d.ts +3 -0
- package/dist/tools/payments.d.ts.map +1 -1
- package/dist/tools/payments.js +43 -109
- package/dist/tools/payments.js.map +1 -1
- package/dist/tools/positionings.d.ts.map +1 -1
- package/dist/tools/positionings.js +9 -39
- package/dist/tools/positionings.js.map +1 -1
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +5 -12
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/provider-invoices.d.ts +2 -0
- package/dist/tools/provider-invoices.d.ts.map +1 -1
- package/dist/tools/provider-invoices.js +30 -111
- package/dist/tools/provider-invoices.js.map +1 -1
- package/dist/tools/purchases.d.ts +2 -0
- package/dist/tools/purchases.d.ts.map +1 -1
- package/dist/tools/purchases.js +50 -104
- package/dist/tools/purchases.js.map +1 -1
- package/dist/tools/registration-decorators.d.ts +28 -0
- package/dist/tools/registration-decorators.d.ts.map +1 -1
- package/dist/tools/registration-decorators.js +107 -0
- package/dist/tools/registration-decorators.js.map +1 -1
- package/dist/tools/resources.d.ts.map +1 -1
- package/dist/tools/resources.js +27 -5
- package/dist/tools/resources.js.map +1 -1
- package/dist/tools/rights.d.ts +101 -0
- package/dist/tools/rights.d.ts.map +1 -0
- package/dist/tools/rights.js +75 -0
- package/dist/tools/rights.js.map +1 -0
- package/dist/tools/tab-tools.js +3 -3
- package/dist/tools/tab-tools.js.map +1 -1
- package/dist/tools/timesheets.d.ts +29 -0
- package/dist/tools/timesheets.d.ts.map +1 -1
- package/dist/tools/timesheets.js +196 -126
- package/dist/tools/timesheets.js.map +1 -1
- package/dist/tools/todolists.d.ts +2 -0
- package/dist/tools/todolists.d.ts.map +1 -1
- package/dist/tools/todolists.js +64 -1
- package/dist/tools/todolists.js.map +1 -1
- package/dist/tools/validations.d.ts +9 -0
- package/dist/tools/validations.d.ts.map +1 -1
- package/dist/tools/validations.js +86 -9
- package/dist/tools/validations.js.map +1 -1
- package/dist/tools/workflows.js +1 -1
- package/dist/tools/workflows.js.map +1 -1
- package/dist/transports/http.d.ts +116 -0
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +422 -92
- package/dist/transports/http.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/manifest.json +7 -7
- package/package.json +14 -10
|
@@ -1,7 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { IdSchema, ValidationDecisionSchema, ValidationSearchSchema } from "../schemas/index.js";
|
|
3
|
+
import { readString } from "../config/env.js";
|
|
4
|
+
import { isFeatureDisabled } from "../config/env-flags.js";
|
|
5
|
+
import { buildJsonApiBody, confirmChoice } from "./crud-factory.js";
|
|
6
|
+
import { composeDescription } from "./description-builders.js";
|
|
2
7
|
import { apiRequest, apiSearch, buildSearchQuery, formatListResponse, formatDetailResponse, } from "../services/boond-client.js";
|
|
3
8
|
import { progressReporterFrom } from "../services/progress.js";
|
|
4
9
|
import { defaultGetDescription } from "./description-builders.js";
|
|
10
|
+
const DECISION_STATE = { validate: "validated", reject: "rejected" };
|
|
11
|
+
export const ValidationDecisionOutputSchema = z.object({
|
|
12
|
+
id: z.string(),
|
|
13
|
+
decided: z.boolean().describe("false quand l'utilisateur a refusé la confirmation (aucun appel API)"),
|
|
14
|
+
state: z.string().optional().describe("État demandé (`validated` / `rejected`)"),
|
|
15
|
+
documentType: z
|
|
16
|
+
.string()
|
|
17
|
+
.optional()
|
|
18
|
+
.describe("Type du document validé (timesreport / absencesreport / expensesreport)"),
|
|
19
|
+
documentId: z.string().optional(),
|
|
20
|
+
reason: z.string().optional(),
|
|
21
|
+
});
|
|
22
|
+
/** `BOOND_MCP_CONFIRM_REJECT=0|false|no|off` opts out of the confirmation prompt on a rejection. */
|
|
23
|
+
function rejectConfirmationDisabled() {
|
|
24
|
+
return isFeatureDisabled(readString("BOOND_MCP_CONFIRM_REJECT"));
|
|
25
|
+
}
|
|
26
|
+
function documentRef(response) {
|
|
27
|
+
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
28
|
+
const rel = entity?.relationships?.dependsOn?.data;
|
|
29
|
+
const ref = Array.isArray(rel) ? rel[0] : rel;
|
|
30
|
+
return ref ? { documentType: ref.type, documentId: ref.id } : {};
|
|
31
|
+
}
|
|
5
32
|
export function registerValidationTools(server) {
|
|
6
33
|
server.registerTool("boond_validations_search", {
|
|
7
34
|
title: "Rechercher des validations",
|
|
@@ -9,14 +36,6 @@ export function registerValidationTools(server) {
|
|
|
9
36
|
|
|
10
37
|
⚠️ \`startMonth\` et \`endMonth\` (YYYY-MM) sont requis par l'API.
|
|
11
38
|
|
|
12
|
-
Args:
|
|
13
|
-
- startMonth (string, requis): YYYY-MM (ex: '2025-01')
|
|
14
|
-
- endMonth (string, requis): YYYY-MM
|
|
15
|
-
- documentTypes (string[], optional): 'absencesReport' | 'timesReport' | 'expensesReport'
|
|
16
|
-
- validationStates (string[], optional): 'waitingForValidation' | 'validated' | 'rejected'
|
|
17
|
-
- resourceTypes (number[], optional)
|
|
18
|
-
- keywords (string, optional): préfixes 'TPS', 'EXP', 'ABS', 'COMP'
|
|
19
|
-
|
|
20
39
|
Returns: Liste des validations correspondantes.`,
|
|
21
40
|
inputSchema: ValidationSearchSchema,
|
|
22
41
|
annotations: {
|
|
@@ -51,5 +70,63 @@ Returns: Liste des validations correspondantes.`,
|
|
|
51
70
|
content: [{ type: "text", text: formatDetailResponse(response) }],
|
|
52
71
|
};
|
|
53
72
|
});
|
|
73
|
+
// Issue #251: approve / reject a CRA, an expense report or an absence request.
|
|
74
|
+
server.registerTool("boond_validations_update", {
|
|
75
|
+
title: "Valider ou refuser un CRA / une note de frais / une absence",
|
|
76
|
+
description: composeDescription({
|
|
77
|
+
purpose: "Approuve (`validate`) ou refuse (`reject`) une validation en attente : CRA, note de frais ou demande d'absence.",
|
|
78
|
+
when: 'après `boond_validations_search` (`validationStates: ["waitingForValidation"]`) et l\'examen du document (`boond_timesheets_get`, `boond_expenses_get`, `boond_absences_get`).',
|
|
79
|
+
instead: "`boond_validations_get` pour relire la validation avant de décider ; il n'existe pas d'autre chemin d'écriture sur le workflow de validation (`state` n'est pas un champ des CRA / notes / absences).",
|
|
80
|
+
behaviour: [
|
|
81
|
+
"`PUT /validations/{id}` avec `state: validated | rejected` (le vocabulaire de `validationStates`) et `reason`. Route déduite du modèle `validation` et non éprouvée sur un tenant de test : un 404 / 405 doit être remonté tel quel.",
|
|
82
|
+
"Un **refus** demande une confirmation à l'utilisateur final si le client MCP déclare la capacité `elicitation` (désactivable par `BOOND_MCP_CONFIRM_REJECT=0`) ; un refus de confirmer renvoie `decided: false` sans appel API.",
|
|
83
|
+
"Idempotent : rejouer la même décision renvoie le même état.",
|
|
84
|
+
],
|
|
85
|
+
returns: "`{ id, decided, state, documentType, documentId, reason? }` et la fiche de la validation mise à jour.",
|
|
86
|
+
}),
|
|
87
|
+
inputSchema: ValidationDecisionSchema,
|
|
88
|
+
outputSchema: ValidationDecisionOutputSchema,
|
|
89
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
90
|
+
}, async (params) => {
|
|
91
|
+
const { id, decision, reason } = params;
|
|
92
|
+
const state = DECISION_STATE[decision];
|
|
93
|
+
if (decision === "reject") {
|
|
94
|
+
const confirmation = await confirmChoice(server, {
|
|
95
|
+
disabled: rejectConfirmationDisabled(),
|
|
96
|
+
message: `Refuser la validation #${id} dans BoondManager${reason ? ` (motif : ${reason})` : ""} ? Le demandeur sera notifié par le workflow.`,
|
|
97
|
+
title: `Refus de la validation #${id}`,
|
|
98
|
+
description: "Choisir « Refuser » pour confirmer, sinon rien ne sera modifié.",
|
|
99
|
+
confirmTitle: "Refuser",
|
|
100
|
+
});
|
|
101
|
+
if (!confirmation.confirmed) {
|
|
102
|
+
return {
|
|
103
|
+
content: [
|
|
104
|
+
{
|
|
105
|
+
type: "text",
|
|
106
|
+
text: `⛔ Refus de la validation #${id} annulé (${confirmation.reason ?? "non confirmé"}).`,
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
structuredContent: { id, decided: false, ...(confirmation.reason ? { reason: confirmation.reason } : {}) },
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const body = buildJsonApiBody("validation", { state, ...(reason !== undefined ? { reason } : {}) }, id);
|
|
114
|
+
const response = await apiRequest(`/validations/${id}`, "PUT", body);
|
|
115
|
+
return {
|
|
116
|
+
content: [
|
|
117
|
+
{
|
|
118
|
+
type: "text",
|
|
119
|
+
text: `✅ Validation #${id} → ${state}.\n\n${formatDetailResponse(response)}`,
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
structuredContent: {
|
|
123
|
+
id,
|
|
124
|
+
decided: true,
|
|
125
|
+
state,
|
|
126
|
+
...documentRef(response),
|
|
127
|
+
...(reason !== undefined ? { reason } : {}),
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
});
|
|
54
131
|
}
|
|
55
132
|
//# sourceMappingURL=validations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/tools/validations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/tools/validations.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/workflows.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAqB,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAqB;IAC5E,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,sEAAsE;QACtE,mEAAmE;QACnE,yDAAyD;QACzD,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAAE,SAAS;QAC5E,MAAM,CAAC,YAAY,CACjB,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAC1B;YACE,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,kBAAkB,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,WAAW;gBACtB,IAAI,EAAE,kIAAkI;gBACxI,OAAO,EACL,mBAAmB,CAAC,CAAC,IAAI,gDAAgD;oBACzE,8EAA8E;oBAC9E,mDAAmD;gBACrD,SAAS,EAAE;oBACT,sGAAsG;iBACvG;gBACD,OAAO,EACL,iGAAiG;oBACjG,0EAA0E;aAC7E,CAAC;YACF,WAAW,EAAE,CAAC,CAAC,UAAU;YACzB,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,KAAK;aACrB;SACF,EACD,
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAqB,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAqB;IAC5E,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,sEAAsE;QACtE,mEAAmE;QACnE,yDAAyD;QACzD,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAAE,SAAS;QAC5E,MAAM,CAAC,YAAY,CACjB,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAC1B;YACE,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,kBAAkB,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,WAAW;gBACtB,IAAI,EAAE,kIAAkI;gBACxI,OAAO,EACL,mBAAmB,CAAC,CAAC,IAAI,gDAAgD;oBACzE,8EAA8E;oBAC9E,mDAAmD;gBACrD,SAAS,EAAE;oBACT,sGAAsG;iBACvG;gBACD,OAAO,EACL,iGAAiG;oBACjG,0EAA0E;aAC7E,CAAC;YACF,WAAW,EAAE,CAAC,CAAC,UAAU;YACzB,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,KAAK;aACrB;SACF,EACD,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,EAAE,CAAuC,CAAC,CAAC;YAC3E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;aAC3C,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Server } from "node:http";
|
|
1
2
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
3
|
export interface HttpTransportOptions {
|
|
3
4
|
host: string;
|
|
@@ -43,21 +44,94 @@ export interface HttpTransportOptions {
|
|
|
43
44
|
* or BOOND_API_TOKEN, or BasicAuth). Intended for single-tenant / self-hosted
|
|
44
45
|
* deployments where the operator owns both the server and the credentials.
|
|
45
46
|
* Set `BOOND_HTTP_STATIC_AUTH=true` to enable via `resolveHttpOptions()`.
|
|
47
|
+
*
|
|
48
|
+
* In this mode **nothing** authenticates the MCP client: whoever reaches the
|
|
49
|
+
* port acts with the operator's BoondManager rights. `apiKey` is what closes
|
|
50
|
+
* that (issue #230), and `assertStaticAuthPolicy` refuses to start without
|
|
51
|
+
* one on a non-loopback bind.
|
|
46
52
|
*/
|
|
47
53
|
staticAuth?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Shared secret the MCP client must present in static-auth mode, as
|
|
56
|
+
* `Authorization: Bearer <key>` or `X-Api-Key: <key>`. Compared in constant
|
|
57
|
+
* time. Set via `MCP_HTTP_API_KEY`. Ignored (with a warning) in OAuth mode,
|
|
58
|
+
* where the Bearer is the BoondManager access token.
|
|
59
|
+
*/
|
|
60
|
+
apiKey?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Explicit opt-out of the "static auth off loopback requires an API key"
|
|
63
|
+
* start-up refusal — for a deployment whose network is the boundary (a
|
|
64
|
+
* private gateway). Set via `MCP_HTTP_INSECURE_STATIC_AUTH=1`.
|
|
65
|
+
*/
|
|
66
|
+
insecureStaticAuth?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Node `server.keepAliveTimeout`: how long an idle keep-alive connection is
|
|
69
|
+
* kept open. Must exceed the idle timeout of any load balancer in front
|
|
70
|
+
* (60 s AWS ALB, 75 s nginx by default) — Node's 5 s default is below both,
|
|
71
|
+
* which is how a LB reuses a connection Node just closed and answers `502`
|
|
72
|
+
* (issue #237). Default 65 s; env `MCP_HTTP_KEEP_ALIVE_TIMEOUT_MS`.
|
|
73
|
+
*/
|
|
74
|
+
keepAliveTimeoutMs?: number;
|
|
75
|
+
/**
|
|
76
|
+
* Node `server.headersTimeout`: budget to receive a request's headers. Node
|
|
77
|
+
* requires it above `keepAliveTimeout`; a lower value is bumped to
|
|
78
|
+
* `keepAliveTimeoutMs + 1000` with a warning. Default 66 s; env
|
|
79
|
+
* `MCP_HTTP_HEADERS_TIMEOUT_MS`.
|
|
80
|
+
*/
|
|
81
|
+
headersTimeoutMs?: number;
|
|
82
|
+
/**
|
|
83
|
+
* Node `server.requestTimeout`: budget to receive a whole request (headers +
|
|
84
|
+
* body). Generous because it also bounds slow clients on long tool calls.
|
|
85
|
+
* Default 5 min; env `MCP_HTTP_REQUEST_TIMEOUT_MS`.
|
|
86
|
+
*/
|
|
87
|
+
requestTimeoutMs?: number;
|
|
88
|
+
/**
|
|
89
|
+
* OAuth mode only (issue #234): validate each Bearer against BoondManager
|
|
90
|
+
* (`GET /application/current-user`, cached per token for
|
|
91
|
+
* `tokenValidationTtlMs`) **before** dispatching, so an expired or revoked
|
|
92
|
+
* token is answered with HTTP `401` + `WWW-Authenticate: … error="invalid_token"`
|
|
93
|
+
* (RFC 6750 §3.1) — the signal a spec-compliant MCP client turns into a new
|
|
94
|
+
* authorization flow. Without it the 401 only surfaces inside a `tools/call`
|
|
95
|
+
* result, which no client re-authorizes from. Off by default because it
|
|
96
|
+
* costs one BoondManager call per token per TTL; env `MCP_HTTP_VALIDATE_TOKEN`.
|
|
97
|
+
*/
|
|
98
|
+
validateToken?: boolean;
|
|
99
|
+
/** Positive/negative cache lifetime of a token validation, in ms. Default 60 s; env `MCP_HTTP_TOKEN_VALIDATION_TTL_MS`. */
|
|
100
|
+
tokenValidationTtlMs?: number;
|
|
101
|
+
/**
|
|
102
|
+
* Grace period `close()` gives in-flight connections (an open SSE stream, a
|
|
103
|
+
* request mid-body) before destroying them with `closeAllConnections()`.
|
|
104
|
+
* Idle keep-alive connections are closed immediately. Default 10 s; env
|
|
105
|
+
* `MCP_HTTP_SHUTDOWN_TIMEOUT_MS`.
|
|
106
|
+
*/
|
|
107
|
+
shutdownTimeoutMs?: number;
|
|
48
108
|
}
|
|
49
109
|
export interface HttpServerHandle {
|
|
110
|
+
/**
|
|
111
|
+
* Stop accepting connections, close idle ones now and in-flight ones after
|
|
112
|
+
* `shutdownTimeoutMs`, then resolve. Idempotent: a second call (a second
|
|
113
|
+
* SIGTERM) returns the same promise instead of failing on an already-closed
|
|
114
|
+
* server (issue #237).
|
|
115
|
+
*/
|
|
50
116
|
close: () => Promise<void>;
|
|
51
117
|
address: {
|
|
52
118
|
host: string;
|
|
53
119
|
port: number;
|
|
54
120
|
path: string;
|
|
55
121
|
};
|
|
122
|
+
/** The underlying Node server — for observability (applied timeouts) and tests. */
|
|
123
|
+
server: Server;
|
|
56
124
|
/** Current count of live stateful sessions (always 0 in stateless mode). */
|
|
57
125
|
sessionCount: () => number;
|
|
58
126
|
/** Manually trigger an idle sweep; returns the number of sessions reaped. */
|
|
59
127
|
sweepIdleSessions: () => Promise<number>;
|
|
60
128
|
}
|
|
129
|
+
export declare const DEFAULT_KEEP_ALIVE_TIMEOUT_MS = 65000;
|
|
130
|
+
export declare const DEFAULT_HEADERS_TIMEOUT_MS = 66000;
|
|
131
|
+
export declare const DEFAULT_REQUEST_TIMEOUT_MS = 300000;
|
|
132
|
+
export declare const DEFAULT_SHUTDOWN_TIMEOUT_MS = 10000;
|
|
133
|
+
export declare const DEFAULT_TOKEN_VALIDATION_TTL_MS = 60000;
|
|
134
|
+
export declare const MAX_TOKEN_VALIDATION_ENTRIES = 500;
|
|
61
135
|
/**
|
|
62
136
|
* Resolves the effective Host header allow-list given user options and the
|
|
63
137
|
* bound listen interface. Returns an empty array when validation is disabled
|
|
@@ -109,5 +183,47 @@ export declare function isOriginAllowed(policy: OriginPolicy, origin: string): b
|
|
|
109
183
|
*/
|
|
110
184
|
export declare function isDiscoveryPath(reqUrl: string | undefined, mcpPath: string): boolean;
|
|
111
185
|
export declare function resolveHttpOptions(): HttpTransportOptions;
|
|
186
|
+
/**
|
|
187
|
+
* The socket timeouts applied to the Node server, with the one invariant Node
|
|
188
|
+
* itself enforces made explicit: `headersTimeout` must be strictly greater
|
|
189
|
+
* than `keepAliveTimeout`, otherwise a kept-alive connection can be timed out
|
|
190
|
+
* while waiting for its next request's headers. A configuration that breaks it
|
|
191
|
+
* is repaired (headers = keep-alive + 1 s) and logged rather than refused.
|
|
192
|
+
*/
|
|
193
|
+
export declare function resolveServerTimeouts(options: Pick<HttpTransportOptions, "keepAliveTimeoutMs" | "headersTimeoutMs" | "requestTimeoutMs">): {
|
|
194
|
+
keepAliveTimeout: number;
|
|
195
|
+
headersTimeout: number;
|
|
196
|
+
requestTimeout: number;
|
|
197
|
+
coerced: boolean;
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Refuses a static-auth deployment that would expose the operator's
|
|
201
|
+
* BoondManager credentials to anyone who can reach the port (issue #230).
|
|
202
|
+
*
|
|
203
|
+
* Static auth skips the Bearer check entirely, and off loopback the `Host` /
|
|
204
|
+
* `Origin` validations are disabled too — the Docker image binds `0.0.0.0` by
|
|
205
|
+
* default — so with no `apiKey` the endpoint is an anonymous proxy carrying
|
|
206
|
+
* the operator's read *and* write rights. Loopback is exempt (only local
|
|
207
|
+
* processes can connect), and `insecureStaticAuth` is the explicit,
|
|
208
|
+
* named opt-out for a deployment whose network is the boundary. Throwing here
|
|
209
|
+
* rather than warning is deliberate: a warning on stderr is exactly what an
|
|
210
|
+
* operator running `docker run -e BOOND_HTTP_STATIC_AUTH=true` does not read.
|
|
211
|
+
*/
|
|
212
|
+
export declare function assertStaticAuthPolicy(options: HttpTransportOptions): void;
|
|
213
|
+
/**
|
|
214
|
+
* Constant-time comparison of a presented API key against the configured one.
|
|
215
|
+
*
|
|
216
|
+
* `timingSafeEqual` throws on buffers of different lengths, so a length
|
|
217
|
+
* mismatch is answered by comparing the expected key against itself first —
|
|
218
|
+
* the call still costs one full comparison — and then returning `false`. The
|
|
219
|
+
* key's *length* is therefore observable, which is acceptable: it is not
|
|
220
|
+
* secret for a random key (the README generates 32 random bytes), and the
|
|
221
|
+
* alternative — hashing both sides to equalise lengths — reads to static
|
|
222
|
+
* analysers as a password stored under a fast hash, which it is not.
|
|
223
|
+
*/
|
|
224
|
+
export declare function isApiKeyMatch(presented: string | null | undefined, expected: string): boolean;
|
|
225
|
+
/** Max accepted request body size (1 MiB). MCP initialize payloads are tiny;
|
|
226
|
+
* this caps the memory a single authenticated request can force us to buffer. */
|
|
227
|
+
export declare const MAX_BODY_BYTES: number;
|
|
112
228
|
export declare function startHttpTransport(createServerFactory: () => McpServer, options: HttpTransportOptions): Promise<HttpServerHandle>;
|
|
113
229
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"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"}
|