boondmanager-mcp-server 1.7.4 → 1.8.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/dist/prompts/index.d.ts +9 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/index.js.map +1 -1
- package/dist/schemas/index.d.ts +50 -2
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +531 -168
- package/dist/schemas/index.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +38 -7
- package/dist/server.js.map +1 -1
- package/dist/services/boond-client.d.ts +1 -5
- package/dist/services/boond-client.d.ts.map +1 -1
- package/dist/services/boond-client.js +85 -13
- package/dist/services/boond-client.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/notifications.d.ts.map +1 -1
- package/dist/tools/notifications.js +9 -2
- package/dist/tools/notifications.js.map +1 -1
- package/dist/tools/reporting.d.ts.map +1 -1
- package/dist/tools/reporting.js +46 -8
- package/dist/tools/reporting.js.map +1 -1
- package/dist/tools/timesheets.d.ts.map +1 -1
- package/dist/tools/timesheets.js +8 -5
- package/dist/tools/timesheets.js.map +1 -1
- package/dist/tools/validations.d.ts.map +1 -1
- package/dist/tools/validations.js +12 -2
- package/dist/tools/validations.js.map +1 -1
- package/dist/tools/workflows.d.ts +21 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +43 -0
- package/dist/tools/workflows.js.map +1 -0
- package/manifest.json +2 -2
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/tools/notifications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/tools/notifications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAErH,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EAAE;;;;;;;;;kDAS+B;QAC5C,WAAW,EAAE,wBAAwB;QACrC,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,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC7E,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC;SACzF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,qEAAqE;QAClF,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,kBAAkB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;SAC3E,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../src/tools/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"reporting.d.ts","sourceRoot":"","sources":["../../src/tools/reporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4E9D"}
|
package/dist/tools/reporting.js
CHANGED
|
@@ -1,24 +1,62 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ReportingDateOptionalSchema, ReportingDateRequiredSchema } from "../schemas/index.js";
|
|
2
2
|
import { apiRequest, buildSearchQuery, formatListResponse } from "../services/boond-client.js";
|
|
3
3
|
export function registerReportingTools(server) {
|
|
4
4
|
const reportingEndpoints = [
|
|
5
|
-
{
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
{
|
|
6
|
+
name: "companies",
|
|
7
|
+
path: "/reporting-companies",
|
|
8
|
+
title: "Reporting sociétés",
|
|
9
|
+
description: "Recherche le reporting des sociétés (CA, marge, activité...).",
|
|
10
|
+
entity: "reporting société",
|
|
11
|
+
datesRequired: true,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: "projects",
|
|
15
|
+
path: "/reporting-projects",
|
|
16
|
+
title: "Reporting projets",
|
|
17
|
+
description: "Recherche le reporting des projets (CA, marge, rentabilité...).",
|
|
18
|
+
entity: "reporting projet",
|
|
19
|
+
datesRequired: false,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "resources",
|
|
23
|
+
path: "/reporting-resources",
|
|
24
|
+
title: "Reporting ressources",
|
|
25
|
+
description: "Recherche le reporting des ressources (taux d'occupation, CA, productivité...).",
|
|
26
|
+
entity: "reporting ressource",
|
|
27
|
+
datesRequired: true,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "synthesis",
|
|
31
|
+
path: "/reporting-synthesis",
|
|
32
|
+
title: "Reporting synthèse",
|
|
33
|
+
description: "Recherche le reporting de synthèse globale.",
|
|
34
|
+
entity: "reporting synthèse",
|
|
35
|
+
datesRequired: true,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "production_plans",
|
|
39
|
+
path: "/reporting-production-plans",
|
|
40
|
+
title: "Reporting plans de production",
|
|
41
|
+
description: "Recherche le reporting des plans de production.",
|
|
42
|
+
entity: "reporting plan de production",
|
|
43
|
+
datesRequired: true,
|
|
44
|
+
},
|
|
10
45
|
];
|
|
11
46
|
for (const ep of reportingEndpoints) {
|
|
47
|
+
const schema = ep.datesRequired ? ReportingDateRequiredSchema : ReportingDateOptionalSchema;
|
|
48
|
+
const datesNote = ep.datesRequired ? "\n⚠️ `startDate` + `endDate` (YYYY-MM-DD) sont REQUIS par l'API." : "";
|
|
12
49
|
server.registerTool(`boond_reporting_${ep.name}`, {
|
|
13
50
|
title: ep.title,
|
|
14
|
-
description: `${ep.description}
|
|
51
|
+
description: `${ep.description}${datesNote}
|
|
15
52
|
|
|
16
53
|
Args:
|
|
54
|
+
- startDate, endDate (string${ep.datesRequired ? ", requis" : ", optional"}): YYYY-MM-DD
|
|
17
55
|
- keywords (string, optional): Termes de recherche
|
|
18
56
|
- page, pageSize: Pagination
|
|
19
57
|
|
|
20
58
|
Returns: Données de reporting.`,
|
|
21
|
-
inputSchema:
|
|
59
|
+
inputSchema: schema,
|
|
22
60
|
annotations: {
|
|
23
61
|
readOnlyHint: true,
|
|
24
62
|
destructiveHint: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporting.js","sourceRoot":"","sources":["../../src/tools/reporting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"reporting.js","sourceRoot":"","sources":["../../src/tools/reporting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAY/F,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,kBAAkB,GAAwB;QAC9C;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,+DAA+D;YAC5E,MAAM,EAAE,mBAAmB;YAC3B,aAAa,EAAE,IAAI;SACpB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,iEAAiE;YAC9E,MAAM,EAAE,kBAAkB;YAC1B,aAAa,EAAE,KAAK;SACrB;QACD;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE,iFAAiF;YAC9F,MAAM,EAAE,qBAAqB;YAC7B,aAAa,EAAE,IAAI;SACpB;QACD;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,6CAA6C;YAC1D,MAAM,EAAE,oBAAoB;YAC5B,aAAa,EAAE,IAAI;SACpB;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,+BAA+B;YACtC,WAAW,EAAE,iDAAiD;YAC9D,MAAM,EAAE,8BAA8B;YACtC,aAAa,EAAE,IAAI;SACpB;KACF,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,2BAA2B,CAAC;QAC5F,MAAM,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7G,MAAM,CAAC,YAAY,CACjB,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAC5B;YACE,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,GAAG,SAAS;;;gCAGlB,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;;;;+BAI7C;YACvB,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE;gBACX,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,KAAK;gBACtB,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,IAAI;aACpB;SACF,EACD,KAAK,EAAE,MAAqG,EAAE,EAAE;YAC9G,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;aACpF,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timesheets.d.ts","sourceRoot":"","sources":["../../src/tools/timesheets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"timesheets.d.ts","sourceRoot":"","sources":["../../src/tools/timesheets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyCzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiG9D"}
|
package/dist/tools/timesheets.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ResourceTimesheetSchema, TimesheetSearchSchema, TimesheetGetSchema
|
|
1
|
+
import { ResourceTimesheetSchema, TimesheetSearchSchema, TimesheetGetSchema } from "../schemas/index.js";
|
|
2
2
|
import { apiRequest, buildSearchQuery, formatDetailResponse } from "../services/boond-client.js";
|
|
3
3
|
import { CHARACTER_LIMIT } from "../constants.js";
|
|
4
4
|
function formatTimesheetSummary(response) {
|
|
@@ -65,13 +65,16 @@ Returns: Liste des feuilles de temps de la ressource avec jours/heures et statut
|
|
|
65
65
|
// Search all timesheets
|
|
66
66
|
server.registerTool("boond_timesheets_search", {
|
|
67
67
|
title: "Rechercher des feuilles de temps",
|
|
68
|
-
description: `Recherche des feuilles de temps dans BoondManager
|
|
68
|
+
description: `Recherche des feuilles de temps (CRA mensuels) dans BoondManager.
|
|
69
|
+
|
|
70
|
+
⚠️ \`startMonth\` et \`endMonth\` (format YYYY-MM) sont requis par l'API — passer YYYY-MM-DD ou les omettre renvoie un 422.
|
|
69
71
|
|
|
70
72
|
Args:
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
+
- startMonth (string, requis): Mois de début YYYY-MM (ex: '2025-01')
|
|
74
|
+
- endMonth (string, requis): Mois de fin YYYY-MM (ex: '2025-03')
|
|
75
|
+
- keywords (string, optional): Mots-clés
|
|
73
76
|
- page (number): Numéro de page (défaut: 1)
|
|
74
|
-
- pageSize (number): Résultats par page (défaut:
|
|
77
|
+
- pageSize (number): Résultats par page (défaut: 30)
|
|
75
78
|
|
|
76
79
|
Returns: Liste des feuilles de temps correspondantes.`,
|
|
77
80
|
inputSchema: TimesheetSearchSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timesheets.js","sourceRoot":"","sources":["../../src/tools/timesheets.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"timesheets.js","sourceRoot":"","sources":["../../src/tools/timesheets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/tools/validations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/tools/validations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuD/D"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import { IdSchema,
|
|
1
|
+
import { IdSchema, ValidationSearchSchema } from "../schemas/index.js";
|
|
2
2
|
import { apiRequest, buildSearchQuery, formatListResponse, formatDetailResponse } from "../services/boond-client.js";
|
|
3
3
|
export function registerValidationTools(server) {
|
|
4
4
|
server.registerTool("boond_validations_search", {
|
|
5
5
|
title: "Rechercher des validations",
|
|
6
6
|
description: `Recherche des validations en attente dans BoondManager (absences, notes de frais, feuilles de temps...).
|
|
7
7
|
|
|
8
|
+
⚠️ \`startMonth\` et \`endMonth\` (YYYY-MM) sont requis par l'API.
|
|
9
|
+
|
|
10
|
+
Args:
|
|
11
|
+
- startMonth (string, requis): YYYY-MM (ex: '2025-01')
|
|
12
|
+
- endMonth (string, requis): YYYY-MM
|
|
13
|
+
- documentTypes (string[], optional): 'absencesReport' | 'timesReport' | 'expensesReport'
|
|
14
|
+
- validationStates (string[], optional): 'waitingForValidation' | 'validated' | 'rejected'
|
|
15
|
+
- resourceTypes (number[], optional)
|
|
16
|
+
- keywords (string, optional): préfixes 'TPS', 'EXP', 'ABS', 'COMP'
|
|
17
|
+
|
|
8
18
|
Returns: Liste des validations correspondantes.`,
|
|
9
|
-
inputSchema:
|
|
19
|
+
inputSchema: ValidationSearchSchema,
|
|
10
20
|
annotations: {
|
|
11
21
|
readOnlyHint: true,
|
|
12
22
|
destructiveHint: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/tools/validations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../src/tools/validations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAErH,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE;;;;;;;;;;;;gDAY6B;QAC1C,WAAW,EAAE,sBAAsB;QACnC,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,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3E,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;SACvF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,mEAAmE;QAChF,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,gBAAgB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;SAC3E,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Workflow tools — same runbooks as the MCP prompts in `src/prompts/index.ts`,
|
|
4
|
+
* but exposed via `tools/list` instead of `prompts/list`.
|
|
5
|
+
*
|
|
6
|
+
* Why both? Some MCP clients (notably claude.ai's "Cowork" connector menu)
|
|
7
|
+
* mishandle the `prompts/get` response: instead of injecting the returned
|
|
8
|
+
* user message into the conversation, they treat it as a virtual file
|
|
9
|
+
* attachment named `{prompt_name}_text` and the model then tries to `Read`
|
|
10
|
+
* it from the uploads folder, finds nothing, and asks the user to upload
|
|
11
|
+
* the file. Tools, on the other hand, are universally well-supported:
|
|
12
|
+
* the result content is fed back into the model the same way as any
|
|
13
|
+
* other tool call.
|
|
14
|
+
*
|
|
15
|
+
* Implementation: each prompt is mirrored 1:1 as a tool that calls the
|
|
16
|
+
* same `build()` function. Tool name pattern: `boond_workflow_{prompt_name}`.
|
|
17
|
+
* Same args, same output. The runbook returned in the tool result is
|
|
18
|
+
* exactly the text the prompt would have produced.
|
|
19
|
+
*/
|
|
20
|
+
export declare function registerWorkflowTools(server: McpServer): void;
|
|
21
|
+
//# sourceMappingURL=workflows.d.ts.map
|
|
@@ -0,0 +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;AAGzE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2B7D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PROMPTS } from "../prompts/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Workflow tools — same runbooks as the MCP prompts in `src/prompts/index.ts`,
|
|
4
|
+
* but exposed via `tools/list` instead of `prompts/list`.
|
|
5
|
+
*
|
|
6
|
+
* Why both? Some MCP clients (notably claude.ai's "Cowork" connector menu)
|
|
7
|
+
* mishandle the `prompts/get` response: instead of injecting the returned
|
|
8
|
+
* user message into the conversation, they treat it as a virtual file
|
|
9
|
+
* attachment named `{prompt_name}_text` and the model then tries to `Read`
|
|
10
|
+
* it from the uploads folder, finds nothing, and asks the user to upload
|
|
11
|
+
* the file. Tools, on the other hand, are universally well-supported:
|
|
12
|
+
* the result content is fed back into the model the same way as any
|
|
13
|
+
* other tool call.
|
|
14
|
+
*
|
|
15
|
+
* Implementation: each prompt is mirrored 1:1 as a tool that calls the
|
|
16
|
+
* same `build()` function. Tool name pattern: `boond_workflow_{prompt_name}`.
|
|
17
|
+
* Same args, same output. The runbook returned in the tool result is
|
|
18
|
+
* exactly the text the prompt would have produced.
|
|
19
|
+
*/
|
|
20
|
+
export function registerWorkflowTools(server) {
|
|
21
|
+
for (const p of PROMPTS) {
|
|
22
|
+
server.registerTool(`boond_workflow_${p.name}`, {
|
|
23
|
+
title: p.title,
|
|
24
|
+
description: p.description +
|
|
25
|
+
` Équivalent en outil du prompt MCP \`${p.name}\` ` +
|
|
26
|
+
"(utile pour les clients qui ne gèrent pas correctement les prompts MCP, ex: claude.ai). " +
|
|
27
|
+
"Retourne un runbook texte que le modèle doit ensuite exécuter en appelant les outils Boond référencés.",
|
|
28
|
+
inputSchema: p.argsSchema,
|
|
29
|
+
annotations: {
|
|
30
|
+
readOnlyHint: true,
|
|
31
|
+
destructiveHint: false,
|
|
32
|
+
idempotentHint: true,
|
|
33
|
+
openWorldHint: false,
|
|
34
|
+
},
|
|
35
|
+
}, async (params) => {
|
|
36
|
+
const text = p.build((params ?? {}));
|
|
37
|
+
return {
|
|
38
|
+
content: [{ type: "text", text }],
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,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,8 +2,8 @@
|
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "boondmanager-mcp-server",
|
|
4
4
|
"display_name": "BoondManager MCP Server",
|
|
5
|
-
"version": "1.
|
|
6
|
-
"description": "MCP Server for BoondManager API -
|
|
5
|
+
"version": "1.8.0",
|
|
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",
|
|
9
9
|
"url": "https://github.com/fauguste/boondmanager-mcp-server"
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "boondmanager-mcp-server",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "MCP Server for BoondManager API -
|
|
3
|
+
"version": "1.8.0",
|
|
4
|
+
"description": "MCP Server for BoondManager API - 167 tools, 11 prompts, 21 resources (ERP/CRM)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"type": "module",
|