@edicarlos.lds/businessmap-mcp 1.5.5 → 1.5.6
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
CHANGED
|
@@ -137,7 +137,7 @@ The BusinessMap MCP server provides the following tools:
|
|
|
137
137
|
|
|
138
138
|
- `list_boards` - List boards in workspace(s)
|
|
139
139
|
- `search_board` - Search for boards by ID or name
|
|
140
|
-
|
|
140
|
+
|
|
141
141
|
- `get_current_board_structure` - Get the complete current structure of a board including workflows, columns, lanes, and configurations
|
|
142
142
|
- `create_board` - Create new board (if not in read-only mode)
|
|
143
143
|
- `get_columns` - Get all columns for a board
|
|
@@ -5,7 +5,12 @@ export declare class BoardToolHandler implements BaseToolHandler {
|
|
|
5
5
|
registerTools(server: McpServer, client: BusinessMapClient, readOnlyMode: boolean): void;
|
|
6
6
|
private registerListBoards;
|
|
7
7
|
private registerSearchBoard;
|
|
8
|
-
private
|
|
8
|
+
private searchBoardById;
|
|
9
|
+
private searchBoardByIdFallback;
|
|
10
|
+
private searchBoardByName;
|
|
11
|
+
private getAllBoards;
|
|
12
|
+
private getBoardWithStructure;
|
|
13
|
+
private formatBoardsList;
|
|
9
14
|
private registerGetColumns;
|
|
10
15
|
private registerGetLanes;
|
|
11
16
|
private registerGetLane;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/board-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAUvE,OAAO,EAAE,eAAe,EAA8C,MAAM,gBAAgB,CAAC;AAE7F,qBAAa,gBAAiB,YAAW,eAAe;IACtD,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"board-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/board-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAUvE,OAAO,EAAE,eAAe,EAA8C,MAAM,gBAAgB,CAAC;AAE7F,qBAAa,gBAAiB,YAAW,eAAe;IACtD,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI;IAcxF,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,mBAAmB;YA4Bb,eAAe;YAgBf,uBAAuB;YAoBvB,iBAAiB;YAiCjB,YAAY;YAKZ,qBAAqB;IAoBnC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,gCAAgC;CAmBzC"}
|
|
@@ -4,7 +4,6 @@ export class BoardToolHandler {
|
|
|
4
4
|
registerTools(server, client, readOnlyMode) {
|
|
5
5
|
this.registerListBoards(server, client);
|
|
6
6
|
this.registerSearchBoard(server, client);
|
|
7
|
-
this.registerGetBoard(server, client);
|
|
8
7
|
this.registerGetColumns(server, client);
|
|
9
8
|
this.registerGetLanes(server, client);
|
|
10
9
|
this.registerGetLane(server, client);
|
|
@@ -36,135 +35,76 @@ export class BoardToolHandler {
|
|
|
36
35
|
inputSchema: searchBoardSchema.shape,
|
|
37
36
|
}, async ({ board_id, board_name, workspace_id }) => {
|
|
38
37
|
try {
|
|
39
|
-
// If board_id is provided, try direct lookup first
|
|
40
38
|
if (board_id) {
|
|
41
|
-
|
|
42
|
-
const [board, structure] = await Promise.all([
|
|
43
|
-
client.getBoard(board_id),
|
|
44
|
-
client.getBoardStructure(board_id),
|
|
45
|
-
]);
|
|
46
|
-
return createSuccessResponse({ ...board, structure }, 'Board found directly:');
|
|
47
|
-
}
|
|
48
|
-
catch (directError) {
|
|
49
|
-
// If direct lookup fails, fallback to list and search
|
|
50
|
-
const boards = await client.getBoards(workspace_id ? { workspace_id } : undefined);
|
|
51
|
-
const foundBoard = boards.find((b) => b.board_id === board_id);
|
|
52
|
-
if (foundBoard) {
|
|
53
|
-
try {
|
|
54
|
-
const structure = await client.getBoardStructure(board_id);
|
|
55
|
-
return createSuccessResponse({ ...foundBoard, structure }, 'Board found via list search:');
|
|
56
|
-
}
|
|
57
|
-
catch (structureError) {
|
|
58
|
-
return {
|
|
59
|
-
content: [
|
|
60
|
-
{
|
|
61
|
-
type: 'text',
|
|
62
|
-
text: `Board found but structure unavailable:\n${JSON.stringify(foundBoard, null, 2)}\nStructure error: ${structureError instanceof Error ? structureError.message : 'Unknown error'}`,
|
|
63
|
-
},
|
|
64
|
-
],
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
return {
|
|
70
|
-
content: [
|
|
71
|
-
{
|
|
72
|
-
type: 'text',
|
|
73
|
-
text: `Board with ID ${board_id} not found. Available boards:\n${JSON.stringify(boards.map((b) => ({
|
|
74
|
-
board_id: b.board_id,
|
|
75
|
-
name: b.name,
|
|
76
|
-
workspace_id: b.workspace_id,
|
|
77
|
-
})), null, 2)}`,
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
isError: true,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
}
|
|
39
|
+
return await this.searchBoardById(client, board_id, workspace_id);
|
|
84
40
|
}
|
|
85
|
-
// If board_name is provided, search by name
|
|
86
41
|
if (board_name) {
|
|
87
|
-
|
|
88
|
-
const foundBoards = boards.filter((b) => b.name.toLowerCase().includes(board_name.toLowerCase()));
|
|
89
|
-
if (foundBoards.length === 0) {
|
|
90
|
-
return {
|
|
91
|
-
content: [
|
|
92
|
-
{
|
|
93
|
-
type: 'text',
|
|
94
|
-
text: `No boards found matching name "${board_name}". Available boards:\n${JSON.stringify(boards.map((b) => ({
|
|
95
|
-
board_id: b.board_id,
|
|
96
|
-
name: b.name,
|
|
97
|
-
workspace_id: b.workspace_id,
|
|
98
|
-
})), null, 2)}`,
|
|
99
|
-
},
|
|
100
|
-
],
|
|
101
|
-
isError: true,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
if (foundBoards.length === 1) {
|
|
105
|
-
const foundBoard = foundBoards[0];
|
|
106
|
-
if (!foundBoard.board_id) {
|
|
107
|
-
return createErrorResponse(new Error('Board missing board_id'), 'board validation');
|
|
108
|
-
}
|
|
109
|
-
try {
|
|
110
|
-
const structure = await client.getBoardStructure(foundBoard.board_id);
|
|
111
|
-
return createSuccessResponse({ ...foundBoard, structure }, 'Board found by name:');
|
|
112
|
-
}
|
|
113
|
-
catch (structureError) {
|
|
114
|
-
return createSuccessResponse(foundBoard, 'Board found but structure unavailable:');
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return {
|
|
118
|
-
content: [
|
|
119
|
-
{
|
|
120
|
-
type: 'text',
|
|
121
|
-
text: `Multiple boards found matching "${board_name}":\n${JSON.stringify(foundBoards.map((b) => ({
|
|
122
|
-
board_id: b.board_id,
|
|
123
|
-
name: b.name,
|
|
124
|
-
workspace_id: b.workspace_id,
|
|
125
|
-
})), null, 2)}`,
|
|
126
|
-
},
|
|
127
|
-
],
|
|
128
|
-
};
|
|
42
|
+
return await this.searchBoardByName(client, board_name, workspace_id);
|
|
129
43
|
}
|
|
130
44
|
// If neither ID nor name provided, list all boards
|
|
131
|
-
|
|
132
|
-
return createSuccessResponse(boards.map((b) => ({
|
|
133
|
-
board_id: b.board_id,
|
|
134
|
-
name: b.name,
|
|
135
|
-
workspace_id: b.workspace_id,
|
|
136
|
-
})), 'All available boards:');
|
|
45
|
+
return await this.getAllBoards(client, workspace_id);
|
|
137
46
|
}
|
|
138
47
|
catch (error) {
|
|
139
48
|
return createErrorResponse(error, 'searching for board');
|
|
140
49
|
}
|
|
141
50
|
});
|
|
142
51
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
52
|
+
async searchBoardById(client, boardId, workspaceId) {
|
|
53
|
+
try {
|
|
54
|
+
const [board, structure] = await Promise.all([
|
|
55
|
+
client.getBoard(boardId),
|
|
56
|
+
client.getBoardStructure(boardId),
|
|
57
|
+
]);
|
|
58
|
+
return createSuccessResponse({ ...board, structure }, 'Board found directly:');
|
|
59
|
+
}
|
|
60
|
+
catch (directError) {
|
|
61
|
+
console.warn(`Direct board lookup failed for ID ${boardId}:`, directError instanceof Error ? directError.message : 'Unknown error');
|
|
62
|
+
return await this.searchBoardByIdFallback(client, boardId, workspaceId);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async searchBoardByIdFallback(client, boardId, workspaceId) {
|
|
66
|
+
const boards = await client.getBoards(workspaceId ? { workspace_id: workspaceId } : undefined);
|
|
67
|
+
const foundBoard = boards.find((b) => b.board_id === boardId);
|
|
68
|
+
if (!foundBoard) {
|
|
69
|
+
return createErrorResponse(new Error(`Board with ID ${boardId} not found. Available boards:\n${JSON.stringify(this.formatBoardsList(boards), null, 2)}`), 'searching for board');
|
|
70
|
+
}
|
|
71
|
+
return await this.getBoardWithStructure(client, foundBoard, 'Board found via list search:');
|
|
72
|
+
}
|
|
73
|
+
async searchBoardByName(client, boardName, workspaceId) {
|
|
74
|
+
const boards = await client.getBoards(workspaceId ? { workspace_id: workspaceId } : undefined);
|
|
75
|
+
const foundBoards = boards.filter((b) => b.name.toLowerCase().includes(boardName.toLowerCase()));
|
|
76
|
+
if (foundBoards.length === 0) {
|
|
77
|
+
return createErrorResponse(new Error(`No boards found matching name "${boardName}". Available boards:\n${JSON.stringify(this.formatBoardsList(boards), null, 2)}`), 'searching for board by name');
|
|
78
|
+
}
|
|
79
|
+
if (foundBoards.length === 1) {
|
|
80
|
+
const foundBoard = foundBoards[0];
|
|
81
|
+
if (!foundBoard.board_id) {
|
|
82
|
+
return createErrorResponse(new Error('Board missing board_id'), 'board validation');
|
|
166
83
|
}
|
|
167
|
-
|
|
84
|
+
return await this.getBoardWithStructure(client, foundBoard, 'Board found by name:');
|
|
85
|
+
}
|
|
86
|
+
return createSuccessResponse(this.formatBoardsList(foundBoards), `Multiple boards found matching "${boardName}":`);
|
|
87
|
+
}
|
|
88
|
+
async getAllBoards(client, workspaceId) {
|
|
89
|
+
const boards = await client.getBoards(workspaceId ? { workspace_id: workspaceId } : undefined);
|
|
90
|
+
return createSuccessResponse(this.formatBoardsList(boards), 'All available boards:');
|
|
91
|
+
}
|
|
92
|
+
async getBoardWithStructure(client, board, successMessage) {
|
|
93
|
+
try {
|
|
94
|
+
const structure = await client.getBoardStructure(board.board_id);
|
|
95
|
+
return createSuccessResponse({ ...board, structure }, successMessage);
|
|
96
|
+
}
|
|
97
|
+
catch (structureError) {
|
|
98
|
+
console.warn(`Structure lookup failed for board ID ${board.board_id}:`, structureError instanceof Error ? structureError.message : 'Unknown error');
|
|
99
|
+
return createSuccessResponse(board, `Board found but structure unavailable. Structure error: ${structureError instanceof Error ? structureError.message : 'Unknown error'}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
formatBoardsList(boards) {
|
|
103
|
+
return boards.map((b) => ({
|
|
104
|
+
board_id: b.board_id,
|
|
105
|
+
name: b.name,
|
|
106
|
+
workspace_id: b.workspace_id,
|
|
107
|
+
}));
|
|
168
108
|
}
|
|
169
109
|
registerGetColumns(server, client) {
|
|
170
110
|
server.registerTool('get_columns', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-tools.js","sourceRoot":"","sources":["../../../src/server/tools/board-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,8BAA8B,EAC9B,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAmB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE7F,MAAM,OAAO,gBAAgB;IAC3B,aAAa,CAAC,MAAiB,EAAE,MAAyB,EAAE,YAAqB;QAC/E,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"board-tools.js","sourceRoot":"","sources":["../../../src/server/tools/board-tools.ts"],"names":[],"mappings":"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"}
|