@edicarlos.lds/businessmap-mcp 3.0.0 → 4.0.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/CONTRIBUTING.md +73 -0
- package/README.md +35 -15
- package/SECURITY.md +36 -0
- package/dist/client/businessmap-client.d.ts +0 -1
- package/dist/client/businessmap-client.d.ts.map +1 -1
- package/dist/client/businessmap-client.js +39 -23
- package/dist/client/businessmap-client.js.map +1 -1
- package/dist/client/businessmap-error.d.ts +16 -0
- package/dist/client/businessmap-error.d.ts.map +1 -0
- package/dist/client/businessmap-error.js +43 -0
- package/dist/client/businessmap-error.js.map +1 -0
- package/dist/client/modules/board-client.d.ts.map +1 -1
- package/dist/client/modules/board-client.js +16 -2
- package/dist/client/modules/board-client.js.map +1 -1
- package/dist/client/modules/card-client.d.ts +7 -5
- package/dist/client/modules/card-client.d.ts.map +1 -1
- package/dist/client/modules/card-client.js +40 -13
- package/dist/client/modules/card-client.js.map +1 -1
- package/dist/client/modules/index.d.ts +0 -3
- package/dist/client/modules/index.d.ts.map +1 -1
- package/dist/client/modules/index.js +0 -1
- package/dist/client/modules/index.js.map +1 -1
- package/dist/config/environment.d.ts +3 -0
- package/dist/config/environment.d.ts.map +1 -1
- package/dist/config/environment.js +64 -3
- package/dist/config/environment.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -9
- package/dist/index.js.map +1 -1
- package/dist/schemas/board-schemas.d.ts +6 -6
- package/dist/schemas/board-schemas.d.ts.map +1 -1
- package/dist/schemas/board-schemas.js +6 -2
- package/dist/schemas/board-schemas.js.map +1 -1
- package/dist/schemas/card-schemas.d.ts +67 -48
- package/dist/schemas/card-schemas.d.ts.map +1 -1
- package/dist/schemas/card-schemas.js +23 -0
- package/dist/schemas/card-schemas.js.map +1 -1
- package/dist/schemas/common-schemas.d.ts +4 -4
- package/dist/server/http.d.ts +7 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +140 -31
- package/dist/server/http.js.map +1 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +1 -1
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/prompts/base-prompt.d.ts +12 -0
- package/dist/server/prompts/base-prompt.d.ts.map +1 -1
- package/dist/server/prompts/base-prompt.js +9 -1
- package/dist/server/prompts/base-prompt.js.map +1 -1
- package/dist/server/prompts/board-prompts.d.ts.map +1 -1
- package/dist/server/prompts/board-prompts.js +6 -5
- package/dist/server/prompts/board-prompts.js.map +1 -1
- package/dist/server/prompts/card-prompts.d.ts.map +1 -1
- package/dist/server/prompts/card-prompts.js +2 -1
- package/dist/server/prompts/card-prompts.js.map +1 -1
- package/dist/server/prompts/index.d.ts +0 -1
- package/dist/server/prompts/index.d.ts.map +1 -1
- package/dist/server/prompts/index.js.map +1 -1
- package/dist/server/prompts/workspace-prompts.d.ts.map +1 -1
- package/dist/server/prompts/workspace-prompts.js +4 -3
- package/dist/server/prompts/workspace-prompts.js.map +1 -1
- package/dist/server/resources/card-resources.d.ts.map +1 -1
- package/dist/server/resources/card-resources.js +45 -3
- package/dist/server/resources/card-resources.js.map +1 -1
- package/dist/server/tools/base-tool.d.ts +5 -0
- package/dist/server/tools/base-tool.d.ts.map +1 -1
- package/dist/server/tools/base-tool.js +89 -6
- package/dist/server/tools/base-tool.js.map +1 -1
- package/dist/server/tools/board-tools.d.ts +0 -6
- package/dist/server/tools/board-tools.d.ts.map +1 -1
- package/dist/server/tools/board-tools.js +35 -72
- package/dist/server/tools/board-tools.js.map +1 -1
- package/dist/server/tools/card-tools.d.ts.map +1 -1
- package/dist/server/tools/card-tools.js +99 -11
- package/dist/server/tools/card-tools.js.map +1 -1
- package/dist/server/tools/doc-tools.d.ts +2 -1
- package/dist/server/tools/doc-tools.d.ts.map +1 -1
- package/dist/server/tools/doc-tools.js +47 -20
- package/dist/server/tools/doc-tools.js.map +1 -1
- package/dist/server/tools/index.d.ts +0 -2
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +0 -1
- package/dist/server/tools/index.js.map +1 -1
- package/dist/server/tools/user-tools.d.ts.map +1 -1
- package/dist/server/tools/user-tools.js +2 -1
- package/dist/server/tools/user-tools.js.map +1 -1
- package/dist/types/base.d.ts +1 -0
- package/dist/types/base.d.ts.map +1 -1
- package/dist/types/card.d.ts +10 -5
- package/dist/types/card.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +7 -12
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +73 -10
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/request-context.d.ts +7 -0
- package/dist/utils/request-context.d.ts.map +1 -0
- package/dist/utils/request-context.js +9 -0
- package/dist/utils/request-context.js.map +1 -0
- package/docs/LOGGING.md +15 -0
- package/docs/MIDDLEWARE.md +26 -4
- package/docs/TOOLS.md +116 -96
- package/package.json +22 -17
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface RequestContext {
|
|
2
|
+
correlationId: string;
|
|
3
|
+
sessionId?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function runWithRequestContext<T>(context: RequestContext, callback: () => T): T;
|
|
6
|
+
export declare function getRequestContext(): RequestContext | undefined;
|
|
7
|
+
//# sourceMappingURL=request-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/utils/request-context.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,CAAC,GAChB,CAAC,CAEH;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAE9D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
const storage = new AsyncLocalStorage();
|
|
3
|
+
export function runWithRequestContext(context, callback) {
|
|
4
|
+
return storage.run(context, callback);
|
|
5
|
+
}
|
|
6
|
+
export function getRequestContext() {
|
|
7
|
+
return storage.getStore();
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=request-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/utils/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAExD,MAAM,UAAU,qBAAqB,CACnC,OAAuB,EACvB,QAAiB;IAEjB,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
|
package/docs/LOGGING.md
CHANGED
|
@@ -64,6 +64,18 @@ All log messages include timestamps and clear prefixes:
|
|
|
64
64
|
[2025-11-15T10:30:47.345Z] ❌ ERROR: Failed to connect to API
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
Set `LOG_FORMAT=json` for machine-readable logs:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{"timestamp":"2026-07-09T18:00:00.000Z","level":"info","message":"MCP mutation tool completed","correlationId":"request-123","details":[{"event":"mcp_tool_mutation","tool":"update_card","outcome":"success","durationMs":42,"identifiers":{"card_id":123}}]}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
HTTP requests accept an optional `x-request-id` header and echo it in the
|
|
74
|
+
response. Invalid or missing IDs are replaced with a UUID. The same correlation
|
|
75
|
+
ID is propagated to BusinessMap API calls and included in logs. Mutation audit
|
|
76
|
+
events contain tool names and numeric identifiers only; free-form card content,
|
|
77
|
+
comments, descriptions, email addresses, and credentials are not logged.
|
|
78
|
+
|
|
67
79
|
## Configuration
|
|
68
80
|
|
|
69
81
|
Set the `LOG_LEVEL` environment variable to control verbosity:
|
|
@@ -85,6 +97,9 @@ LOG_LEVEL=3 npx @edicarlos.lds/businessmap-mcp
|
|
|
85
97
|
LOG_LEVEL=4 npx @edicarlos.lds/businessmap-mcp
|
|
86
98
|
```
|
|
87
99
|
|
|
100
|
+
Use `LOG_FORMAT=text` (default) for human-readable output or
|
|
101
|
+
`LOG_FORMAT=json` for log aggregation systems.
|
|
102
|
+
|
|
88
103
|
### In Claude Desktop Config
|
|
89
104
|
|
|
90
105
|
```json
|
package/docs/MIDDLEWARE.md
CHANGED
|
@@ -18,7 +18,10 @@ You can import `startHttpServer` and launch the MCP server in HTTP mode programm
|
|
|
18
18
|
import { startHttpServer } from '@edicarlos.lds/businessmap-mcp';
|
|
19
19
|
|
|
20
20
|
// Start HTTP server with default options
|
|
21
|
-
await startHttpServer();
|
|
21
|
+
const server = await startHttpServer();
|
|
22
|
+
|
|
23
|
+
// Close the listener and all MCP sessions during application shutdown
|
|
24
|
+
await server.shutdown();
|
|
22
25
|
```
|
|
23
26
|
|
|
24
27
|
---
|
|
@@ -38,8 +41,8 @@ const API_KEY = process.env.MCP_SERVER_KEY || 'your-secret-api-key';
|
|
|
38
41
|
await startHttpServer({
|
|
39
42
|
middlewares: [
|
|
40
43
|
(req, res, next) => {
|
|
41
|
-
// Allow
|
|
42
|
-
if (req.path === '/health') {
|
|
44
|
+
// Allow orchestrator probes to remain public
|
|
45
|
+
if (req.path === '/health' || req.path === '/ready') {
|
|
43
46
|
return next();
|
|
44
47
|
}
|
|
45
48
|
|
|
@@ -67,7 +70,7 @@ const JWT_SECRET = process.env.JWT_SECRET!;
|
|
|
67
70
|
await startHttpServer({
|
|
68
71
|
middlewares: [
|
|
69
72
|
(req, res, next) => {
|
|
70
|
-
if (req.path === '/health') return next();
|
|
73
|
+
if (req.path === '/health' || req.path === '/ready') return next();
|
|
71
74
|
|
|
72
75
|
const authHeader = req.headers['authorization'];
|
|
73
76
|
if (!authHeader?.startsWith('Bearer ')) {
|
|
@@ -128,6 +131,25 @@ Middlewares are executed sequentially in the order they are passed in the `middl
|
|
|
128
131
|
|
|
129
132
|
---
|
|
130
133
|
|
|
134
|
+
## HTTP Resource Limits
|
|
135
|
+
|
|
136
|
+
The standalone server supports `HTTP_BODY_LIMIT` (default `1mb`),
|
|
137
|
+
`HTTP_MAX_SESSIONS` (default `100`), and `HTTP_SESSION_TIMEOUT_MS` (default 30
|
|
138
|
+
minutes). Embedded applications can override them directly:
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
const server = await startHttpServer({
|
|
142
|
+
bodyLimit: '512kb',
|
|
143
|
+
maxSessions: 50,
|
|
144
|
+
sessionTimeoutMs: 15 * 60 * 1000,
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`GET /health` is a liveness probe. `GET /ready` returns `503` while the server
|
|
149
|
+
is shutting down or cannot accept another session.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
131
153
|
## 🧪 Testing Your Middleware
|
|
132
154
|
|
|
133
155
|
You can test HTTP requests using `curl` or any API client (like Postman):
|
package/docs/TOOLS.md
CHANGED
|
@@ -4,11 +4,23 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
4
4
|
|
|
5
5
|
## Summary
|
|
6
6
|
|
|
7
|
-
| Category
|
|
8
|
-
|
|
|
9
|
-
|
|
|
10
|
-
|
|
|
11
|
-
|
|
|
7
|
+
| Category | Count |
|
|
8
|
+
| --------------------------- | :---: |
|
|
9
|
+
| Default tools (`essential`) | 27 |
|
|
10
|
+
| Full-profile tools | 93 |
|
|
11
|
+
| Resources | 6 |
|
|
12
|
+
| Prompts | 4 |
|
|
13
|
+
|
|
14
|
+
The default `essential` profile exposes an agent-oriented discovery-to-detail
|
|
15
|
+
catalog. Set `BUSINESSMAP_TOOL_PROFILE=full` to register every advanced
|
|
16
|
+
operation. Read-only mode is applied independently and removes mutation tools
|
|
17
|
+
from either profile.
|
|
18
|
+
|
|
19
|
+
Run `npm run eval:hierarchy` to validate the progressive-disclosure contracts:
|
|
20
|
+
bounded card discovery, compact payloads, board discovery without implicit
|
|
21
|
+
structure fetches, and explicit summary/full detail levels. These deterministic
|
|
22
|
+
checks complement production trajectory evals, where tool-call count, latency,
|
|
23
|
+
and token cost should also be monitored.
|
|
12
24
|
|
|
13
25
|
---
|
|
14
26
|
|
|
@@ -25,23 +37,24 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
25
37
|
|
|
26
38
|
---
|
|
27
39
|
|
|
28
|
-
### Board Management (
|
|
29
|
-
|
|
30
|
-
| Tool | Description
|
|
31
|
-
| :---------------------------- |
|
|
32
|
-
| `list_boards` |
|
|
33
|
-
| `search_board` |
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
37
|
-
| `
|
|
38
|
-
| `
|
|
39
|
-
| `
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
40
|
+
### Board Management (14 tools)
|
|
41
|
+
|
|
42
|
+
| Tool | Description | Read-Only Safe |
|
|
43
|
+
| :---------------------------- | :-------------------------------------------------------------------------------------------- | :------------: |
|
|
44
|
+
| `list_boards` | Discover compact board candidates; set `detail_level=full` for complete board payloads | ✅ |
|
|
45
|
+
| `search_board` | Find compact candidates by name fragment; use `get_board` when the ID is known | ✅ |
|
|
46
|
+
| `get_board` | Get board details without loading its structure | ✅ |
|
|
47
|
+
| `get_columns` | Get all columns for a board | ✅ |
|
|
48
|
+
| `get_lanes` | Get all lanes/swimlanes for a board | ✅ |
|
|
49
|
+
| `get_lane` | Get details of a specific lane/swimlane | ✅ |
|
|
50
|
+
| `get_current_board_structure` | Get the complete structure of a board (workflows, columns, lanes, configs) | ✅ |
|
|
51
|
+
| `create_board` | Create a new board in a workspace | ❌ |
|
|
52
|
+
| `update_board` | Update the name and/or description of a board | ❌ |
|
|
53
|
+
| `create_lane` | Create a new lane/swimlane in a board (supports sub-lanes via `parent_lane_id`) | ❌ |
|
|
54
|
+
| `update_lane` | Update a lane (name, description, color, position, parent lane) | ❌ |
|
|
42
55
|
| `create_column` | Create a new column (main or sub-column). Section: 1=Backlog, 2=Requested, 3=Progress, 4=Done | ❌ |
|
|
43
|
-
| `update_column` | Update the details of a specific column
|
|
44
|
-
| `delete_column` | Delete a column from a board
|
|
56
|
+
| `update_column` | Update the details of a specific column | ❌ |
|
|
57
|
+
| `delete_column` | Delete a column from a board | ❌ ⚠️ |
|
|
45
58
|
|
|
46
59
|
---
|
|
47
60
|
|
|
@@ -49,18 +62,18 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
49
62
|
|
|
50
63
|
#### Basic Operations
|
|
51
64
|
|
|
52
|
-
| Tool | Description
|
|
53
|
-
| :--------------- |
|
|
54
|
-
| `list_cards` |
|
|
55
|
-
| `search_cards` |
|
|
56
|
-
| `get_card` | Get
|
|
57
|
-
| `get_card_size` | Get the size/points of a specific card
|
|
58
|
-
| `get_card_types` | Get all available card types
|
|
59
|
-
| `create_card` | Create a new card in a board
|
|
60
|
-
| `move_card` | Move a card to a different column or lane
|
|
61
|
-
| `update_card` | Update card properties
|
|
62
|
-
| `set_card_size` | Set the size/points of a specific card
|
|
63
|
-
| `delete_card` | Permanently delete a card (irreversible)
|
|
65
|
+
| Tool | Description | Read-Only Safe |
|
|
66
|
+
| :--------------- | :------------------------------------------------------------------- | :------------: |
|
|
67
|
+
| `list_cards` | Discover a compact, paginated page of cards on a board | ✅ |
|
|
68
|
+
| `search_cards` | Discover compact cards across boards with advanced filters | ✅ |
|
|
69
|
+
| `get_card` | Get a card summary; set `detail_level=full` for the complete payload | ✅ |
|
|
70
|
+
| `get_card_size` | Get the size/points of a specific card | ✅ |
|
|
71
|
+
| `get_card_types` | Get all available card types | ✅ |
|
|
72
|
+
| `create_card` | Create a new card in a board | ❌ |
|
|
73
|
+
| `move_card` | Move a card to a different column or lane | ❌ |
|
|
74
|
+
| `update_card` | Update card properties | ❌ |
|
|
75
|
+
| `set_card_size` | Set the size/points of a specific card | ❌ |
|
|
76
|
+
| `delete_card` | Permanently delete a card (irreversible) | ❌ ⚠️ |
|
|
64
77
|
|
|
65
78
|
`list_cards` supports a `state` parameter (`active` | `archived` | `discarded` | `all`) to control which card lifecycle states are returned. The API defaults to `active`, so archived or discarded cards are only included when explicitly requested:
|
|
66
79
|
|
|
@@ -73,6 +86,12 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
73
86
|
}
|
|
74
87
|
```
|
|
75
88
|
|
|
89
|
+
By default, `list_cards` returns a compact `{ data, pagination }` page bounded
|
|
90
|
+
to 50 cards, and `search_cards` also defaults to compact results with a 50-card
|
|
91
|
+
page size. Use `page` and `per_page` to navigate. Set `compact: false` only when
|
|
92
|
+
full list payloads are required; set `include_pagination: false` on `list_cards`
|
|
93
|
+
only for legacy array compatibility.
|
|
94
|
+
|
|
76
95
|
#### Comments
|
|
77
96
|
|
|
78
97
|
| Tool | Description | Read-Only Safe |
|
|
@@ -91,13 +110,13 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
91
110
|
|
|
92
111
|
#### Outcomes & History
|
|
93
112
|
|
|
94
|
-
| Tool | Description
|
|
95
|
-
| :----------------------- |
|
|
96
|
-
| `get_card_outcomes` | Get all outcomes for a specific card
|
|
97
|
-
| `get_card_history` | Get the history of a specific card outcome
|
|
98
|
-
| `get_card_flow_history` | Get the card's movement (transitions) across workflows/columns with timing
|
|
99
|
-
| `get_card_blocked_times` | Get the full blocking history of a card
|
|
100
|
-
| `get_card_logged_time` | Get time logged on a card and its subtasks, with individual entries
|
|
113
|
+
| Tool | Description | Read-Only Safe |
|
|
114
|
+
| :----------------------- | :----------------------------------------------------------------------------------------------------------------------- | :------------: |
|
|
115
|
+
| `get_card_outcomes` | Get all outcomes for a specific card | ✅ |
|
|
116
|
+
| `get_card_history` | Get the history of a specific card outcome | ✅ |
|
|
117
|
+
| `get_card_flow_history` | Get the card's movement (transitions) across workflows/columns with timing | ✅ |
|
|
118
|
+
| `get_card_blocked_times` | Get the full blocking history of a card | ✅ |
|
|
119
|
+
| `get_card_logged_time` | Get time logged on a card and its subtasks, with individual entries | ✅ |
|
|
101
120
|
| `get_card_revisions` | Get the chronological change history (revisions) of a card; pass a revision number for the full card state at that point | ✅ |
|
|
102
121
|
|
|
103
122
|
#### Relationships
|
|
@@ -108,25 +127,25 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
108
127
|
|
|
109
128
|
#### Subtasks
|
|
110
129
|
|
|
111
|
-
| Tool | Description
|
|
112
|
-
| :-------------------- |
|
|
113
|
-
| `get_card_subtasks` | Get all subtasks for a specific card
|
|
114
|
-
| `get_card_subtask` | Get details of a specific subtask
|
|
115
|
-
| `create_card_subtask` | Create a new subtask for a card
|
|
130
|
+
| Tool | Description | Read-Only Safe |
|
|
131
|
+
| :-------------------- | :------------------------------------------------------------------------ | :------------: |
|
|
132
|
+
| `get_card_subtasks` | Get all subtasks for a specific card | ✅ |
|
|
133
|
+
| `get_card_subtask` | Get details of a specific subtask | ✅ |
|
|
134
|
+
| `create_card_subtask` | Create a new subtask for a card | ❌ |
|
|
116
135
|
| `update_card_subtask` | Update a subtask (description, owner, finished state, deadline, position) | ❌ |
|
|
117
|
-
| `delete_card_subtask` | Delete a subtask from a card
|
|
136
|
+
| `delete_card_subtask` | Delete a subtask from a card | ❌ ⚠️ |
|
|
118
137
|
|
|
119
138
|
#### Parent-Child Relationships
|
|
120
139
|
|
|
121
|
-
| Tool | Description
|
|
122
|
-
| :---------------------- |
|
|
123
|
-
| `get_card_parents` | Get a list of parent cards for a specific card
|
|
124
|
-
| `get_card_parent` | Check if a card is a parent of a given card
|
|
125
|
-
| `get_card_parent_graph` | Get parent cards including their parents (full graph)
|
|
126
|
-
| `get_card_children` | Get a list of child cards of a specified parent card
|
|
140
|
+
| Tool | Description | Read-Only Safe |
|
|
141
|
+
| :---------------------- | :------------------------------------------------------------------------- | :------------: |
|
|
142
|
+
| `get_card_parents` | Get a list of parent cards for a specific card | ✅ |
|
|
143
|
+
| `get_card_parent` | Check if a card is a parent of a given card | ✅ |
|
|
144
|
+
| `get_card_parent_graph` | Get parent cards including their parents (full graph) | ✅ |
|
|
145
|
+
| `get_card_children` | Get a list of child cards of a specified parent card | ✅ |
|
|
127
146
|
| `get_card_child_graph` | Get the hierarchical graph of a card's children (children of children too) | ✅ |
|
|
128
|
-
| `add_card_parent` | Make a card a parent of a given card
|
|
129
|
-
| `remove_card_parent` | Remove the link between a child card and a parent card
|
|
147
|
+
| `add_card_parent` | Make a card a parent of a given card | ❌ |
|
|
148
|
+
| `remove_card_parent` | Remove the link between a child card and a parent card | ❌ |
|
|
130
149
|
|
|
131
150
|
#### Blocking
|
|
132
151
|
|
|
@@ -169,46 +188,46 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
169
188
|
|
|
170
189
|
### Workflow Management & Cycle Time Analysis (8 tools)
|
|
171
190
|
|
|
172
|
-
| Tool | Description
|
|
173
|
-
| :------------------------------------------ |
|
|
174
|
-
| `list_workflows` | Get a list of workflows for a board
|
|
175
|
-
| `get_workflow` | Get the details of a workflow
|
|
176
|
-
| `get_workflow_cycle_time_columns` | Get workflow's cycle time columns
|
|
177
|
-
| `get_workflow_effective_cycle_time_columns` | Get workflow's effective cycle time columns
|
|
178
|
-
| `create_workflow` | Create a new workflow on a board (0=cards, 1=initiatives, 2=timeline)
|
|
179
|
-
| `update_workflow` | Update a workflow (name, position, enabled/collapsible)
|
|
180
|
-
| `link_related_workflow` | Link a workflow from another board as a related workflow
|
|
181
|
-
| `unlink_related_workflow` | Remove a related workflow from a board
|
|
191
|
+
| Tool | Description | Read-Only Safe |
|
|
192
|
+
| :------------------------------------------ | :-------------------------------------------------------------------- | :------------: |
|
|
193
|
+
| `list_workflows` | Get a list of workflows for a board | ✅ |
|
|
194
|
+
| `get_workflow` | Get the details of a workflow | ✅ |
|
|
195
|
+
| `get_workflow_cycle_time_columns` | Get workflow's cycle time columns | ✅ |
|
|
196
|
+
| `get_workflow_effective_cycle_time_columns` | Get workflow's effective cycle time columns | ✅ |
|
|
197
|
+
| `create_workflow` | Create a new workflow on a board (0=cards, 1=initiatives, 2=timeline) | ❌ |
|
|
198
|
+
| `update_workflow` | Update a workflow (name, position, enabled/collapsible) | ❌ |
|
|
199
|
+
| `link_related_workflow` | Link a workflow from another board as a related workflow | ❌ |
|
|
200
|
+
| `unlink_related_workflow` | Remove a related workflow from a board | ❌ ⚠️ |
|
|
182
201
|
|
|
183
202
|
---
|
|
184
203
|
|
|
185
204
|
### Quick Setup — Batch (3 tools)
|
|
186
205
|
|
|
187
|
-
| Tool | Description
|
|
188
|
-
| :----------------------------- |
|
|
189
|
-
| `create_workspaces_and_boards` | Create up to 3 workspaces together with their boards and full board structure in one call
|
|
190
|
-
| `create_boards_in_workspace` | Create up to 3 boards with their full structure (workflows, renamed default columns, columns, lanes) in one call
|
|
191
|
-
| `configure_board_structure`
|
|
206
|
+
| Tool | Description | Read-Only Safe |
|
|
207
|
+
| :----------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | :------------: |
|
|
208
|
+
| `create_workspaces_and_boards` | Create up to 3 workspaces together with their boards and full board structure in one call | ❌ |
|
|
209
|
+
| `create_boards_in_workspace` | Create up to 3 boards with their full structure (workflows, renamed default columns, columns, lanes) in one call | ❌ |
|
|
210
|
+
| `configure_board_structure` | Configure an existing board's structure in one call: create/rename workflows, rename built-in columns, add columns and lanes | ❌ |
|
|
192
211
|
|
|
193
212
|
---
|
|
194
213
|
|
|
195
214
|
### Docs (13 tools)
|
|
196
215
|
|
|
197
|
-
| Tool
|
|
198
|
-
|
|
|
199
|
-
| `search_docs`
|
|
200
|
-
| `get_docs_text_title_search
|
|
201
|
-
| `get_doc_hierarchy`
|
|
202
|
-
| `list_docs`
|
|
203
|
-
| `list_personal_docs`
|
|
204
|
-
| `get_doc_content_batch`
|
|
205
|
-
| `get_docs_for_boards_batch`
|
|
206
|
-
| `create_doc`
|
|
207
|
-
| `update_doc`
|
|
208
|
-
| `archive_doc`
|
|
209
|
-
| `unarchive_doc`
|
|
210
|
-
| `create_personal_doc`
|
|
211
|
-
| `update_personal_doc`
|
|
216
|
+
| Tool | Description | Read-Only Safe |
|
|
217
|
+
| :--------------------------- | :------------------------------------------------------------------------------------------------- | :------------: |
|
|
218
|
+
| `search_docs` | Search docs by title (case-insensitive substring), optionally including archived and personal docs | ✅ |
|
|
219
|
+
| `get_docs_text_title_search` | Search docs by title AND content, returning matches with content snippets | ✅ |
|
|
220
|
+
| `get_doc_hierarchy` | Get the hierarchical parent/child tree of docs, optionally rooted at a specific doc | ✅ |
|
|
221
|
+
| `list_docs` | Get a list of docs (metadata only) with filters (ids, title, archived, important, parent) | ✅ |
|
|
222
|
+
| `list_personal_docs` | Get a list of your personal docs (metadata only) | ✅ |
|
|
223
|
+
| `get_doc_content_batch` | Get the full details (including content) of up to 20 docs in one call (shared or personal) | ✅ |
|
|
224
|
+
| `get_docs_for_boards_batch` | Get the docs pinned to each of up to 10 boards in one call | ✅ |
|
|
225
|
+
| `create_doc` | Create a new doc, optionally as a child of another doc | ❌ |
|
|
226
|
+
| `update_doc` | Update the title, content, position, or parent of an existing doc | ❌ |
|
|
227
|
+
| `archive_doc` | Archive a doc | ❌ |
|
|
228
|
+
| `unarchive_doc` | Restore an archived doc | ❌ |
|
|
229
|
+
| `create_personal_doc` | Create a new personal doc (visible only to you) | ❌ |
|
|
230
|
+
| `update_personal_doc` | Update the title, content, or position of an existing personal doc | ❌ |
|
|
212
231
|
|
|
213
232
|
---
|
|
214
233
|
|
|
@@ -236,13 +255,14 @@ Complete reference for all tools, resources, and prompts provided by the Busines
|
|
|
236
255
|
|
|
237
256
|
MCP resources provide structured data access via URI. Clients can read resources directly without invoking tools.
|
|
238
257
|
|
|
239
|
-
| URI
|
|
240
|
-
|
|
|
241
|
-
| `businessmap://workspaces`
|
|
242
|
-
| `businessmap://boards`
|
|
243
|
-
| `businessmap://boards/{board_id}`
|
|
244
|
-
| `businessmap://boards/{board_id}/cards`
|
|
245
|
-
| `businessmap://cards/{
|
|
258
|
+
| URI | Name | Description | Listable |
|
|
259
|
+
| :------------------------------------------------------------------- | :----------- | :------------------------------------------------------------------- | :------: |
|
|
260
|
+
| `businessmap://workspaces` | `workspaces` | List all workspaces | ✅ |
|
|
261
|
+
| `businessmap://boards` | `boards` | List all boards | ✅ |
|
|
262
|
+
| `businessmap://boards/{board_id}` | `board` | Get details of a specific board | ❌ |
|
|
263
|
+
| `businessmap://boards/{board_id}/cards` | `cards` | Read the first compact card page (50 items) with pagination metadata | ✅ |
|
|
264
|
+
| `businessmap://boards/{board_id}/cards/pages/{page}/size/{per_page}` | `card-page` | Read a bounded card page (maximum 100) | ❌ |
|
|
265
|
+
| `businessmap://cards/{card_id}` | `card` | Get details of a specific card | ❌ |
|
|
246
266
|
|
|
247
267
|
---
|
|
248
268
|
|
|
@@ -263,7 +283,7 @@ Analyze a board's performance: flow efficiency, bottlenecks, cycle time, and wor
|
|
|
263
283
|
**Workflow:**
|
|
264
284
|
|
|
265
285
|
1. Uses `get_current_board_structure` to retrieve the full board structure
|
|
266
|
-
2. Uses `list_cards` to retrieve
|
|
286
|
+
2. Uses compact, paginated `list_cards` calls to retrieve active cards
|
|
267
287
|
3. Uses `get_workflow_cycle_time_columns` for each workflow
|
|
268
288
|
4. Delivers a structured analysis covering flow efficiency, cycle time, workload distribution, and actionable recommendations
|
|
269
289
|
|
|
@@ -282,8 +302,8 @@ Generate a comprehensive status report for a board, including cards summary, pro
|
|
|
282
302
|
**Workflow:**
|
|
283
303
|
|
|
284
304
|
1. Uses `get_current_board_structure` to get the board structure
|
|
285
|
-
2. Uses `list_cards`
|
|
286
|
-
3. Uses `get_card` for detailed info on a sample of cards
|
|
305
|
+
2. Uses compact, paginated `list_cards` for a bounded card snapshot
|
|
306
|
+
3. Uses summary-level `get_card` for detailed info on a sample of cards
|
|
287
307
|
4. Generates a structured report with: Executive Summary, Column Breakdown, Recently Updated Cards, Risks & Blockers, and Next Steps
|
|
288
308
|
|
|
289
309
|
---
|
|
@@ -322,7 +342,7 @@ Generate a high-level status overview of a workspace, including all boards and t
|
|
|
322
342
|
|
|
323
343
|
1. Uses `get_workspace` to get workspace details
|
|
324
344
|
2. Uses `list_boards` with `workspace_id` filter to list all boards
|
|
325
|
-
3. Uses `list_cards` for each board to get active card counts
|
|
345
|
+
3. Uses bounded, compact `list_cards` calls for each board to get active card counts
|
|
326
346
|
4. Uses `get_current_board_structure` for up to 3 boards
|
|
327
347
|
5. Delivers a structured overview with: Workspace Summary, Board Summaries, Highlights, and Recommendations
|
|
328
348
|
|
|
@@ -336,4 +356,4 @@ When `BUSINESSMAP_READ_ONLY_MODE=true`, only tools marked ✅ in the "Read-Only
|
|
|
336
356
|
- Granting read-only access to AI assistants
|
|
337
357
|
- Auditing and reporting use cases
|
|
338
358
|
|
|
339
|
-
> Note: All
|
|
359
|
+
> Note: All 6 resources and all 4 prompts are available regardless of read-only mode setting.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edicarlos.lds/businessmap-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Model Context Protocol server for BusinessMap (Kanbanize) integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,15 +11,19 @@
|
|
|
11
11
|
"dist",
|
|
12
12
|
"docs",
|
|
13
13
|
"README.md",
|
|
14
|
+
"CONTRIBUTING.md",
|
|
15
|
+
"SECURITY.md",
|
|
14
16
|
"LICENSE"
|
|
15
17
|
],
|
|
16
18
|
"scripts": {
|
|
17
|
-
"build": "tsc",
|
|
19
|
+
"build": "tsc -p tsconfig.build.json",
|
|
18
20
|
"postbuild": "chmod +x dist/index.js",
|
|
19
21
|
"start": "node dist/index.js",
|
|
20
22
|
"dev": "tsx src/index.ts",
|
|
21
23
|
"watch": "tsx --watch src/index.ts",
|
|
22
24
|
"test": "jest",
|
|
25
|
+
"eval:hierarchy": "jest --runInBand src/server/tools/board-tools.test.ts src/server/tools/card-tools.test.ts src/server/resources/card-resources.test.ts",
|
|
26
|
+
"test:coverage": "jest --coverage --runInBand",
|
|
23
27
|
"test:npx": "bash scripts/test-npx.sh",
|
|
24
28
|
"publish:npm": "bash scripts/publish-npm.sh",
|
|
25
29
|
"publish:github": "bash scripts/publish-github.sh",
|
|
@@ -65,32 +69,33 @@
|
|
|
65
69
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
66
70
|
"axios": "^1.12.0",
|
|
67
71
|
"cors": "^2.8.5",
|
|
68
|
-
"dotenv": "^
|
|
72
|
+
"dotenv": "^17.4.2",
|
|
69
73
|
"express": "^5.1.0",
|
|
70
|
-
"zod": "^
|
|
74
|
+
"zod": "^4.4.3"
|
|
71
75
|
},
|
|
72
76
|
"devDependencies": {
|
|
77
|
+
"@eslint/js": "^10.0.1",
|
|
73
78
|
"@types/cors": "^2.8.19",
|
|
74
79
|
"@types/express": "^5.0.5",
|
|
75
|
-
"@types/jest": "^
|
|
76
|
-
"@types/node": "^
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"prettier": "^3.0.0",
|
|
83
|
-
"ts-jest": "^29.0.0",
|
|
80
|
+
"@types/jest": "^30.0.0",
|
|
81
|
+
"@types/node": "^26.1.1",
|
|
82
|
+
"eslint": "^10.7.0",
|
|
83
|
+
"jest": "^30.4.2",
|
|
84
|
+
"knip": "^6.29.0",
|
|
85
|
+
"prettier": "^3.9.6",
|
|
86
|
+
"ts-jest": "^29.4.12",
|
|
84
87
|
"tsx": "^4.22.4",
|
|
85
|
-
"typescript": "^5.0.0"
|
|
88
|
+
"typescript": "^5.0.0",
|
|
89
|
+
"typescript-eslint": "^8.65.0"
|
|
86
90
|
},
|
|
87
91
|
"engines": {
|
|
88
|
-
"node": ">=
|
|
92
|
+
"node": ">=22.0.0"
|
|
89
93
|
},
|
|
90
94
|
"overrides": {
|
|
91
95
|
"hono": ">=4.12.25",
|
|
92
96
|
"form-data": ">=4.0.6",
|
|
93
|
-
"js-yaml": ">=
|
|
94
|
-
"@babel/core": "
|
|
97
|
+
"js-yaml": ">=5.2.2",
|
|
98
|
+
"@babel/core": "^7.29.6",
|
|
99
|
+
"brace-expansion": ">=5.0.8"
|
|
95
100
|
}
|
|
96
101
|
}
|