boondmanager-mcp-server 2.1.0 → 2.2.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 +21 -0
- package/dist/config/access-policy.d.ts +68 -0
- package/dist/config/access-policy.d.ts.map +1 -0
- package/dist/config/access-policy.js +169 -0
- package/dist/config/access-policy.js.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +76 -3
- package/dist/constants.js.map +1 -1
- package/dist/prompts/index.d.ts +13 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +17 -1
- package/dist/prompts/index.js.map +1 -1
- package/dist/schemas/index.d.ts +11 -9
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +22 -9
- package/dist/schemas/index.js.map +1 -1
- package/dist/server.d.ts +29 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +83 -77
- package/dist/server.js.map +1 -1
- package/dist/tools/actions.d.ts.map +1 -1
- package/dist/tools/actions.js +42 -14
- package/dist/tools/actions.js.map +1 -1
- package/dist/tools/workflows.d.ts +2 -1
- package/dist/tools/workflows.d.ts.map +1 -1
- package/dist/tools/workflows.js +7 -1
- package/dist/tools/workflows.js.map +1 -1
- package/manifest.json +31 -2
- package/package.json +1 -1
package/dist/tools/actions.js
CHANGED
|
@@ -47,7 +47,16 @@ Returns: Liste des actions correspondantes.`,
|
|
|
47
47
|
// Create action
|
|
48
48
|
server.registerTool("boond_actions_create", {
|
|
49
49
|
title: "Créer une action",
|
|
50
|
-
description: `Crée une nouvelle action (appel, email, RDV, note) dans BoondManager,
|
|
50
|
+
description: `Crée une nouvelle action (appel, email, RDV, note) dans BoondManager, rattachée à un contact, candidat, ressource, opportunité ou projet (relation dependsOn, obligatoire).
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
- typeOf (number, requis): ID numérique du type d'action (dictionnaire setting.action.*, via boond_application_dictionary)
|
|
54
|
+
- title, text (string, optional): Titre et contenu de l'action
|
|
55
|
+
- startDate, endDate (string, optional): Dates ISO avec timezone (ex: 2026-06-05T10:00:00+0200)
|
|
56
|
+
- contactId | candidateId | resourceId | opportunityId | projectId (string, un requis): Entité de rattachement
|
|
57
|
+
- companyId (string, optional): Société, uniquement en complément d'un contactId
|
|
58
|
+
|
|
59
|
+
Returns: L'action créée avec son ID.`,
|
|
51
60
|
inputSchema: ActionCreateSchema,
|
|
52
61
|
annotations: {
|
|
53
62
|
readOnlyHint: false,
|
|
@@ -56,27 +65,46 @@ Returns: Liste des actions correspondantes.`,
|
|
|
56
65
|
openWorldHint: false,
|
|
57
66
|
},
|
|
58
67
|
}, async (params) => {
|
|
59
|
-
const { candidateId, resourceId, contactId, companyId, ...attrs } = params;
|
|
68
|
+
const { candidateId, resourceId, contactId, opportunityId, projectId, companyId, ...attrs } = params;
|
|
69
|
+
// The API requires a polymorphic `dependsOn` relationship pointing to the
|
|
70
|
+
// entity the action is attached to (422 "Missing required relationship"
|
|
71
|
+
// otherwise). `company` is only accepted alongside a contact `dependsOn`.
|
|
72
|
+
const dependsOnCandidates = [
|
|
73
|
+
{ id: contactId, type: "contact" },
|
|
74
|
+
{ id: candidateId, type: "candidate" },
|
|
75
|
+
{ id: resourceId, type: "resource" },
|
|
76
|
+
{ id: opportunityId, type: "opportunity" },
|
|
77
|
+
{ id: projectId, type: "project" },
|
|
78
|
+
];
|
|
79
|
+
const dependsOn = dependsOnCandidates.find((c) => c.id);
|
|
80
|
+
if (!dependsOn) {
|
|
81
|
+
return {
|
|
82
|
+
isError: true,
|
|
83
|
+
content: [
|
|
84
|
+
{
|
|
85
|
+
type: "text",
|
|
86
|
+
text: "❌ L'API BoondManager exige de rattacher l'action à une entité (dependsOn). Fournissez l'un des paramètres : contactId, candidateId, resourceId, opportunityId ou projectId. (companyId seul ne suffit pas : une action ne peut pas être rattachée directement à une société, passez par un contact.)",
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
60
91
|
const body = buildJsonApiBody("action", attrs);
|
|
61
|
-
const relationships = {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (
|
|
65
|
-
relationships.resource = { data: { id: resourceId, type: "resource" } };
|
|
66
|
-
if (contactId)
|
|
67
|
-
relationships.contact = { data: { id: contactId, type: "contact" } };
|
|
68
|
-
if (companyId)
|
|
92
|
+
const relationships = {
|
|
93
|
+
dependsOn: { data: { id: dependsOn.id, type: dependsOn.type } },
|
|
94
|
+
};
|
|
95
|
+
if (companyId && dependsOn.type === "contact") {
|
|
69
96
|
relationships.company = { data: { id: companyId, type: "company" } };
|
|
70
|
-
if (Object.keys(relationships).length > 0) {
|
|
71
|
-
body.data.relationships = relationships;
|
|
72
97
|
}
|
|
98
|
+
body.data.relationships = relationships;
|
|
73
99
|
const response = await apiRequest("/actions", "POST", body);
|
|
74
100
|
const entity = Array.isArray(response.data) ? response.data[0] : response.data;
|
|
75
101
|
return {
|
|
76
|
-
content: [
|
|
102
|
+
content: [
|
|
103
|
+
{
|
|
77
104
|
type: "text",
|
|
78
105
|
text: `✅ Action créée avec succès.\nID: ${entity?.id}\n\n${formatDetailResponse(response)}`,
|
|
79
|
-
}
|
|
106
|
+
},
|
|
107
|
+
],
|
|
80
108
|
};
|
|
81
109
|
});
|
|
82
110
|
// Delete action
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE;;;;;;;4CAOyB;QACtC,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;SACnF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,QAAQ;QACrB,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,YAAY,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;SAC3E,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/tools/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type AccessPolicy } from "../config/access-policy.js";
|
|
2
3
|
/**
|
|
3
4
|
* Workflow tools — same runbooks as the MCP prompts in `src/prompts/index.ts`,
|
|
4
5
|
* but exposed via `tools/list` instead of `prompts/list`.
|
|
@@ -17,5 +18,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
17
18
|
* Same args, same output. The runbook returned in the tool result is
|
|
18
19
|
* exactly the text the prompt would have produced.
|
|
19
20
|
*/
|
|
20
|
-
export declare function registerWorkflowTools(server: McpServer): void;
|
|
21
|
+
export declare function registerWorkflowTools(server: McpServer, policy?: AccessPolicy): void;
|
|
21
22
|
//# sourceMappingURL=workflows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CA+BpF"}
|
package/dist/tools/workflows.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PROMPTS } from "../prompts/index.js";
|
|
2
|
+
import { isDomainAllowed } from "../config/access-policy.js";
|
|
2
3
|
/**
|
|
3
4
|
* Workflow tools — same runbooks as the MCP prompts in `src/prompts/index.ts`,
|
|
4
5
|
* but exposed via `tools/list` instead of `prompts/list`.
|
|
@@ -17,8 +18,13 @@ import { PROMPTS } from "../prompts/index.js";
|
|
|
17
18
|
* Same args, same output. The runbook returned in the tool result is
|
|
18
19
|
* exactly the text the prompt would have produced.
|
|
19
20
|
*/
|
|
20
|
-
export function registerWorkflowTools(server) {
|
|
21
|
+
export function registerWorkflowTools(server, policy) {
|
|
21
22
|
for (const p of PROMPTS) {
|
|
23
|
+
// Mirror the prompt-level domain filter: cut a workflow tool when any
|
|
24
|
+
// domain its source prompt orchestrates is filtered out (keeps the
|
|
25
|
+
// workflow tools and the MCP prompts perfectly in sync).
|
|
26
|
+
if (policy && !p.domains.every((d) => isDomainAllowed(policy, d)))
|
|
27
|
+
continue;
|
|
22
28
|
server.registerTool(`boond_workflow_${p.name}`, {
|
|
23
29
|
title: p.title,
|
|
24
30
|
description: p.description +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
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;AAEhF;;;;;;;;;;;;;;;;;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,EACT,CAAC,CAAC,WAAW;gBACb,wCAAwC,CAAC,CAAC,IAAI,KAAK;gBACnD,0FAA0F;gBAC1F,wGAAwG;YAC1G,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,KAAK,EAAE,MAAM,EAAE,EAAE;YACf,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"}
|
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.2.0",
|
|
6
6
|
"description": "MCP Server for BoondManager API - 167 tools, 11 prompts, 21 resources (ERP/CRM)",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Frédéric Auguste",
|
|
@@ -29,7 +29,11 @@
|
|
|
29
29
|
"BOOND_CLIENT_KEY": "${user_config.client_key}",
|
|
30
30
|
"BOOND_API_TOKEN": "${user_config.api_token}",
|
|
31
31
|
"BOOND_USER": "${user_config.user}",
|
|
32
|
-
"BOOND_PASSWORD": "${user_config.password}"
|
|
32
|
+
"BOOND_PASSWORD": "${user_config.password}",
|
|
33
|
+
"BOOND_MCP_DOMAINS": "${user_config.mcp_domains}",
|
|
34
|
+
"BOOND_MCP_EXCLUDE_DOMAINS": "${user_config.mcp_exclude_domains}",
|
|
35
|
+
"BOOND_MCP_OPERATIONS": "${user_config.mcp_operations}",
|
|
36
|
+
"BOOND_MCP_READ_ONLY": "${user_config.mcp_read_only}"
|
|
33
37
|
}
|
|
34
38
|
}
|
|
35
39
|
},
|
|
@@ -81,6 +85,31 @@
|
|
|
81
85
|
"description": "Mot de passe BoondManager pour l'authentification BasicAuth.",
|
|
82
86
|
"sensitive": true,
|
|
83
87
|
"required": false
|
|
88
|
+
},
|
|
89
|
+
"mcp_domains": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"title": "Restriction : domaines autorisés",
|
|
92
|
+
"description": "Liste blanche de domaines séparés par des virgules (ex: invoices,payments,application). Vide = tous les domaines. Voir docs/access-control.md.",
|
|
93
|
+
"required": false
|
|
94
|
+
},
|
|
95
|
+
"mcp_exclude_domains": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"title": "Restriction : domaines exclus",
|
|
98
|
+
"description": "Liste noire de domaines séparés par des virgules (ex: candidates,resources), appliquée après la liste blanche. Vide = aucune exclusion.",
|
|
99
|
+
"required": false
|
|
100
|
+
},
|
|
101
|
+
"mcp_operations": {
|
|
102
|
+
"type": "string",
|
|
103
|
+
"title": "Restriction : opérations autorisées",
|
|
104
|
+
"description": "Opérations autorisées séparées par des virgules parmi read,create,update,delete. Vide = toutes. Ignoré si 'Lecture seule' est activé.",
|
|
105
|
+
"required": false
|
|
106
|
+
},
|
|
107
|
+
"mcp_read_only": {
|
|
108
|
+
"type": "boolean",
|
|
109
|
+
"title": "Restriction : lecture seule",
|
|
110
|
+
"description": "Si activé, expose uniquement les outils de lecture (bloque création, modification et suppression). N'est pas une frontière de sécurité dure : les droits du compte BoondManager s'appliquent en plus.",
|
|
111
|
+
"default": false,
|
|
112
|
+
"required": false
|
|
84
113
|
}
|
|
85
114
|
},
|
|
86
115
|
"tools_generated": true,
|
package/package.json
CHANGED