businessmap-mcp
Version:
MCP server for Businessmap Kanbanize, exposing tools for managing business entities like boards, cards, and columns, facilitating LLM interaction.
94 lines (93 loc) • 4.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LaneToolsController = void 0;
const zod_1 = require("zod");
const ApiService_1 = require("../../services/ApiService");
const apiResponseHandler_1 = require("../../utils/apiResponseHandler");
const env_1 = require("../../utils/env");
class LaneToolsController {
server;
constructor(server) {
this.server = server;
this.registerTools();
}
registerTools() {
this.registerGetLanesToolhandler();
this.registerGetLaneToolhandler();
if (!env_1.env.BUSINESSMAP_READ_ONLY) {
this.registerCreateLaneToolhandler();
this.registerUpdateLaneToolhandler();
this.registerDeleteLaneToolhandler();
}
}
registerGetLanesToolhandler() {
this.server.tool("get-lanes", "Get a list of lanes in a specified board", {
board_id: zod_1.z
.string()
.describe("A board id for which you want to get the lanes"),
}, async ({ board_id }) => {
const response = await ApiService_1.apiServices.getLanes(board_id);
return (0, apiResponseHandler_1.handleApiResponse)(response);
});
}
registerGetLaneToolhandler() {
this.server.tool("get-lane", "Get the details of a single lane", {
lane_id: zod_1.z.string().describe("Lane id"),
}, async ({ lane_id }) => {
const response = await ApiService_1.apiServices.getLane(lane_id);
return (0, apiResponseHandler_1.handleApiResponse)(response);
});
}
registerCreateLaneToolhandler() {
this.server.tool("create-lane", "Create a lane", {
board_id: zod_1.z.string().describe("Board id"),
workflow_id: zod_1.z.number().describe("Workflow id"),
position: zod_1.z.number().describe("Lane position"),
name: zod_1.z.string().describe("Lane name"),
description: zod_1.z.string().optional().describe("Lane description"),
color: zod_1.z.string().describe("Lane color"),
}, async ({ board_id, workflow_id, position, name, description, color, }) => {
const response = await ApiService_1.apiServices.createLane(board_id, {
workflow_id,
position,
name,
description,
color,
});
return (0, apiResponseHandler_1.handleApiResponse)(response);
});
}
registerUpdateLaneToolhandler() {
this.server.tool("update-lane", "Update an existing lane", {
lane_id: zod_1.z.string().describe("Lane id"),
workflow_id: zod_1.z.number().optional().describe("Workflow id"),
position: zod_1.z.number().optional().describe("Lane position"),
name: zod_1.z.string().optional().describe("Lane name"),
description: zod_1.z.string().optional().describe("Lane description"),
color: zod_1.z.string().optional().describe("Lane color"),
}, async ({ lane_id, workflow_id, position, name, description, color, }) => {
const updateParams = {};
if (workflow_id !== undefined)
updateParams.workflow_id = workflow_id;
if (position !== undefined)
updateParams.position = position;
if (name !== undefined)
updateParams.name = name;
if (description !== undefined)
updateParams.description = description;
if (color !== undefined)
updateParams.color = color;
const response = await ApiService_1.apiServices.updateLane(lane_id, updateParams);
return (0, apiResponseHandler_1.handleApiResponse)(response);
});
}
registerDeleteLaneToolhandler() {
this.server.tool("delete-lane", "Delete a lane", {
lane_id: zod_1.z.string().describe("Lane id"),
}, async ({ lane_id }) => {
const response = await ApiService_1.apiServices.deleteLane(lane_id);
return (0, apiResponseHandler_1.handleApiResponse)(response);
});
}
}
exports.LaneToolsController = LaneToolsController;