@edicarlos.lds/businessmap-mcp 1.0.1

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Edicarlos Lopes
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,200 @@
1
+ # BusinessMap MCP Server
2
+
3
+ Model Context Protocol server for BusinessMap (Kanbanize) integration.
4
+
5
+ ## Installation
6
+
7
+ ### Via NPX (Recommended)
8
+
9
+ You can run the BusinessMap MCP server directly using npx without installing it globally:
10
+
11
+ ```bash
12
+ npx @edicarlos.lds/businessmap-mcp
13
+ ```
14
+
15
+ ### Global Installation
16
+
17
+ ```bash
18
+ npm install -g @edicarlos.lds/businessmap-mcp
19
+ ```
20
+
21
+ ## Configuration
22
+
23
+ ### Environment Variables
24
+
25
+ The server requires the following environment variables:
26
+
27
+ - `BUSINESSMAP_API_TOKEN`: Your BusinessMap API token
28
+ - `BUSINESSMAP_API_URL`: Your BusinessMap API URL (e.g., `https://your-account.kanbanize.com/api/v2`)
29
+ - `BUSINESSMAP_READ_ONLY_MODE`: Set to `"true"` for read-only mode, `"false"` to allow modifications (optional, defaults to `"false"`)
30
+
31
+ ### Claude Desktop Configuration
32
+
33
+ Add the following configuration to your Claude Desktop `claude_desktop_config.json` file:
34
+
35
+ #### Using NPX:
36
+
37
+ ```json
38
+ {
39
+ "mcpServers": {
40
+ "Businessmap": {
41
+ "command": "npx",
42
+ "args": ["-y", "@edicarlos.lds/businessmap-mcp"],
43
+ "env": {
44
+ "BUSINESSMAP_API_TOKEN": "your_token_here",
45
+ "BUSINESSMAP_API_URL": "https://your-account.kanbanize.com/api/v2",
46
+ "BUSINESSMAP_READ_ONLY_MODE": "false"
47
+ }
48
+ }
49
+ }
50
+ }
51
+ ```
52
+
53
+ #### Using Global Installation:
54
+
55
+ ```json
56
+ {
57
+ "mcpServers": {
58
+ "Businessmap": {
59
+ "command": "businessmap-mcp",
60
+ "env": {
61
+ "BUSINESSMAP_API_TOKEN": "your_token_here",
62
+ "BUSINESSMAP_API_URL": "https://your-account.kanbanize.com/api/v2",
63
+ "BUSINESSMAP_READ_ONLY_MODE": "false"
64
+ }
65
+ }
66
+ }
67
+ }
68
+ ```
69
+
70
+ ### Manual Setup
71
+
72
+ 1. Clone this repository:
73
+ ```bash
74
+ git clone https://github.com/edicarloslds/businessmap-mcp.git
75
+ cd businessmap-mcp
76
+ ```
77
+
78
+ 2. Install dependencies:
79
+ ```bash
80
+ npm install
81
+ ```
82
+
83
+ 3. Create a `.env` file with your BusinessMap credentials:
84
+ ```env
85
+ BUSINESSMAP_API_TOKEN=your_token_here
86
+ BUSINESSMAP_API_URL=https://your-account.kanbanize.com/api/v2
87
+ BUSINESSMAP_READ_ONLY_MODE=false
88
+ ```
89
+
90
+ 4. Build the project:
91
+ ```bash
92
+ npm run build
93
+ ```
94
+
95
+ 5. Start the server:
96
+ ```bash
97
+ npm start
98
+ ```
99
+
100
+ ## Usage
101
+
102
+ The BusinessMap MCP server provides the following tools:
103
+
104
+ ### Workspace Management
105
+ - `mcp_businessmap_list_workspaces` - Get all workspaces
106
+ - `mcp_businessmap_get_workspace` - Get workspace details
107
+ - `mcp_businessmap_create_workspace` - Create new workspace
108
+
109
+ ### Board Management
110
+ - `mcp_businessmap_list_boards` - Get all boards (optionally filtered by workspace)
111
+ - `mcp_businessmap_get_board` - Get board details and structure
112
+ - `mcp_businessmap_create_board` - Create new board
113
+
114
+ ### Card Management
115
+ - `mcp_businessmap_list_cards` - Get cards from a board with optional filters
116
+ - `mcp_businessmap_get_card` - Get detailed card information
117
+ - `mcp_businessmap_create_card` - Create new card
118
+ - `mcp_businessmap_move_card` - Move card to different column/swimlane
119
+ - `mcp_businessmap_update_card` - Update card properties
120
+
121
+ ### User Management
122
+ - `mcp_businessmap_list_users` - Get all users
123
+ - `mcp_businessmap_get_user` - Get user details
124
+
125
+ ### Analytics & Reports
126
+ - `mcp_businessmap_get_workflow_analytics` - Get workflow analytics for a board
127
+ - `mcp_businessmap_get_cumulative_flow_data` - Get cumulative flow diagram data
128
+ - `mcp_businessmap_get_cycle_time_report` - Get cycle time report
129
+ - `mcp_businessmap_get_throughput_report` - Get throughput report
130
+
131
+ ### System
132
+ - `mcp_businessmap_health_check` - Check API connection
133
+ - `mcp_businessmap_get_api_info` - Get API information
134
+
135
+ ## Development
136
+
137
+ ### Setup Development Environment
138
+
139
+ ```bash
140
+ # Install dependencies
141
+ npm install
142
+
143
+ # Run in development mode
144
+ npm run dev
145
+
146
+ # Watch for changes
147
+ npm run watch
148
+
149
+ # Build for production
150
+ npm run build
151
+
152
+ # Run tests
153
+ npm test
154
+
155
+ # Lint code
156
+ npm run lint
157
+ ```
158
+
159
+ ### Docker Support
160
+
161
+ ```bash
162
+ # Build Docker image
163
+ npm run docker:build
164
+
165
+ # Run with Docker Compose
166
+ npm run docker:up
167
+
168
+ # View logs
169
+ npm run docker:logs
170
+
171
+ # Stop containers
172
+ npm run docker:down
173
+ ```
174
+
175
+ ## Publishing
176
+
177
+ To publish a new version to npm:
178
+
179
+ ```bash
180
+ npm install -g @edicarlos.lds/businessmap-mcp
181
+ businessmap-mcp
182
+ ```
183
+
184
+ ## License
185
+
186
+ MIT
187
+
188
+ ## Support
189
+
190
+ For issues and questions:
191
+ 1. Check the [Issues](../../issues) page
192
+ 2. Review BusinessMap API documentation
193
+ 3. Verify your environment configuration
194
+ 4. Submit a new issue with detailed information
195
+
196
+ ## Related Projects
197
+
198
+ - [Model Context Protocol](https://modelcontextprotocol.io/) - Official MCP documentation
199
+ - [BusinessMap API Documentation](https://businessmap.io/api) - Official API reference
200
+ - [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk) - Official MCP SDK
@@ -0,0 +1,37 @@
1
+ import { Board, BusinessMapConfig, Card, CreateBoardParams, CreateCardParams, CreateWorkspaceParams, CumulativeFlowData, UpdateCardParams, User, WorkflowAnalytics, Workspace } from '../types/businessmap.js';
2
+ export declare class BusinessMapClient {
3
+ private http;
4
+ private readonly config;
5
+ constructor(config: BusinessMapConfig);
6
+ private transformError;
7
+ getWorkspaces(): Promise<Workspace[]>;
8
+ getWorkspace(workspaceId: number): Promise<Workspace>;
9
+ createWorkspace(params: CreateWorkspaceParams): Promise<Workspace>;
10
+ updateWorkspace(workspaceId: number, params: Partial<CreateWorkspaceParams>): Promise<Workspace>;
11
+ deleteWorkspace(workspaceId: number): Promise<void>;
12
+ getBoards(workspaceId?: number): Promise<Board[]>;
13
+ getBoard(boardId: number): Promise<Board>;
14
+ createBoard(params: CreateBoardParams): Promise<Board>;
15
+ updateBoard(boardId: number, params: Partial<CreateBoardParams>): Promise<Board>;
16
+ deleteBoard(boardId: number): Promise<void>;
17
+ getBoardStructure(boardId: number): Promise<any>;
18
+ getCards(boardId: number, filters?: {
19
+ column_id?: number;
20
+ swimlane_id?: number;
21
+ assignee_user_id?: number;
22
+ }): Promise<Card[]>;
23
+ getCard(cardId: number): Promise<Card>;
24
+ createCard(params: CreateCardParams): Promise<Card>;
25
+ updateCard(params: UpdateCardParams): Promise<Card>;
26
+ moveCard(cardId: number, columnId: number, swimlaneId?: number, position?: number): Promise<Card>;
27
+ deleteCard(cardId: number): Promise<void>;
28
+ getUsers(): Promise<User[]>;
29
+ getUser(userId: number): Promise<User>;
30
+ getWorkflowAnalytics(boardId: number, periodStart: string, periodEnd: string): Promise<WorkflowAnalytics>;
31
+ getCumulativeFlowData(boardId: number, periodStart: string, periodEnd: string): Promise<CumulativeFlowData[]>;
32
+ getCycleTimeReport(boardId: number, periodStart: string, periodEnd: string): Promise<any>;
33
+ getThroughputReport(boardId: number, periodStart: string, periodEnd: string): Promise<any>;
34
+ healthCheck(): Promise<boolean>;
35
+ getApiInfo(): Promise<any>;
36
+ }
37
+ //# sourceMappingURL=businessmap-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"businessmap-client.d.ts","sourceRoot":"","sources":["../../src/client/businessmap-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ import axios from 'axios';
2
+ export class BusinessMapClient {
3
+ http;
4
+ config;
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.http = axios.create({
8
+ baseURL: config.apiUrl,
9
+ headers: {
10
+ apikey: config.apiToken,
11
+ 'Content-Type': 'application/json',
12
+ Accept: 'application/json',
13
+ },
14
+ timeout: 30000,
15
+ });
16
+ // Add response interceptor for error handling
17
+ this.http.interceptors.response.use((response) => response, (error) => {
18
+ throw this.transformError(error);
19
+ });
20
+ }
21
+ transformError(error) {
22
+ if (error.response) {
23
+ const apiError = error.response.data;
24
+ return new Error(`BusinessMap API Error: ${apiError.error?.message || error.message}`);
25
+ }
26
+ return new Error(`Network Error: ${error.message}`);
27
+ }
28
+ // Workspace Management
29
+ async getWorkspaces() {
30
+ const response = await this.http.get('/workspaces');
31
+ return response.data.data;
32
+ }
33
+ async getWorkspace(workspaceId) {
34
+ const response = await this.http.get(`/workspaces/${workspaceId}`);
35
+ return response.data.data;
36
+ }
37
+ async createWorkspace(params) {
38
+ if (this.config.readOnlyMode) {
39
+ throw new Error('Cannot create workspace in read-only mode');
40
+ }
41
+ const response = await this.http.post('/workspaces', params);
42
+ return response.data.data;
43
+ }
44
+ async updateWorkspace(workspaceId, params) {
45
+ if (this.config.readOnlyMode) {
46
+ throw new Error('Cannot update workspace in read-only mode');
47
+ }
48
+ const response = await this.http.patch(`/workspaces/${workspaceId}`, params);
49
+ return response.data.data;
50
+ }
51
+ async deleteWorkspace(workspaceId) {
52
+ if (this.config.readOnlyMode) {
53
+ throw new Error('Cannot delete workspace in read-only mode');
54
+ }
55
+ await this.http.delete(`/workspaces/${workspaceId}`);
56
+ }
57
+ // Board Management
58
+ async getBoards(workspaceId) {
59
+ const params = workspaceId ? { workspace_id: workspaceId } : {};
60
+ const response = await this.http.get('/boards', { params });
61
+ return response.data.data;
62
+ }
63
+ async getBoard(boardId) {
64
+ const response = await this.http.get(`/boards/${boardId}`);
65
+ return response.data.data;
66
+ }
67
+ async createBoard(params) {
68
+ if (this.config.readOnlyMode) {
69
+ throw new Error('Cannot create board in read-only mode');
70
+ }
71
+ const response = await this.http.post('/boards', params);
72
+ return response.data.data;
73
+ }
74
+ async updateBoard(boardId, params) {
75
+ if (this.config.readOnlyMode) {
76
+ throw new Error('Cannot update board in read-only mode');
77
+ }
78
+ const response = await this.http.patch(`/boards/${boardId}`, params);
79
+ return response.data.data;
80
+ }
81
+ async deleteBoard(boardId) {
82
+ if (this.config.readOnlyMode) {
83
+ throw new Error('Cannot delete board in read-only mode');
84
+ }
85
+ await this.http.delete(`/boards/${boardId}`);
86
+ }
87
+ async getBoardStructure(boardId) {
88
+ const response = await this.http.get(`/boards/${boardId}/structure`);
89
+ return response.data.data;
90
+ }
91
+ // Card Management
92
+ async getCards(boardId, filters) {
93
+ const params = { board_id: boardId, ...filters };
94
+ const response = await this.http.get('/cards', { params });
95
+ return response.data.data;
96
+ }
97
+ async getCard(cardId) {
98
+ const response = await this.http.get(`/cards/${cardId}`);
99
+ return response.data.data;
100
+ }
101
+ async createCard(params) {
102
+ if (this.config.readOnlyMode) {
103
+ throw new Error('Cannot create card in read-only mode');
104
+ }
105
+ const response = await this.http.post('/cards', params);
106
+ return response.data.data;
107
+ }
108
+ async updateCard(params) {
109
+ if (this.config.readOnlyMode) {
110
+ throw new Error('Cannot update card in read-only mode');
111
+ }
112
+ const { card_id, ...updateData } = params;
113
+ const response = await this.http.patch(`/cards/${card_id}`, updateData);
114
+ return response.data.data;
115
+ }
116
+ async moveCard(cardId, columnId, swimlaneId, position) {
117
+ if (this.config.readOnlyMode) {
118
+ throw new Error('Cannot move card in read-only mode');
119
+ }
120
+ const response = await this.http.patch(`/cards/${cardId}`, {
121
+ column_id: columnId,
122
+ swimlane_id: swimlaneId,
123
+ position: position,
124
+ });
125
+ return response.data.data;
126
+ }
127
+ async deleteCard(cardId) {
128
+ if (this.config.readOnlyMode) {
129
+ throw new Error('Cannot delete card in read-only mode');
130
+ }
131
+ await this.http.delete(`/cards/${cardId}`);
132
+ }
133
+ // User Management
134
+ async getUsers() {
135
+ const response = await this.http.get('/users');
136
+ return response.data.data;
137
+ }
138
+ async getUser(userId) {
139
+ const response = await this.http.get(`/users/${userId}`);
140
+ return response.data.data;
141
+ }
142
+ // Analytics and Reporting
143
+ async getWorkflowAnalytics(boardId, periodStart, periodEnd) {
144
+ const params = {
145
+ board_id: boardId,
146
+ period_start: periodStart,
147
+ period_end: periodEnd,
148
+ };
149
+ const response = await this.http.get('/analytics/workflow', {
150
+ params,
151
+ });
152
+ return response.data.data;
153
+ }
154
+ async getCumulativeFlowData(boardId, periodStart, periodEnd) {
155
+ const params = {
156
+ board_id: boardId,
157
+ period_start: periodStart,
158
+ period_end: periodEnd,
159
+ };
160
+ const response = await this.http.get('/analytics/cumulative-flow', { params });
161
+ return response.data.data;
162
+ }
163
+ async getCycleTimeReport(boardId, periodStart, periodEnd) {
164
+ const params = {
165
+ board_id: boardId,
166
+ period_start: periodStart,
167
+ period_end: periodEnd,
168
+ };
169
+ const response = await this.http.get('/analytics/cycle-time', { params });
170
+ return response.data.data;
171
+ }
172
+ async getThroughputReport(boardId, periodStart, periodEnd) {
173
+ const params = {
174
+ board_id: boardId,
175
+ period_start: periodStart,
176
+ period_end: periodEnd,
177
+ };
178
+ const response = await this.http.get('/analytics/throughput', { params });
179
+ return response.data.data;
180
+ }
181
+ // Utility Methods
182
+ async healthCheck() {
183
+ try {
184
+ await this.http.get('/health');
185
+ return true;
186
+ }
187
+ catch {
188
+ return false;
189
+ }
190
+ }
191
+ async getApiInfo() {
192
+ const response = await this.http.get('/info');
193
+ return response.data;
194
+ }
195
+ }
196
+ //# sourceMappingURL=businessmap-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"businessmap-client.js","sourceRoot":"","sources":["../../src/client/businessmap-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAiBzD,MAAM,OAAO,iBAAiB;IACpB,IAAI,CAAgB;IACX,MAAM,CAAoB;IAE3C,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,OAAO,EAAE;gBACP,MAAM,EAAE,MAAM,CAAC,QAAQ;gBACvB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACjC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAiB,EAAE,EAAE;YACpB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,KAAiB;QACtC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAgB,CAAC;YACjD,OAAO,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,aAAa;QACjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAA2B,aAAa,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,eAAe,WAAW,EAAE,CAAC,CAAC;QAC3F,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA6B;QACjD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAyB,aAAa,EAAE,MAAM,CAAC,CAAC;QACrF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,WAAmB,EACnB,MAAsC;QAEtC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CACpC,eAAe,WAAW,EAAE,EAC5B,MAAM,CACP,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAmB;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,SAAS,CAAC,WAAoB;QAClC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAqB,WAAW,OAAO,EAAE,CAAC,CAAC;QAC/E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAqB,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,MAAkC;QACnE,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAqB,WAAW,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,YAAY,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,QAAQ,CACZ,OAAe,EACf,OAAiF;QAEjF,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAChF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,UAAU,MAAM,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAoB,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAoB,UAAU,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3F,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,MAAc,EACd,QAAgB,EAChB,UAAmB,EACnB,QAAiB;QAEjB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAoB,UAAU,MAAM,EAAE,EAAE;YAC5E,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,QAAQ,CAAC,CAAC;QACpE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,UAAU,MAAM,EAAE,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,oBAAoB,CACxB,OAAe,EACf,WAAmB,EACnB,SAAiB;QAEjB,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,SAAS;SACtB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiC,qBAAqB,EAAE;YAC1F,MAAM;SACP,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,OAAe,EACf,WAAmB,EACnB,SAAiB;QAEjB,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,SAAS;SACtB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,4BAA4B,EAC5B,EAAE,MAAM,EAAE,CACX,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAe,EAAE,WAAmB,EAAE,SAAiB;QAC9E,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,SAAS;SACtB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAe,EAAE,WAAmB,EAAE,SAAiB;QAC/E,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,SAAS;SACtB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { BusinessMapConfig } from '../types/businessmap.js';
2
+ export interface EnvironmentConfig {
3
+ businessMap: BusinessMapConfig;
4
+ server: {
5
+ name: string;
6
+ version: string;
7
+ port?: number;
8
+ };
9
+ transport: {
10
+ sse: boolean;
11
+ streamableHttp: boolean;
12
+ };
13
+ }
14
+ export declare const config: EnvironmentConfig;
15
+ export declare function validateConfig(): void;
16
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAK5D,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE;QACT,GAAG,EAAE,OAAO,CAAC;QACb,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AA0BD,eAAO,MAAM,MAAM,EAAE,iBAgBpB,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAgBrC"}
@@ -0,0 +1,60 @@
1
+ import dotenv from 'dotenv';
2
+ // Load environment variables
3
+ dotenv.config();
4
+ function getRequiredEnvVar(name) {
5
+ const value = process.env[name];
6
+ if (!value) {
7
+ throw new Error(`Required environment variable ${name} is not set`);
8
+ }
9
+ return value;
10
+ }
11
+ function getBooleanEnvVar(name, defaultValue = false) {
12
+ const value = process.env[name];
13
+ if (value === undefined)
14
+ return defaultValue;
15
+ return value.toLowerCase() === 'true';
16
+ }
17
+ function getNumberEnvVar(name, defaultValue) {
18
+ const value = process.env[name];
19
+ if (value === undefined)
20
+ return defaultValue;
21
+ const parsed = parseInt(value, 10);
22
+ if (isNaN(parsed)) {
23
+ throw new Error(`Environment variable ${name} must be a valid number`);
24
+ }
25
+ return parsed;
26
+ }
27
+ export const config = {
28
+ businessMap: {
29
+ apiUrl: getRequiredEnvVar('BUSINESSMAP_API_URL'),
30
+ apiToken: getRequiredEnvVar('BUSINESSMAP_API_TOKEN'),
31
+ defaultWorkspaceId: getNumberEnvVar('BUSINESSMAP_DEFAULT_WORKSPACE_ID'),
32
+ readOnlyMode: getBooleanEnvVar('BUSINESSMAP_READ_ONLY_MODE', false),
33
+ },
34
+ server: {
35
+ name: process.env.MCP_SERVER_NAME || 'businessmap-mcp',
36
+ version: process.env.MCP_SERVER_VERSION || '1.0.0',
37
+ port: getNumberEnvVar('PORT'),
38
+ },
39
+ transport: {
40
+ sse: getBooleanEnvVar('SSE', false),
41
+ streamableHttp: getBooleanEnvVar('STREAMABLE_HTTP', true),
42
+ },
43
+ };
44
+ export function validateConfig() {
45
+ // Validate API URL format
46
+ try {
47
+ new URL(config.businessMap.apiUrl);
48
+ }
49
+ catch {
50
+ throw new Error('BUSINESSMAP_API_URL must be a valid URL');
51
+ }
52
+ // Validate API token is not empty
53
+ if (!config.businessMap.apiToken.trim()) {
54
+ throw new Error('BUSINESSMAP_API_TOKEN cannot be empty');
55
+ }
56
+ console.log(`āœ… Configuration validated for ${config.server.name} v${config.server.version}`);
57
+ console.log(`šŸ“” BusinessMap API: ${config.businessMap.apiUrl}`);
58
+ console.log(`šŸ”’ Read-only mode: ${config.businessMap.readOnlyMode ? 'enabled' : 'disabled'}`);
59
+ }
60
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,6BAA6B;AAC7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAehB,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,aAAa,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,eAAwB,KAAK;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAC7C,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,YAAqB;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,yBAAyB,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAsB;IACvC,WAAW,EAAE;QACX,MAAM,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;QAChD,QAAQ,EAAE,iBAAiB,CAAC,uBAAuB,CAAC;QACpD,kBAAkB,EAAE,eAAe,CAAC,kCAAkC,CAAC;QACvE,YAAY,EAAE,gBAAgB,CAAC,4BAA4B,EAAE,KAAK,CAAC;KACpE;IACD,MAAM,EAAE;QACN,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,iBAAiB;QACtD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO;QAClD,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;KAC9B;IACD,SAAS,EAAE;QACT,GAAG,EAAE,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;QACnC,cAAc,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC;KAC1D;CACF,CAAC;AAEF,MAAM,UAAU,cAAc;IAC5B,0BAA0B;IAC1B,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;AAChG,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { config, validateConfig } from './config/environment.js';
4
+ import { BusinessMapMcpServer } from './server/mcp-server.js';
5
+ async function main() {
6
+ try {
7
+ // Validate configuration
8
+ validateConfig();
9
+ // Create and setup the MCP server
10
+ const businessMapServer = new BusinessMapMcpServer();
11
+ console.error(`šŸš€ Starting ${config.server.name} v${config.server.version}`);
12
+ console.error(`šŸ“” BusinessMap API: ${config.businessMap.apiUrl}`);
13
+ console.error(`šŸ”’ Read-only mode: ${config.businessMap.readOnlyMode ? 'enabled' : 'disabled'}`);
14
+ // Setup transport
15
+ const transport = new StdioServerTransport();
16
+ // Connect server to transport
17
+ await businessMapServer.server.connect(transport);
18
+ console.error('āœ… BusinessMap MCP Server is running');
19
+ console.error('šŸ’” Use Ctrl+C to stop the server');
20
+ }
21
+ catch (error) {
22
+ console.error('āŒ Failed to start BusinessMap MCP Server:', error);
23
+ process.exit(1);
24
+ }
25
+ }
26
+ // Handle graceful shutdown
27
+ process.on('SIGINT', () => {
28
+ console.error('\nšŸ›‘ Shutting down BusinessMap MCP Server...');
29
+ process.exit(0);
30
+ });
31
+ process.on('SIGTERM', () => {
32
+ console.error('\nšŸ›‘ Shutting down BusinessMap MCP Server...');
33
+ process.exit(0);
34
+ });
35
+ // Start the server
36
+ main().catch((error) => {
37
+ console.error('šŸ’„ Unhandled error:', error);
38
+ process.exit(1);
39
+ });
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,yBAAyB;QACzB,cAAc,EAAE,CAAC;QAEjB,kCAAkC;QAClC,MAAM,iBAAiB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAErD,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAEhG,kBAAkB;QAClB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAE7C,8BAA8B;QAC9B,MAAM,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAElD,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAEpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,2BAA2B;AAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,mBAAmB;AACnB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare class BusinessMapMcpServer {
3
+ private mcpServer;
4
+ private businessMapClient;
5
+ constructor();
6
+ private setupTools;
7
+ private setupWorkspaceTools;
8
+ private setupBoardTools;
9
+ private setupCardTools;
10
+ private setupUserTools;
11
+ private setupAnalyticsTools;
12
+ private setupUtilityTools;
13
+ private setupResources;
14
+ get server(): McpServer;
15
+ }
16
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,iBAAiB,CAAoB;;IAa7C,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,mBAAmB;IAgG3B,OAAO,CAAC,eAAe;IAsGvB,OAAO,CAAC,cAAc;IAsLtB,OAAO,CAAC,cAAc;IA8DtB,OAAO,CAAC,mBAAmB;IAsI3B,OAAO,CAAC,iBAAiB;IA4DzB,OAAO,CAAC,cAAc;IAKtB,IAAI,MAAM,IAAI,SAAS,CAEtB;CACF"}