UNPKG

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
"use strict"; 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;