businessmap-mcp
Version:
MCP server for Businessmap Kanbanize, exposing tools for managing business entities like boards, cards, and columns, facilitating LLM interaction.
309 lines (308 loc) • 9.15 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.apiServices = void 0;
const request_1 = __importDefault(require("../utils/request"));
const DEFAULT_ERROR = "UNKNOWN_ERROR";
const DEFAULT_MESSAGE_ERROR = "An unknown mistake occurred";
const DEFAULT_REFERENCE_MESSAGE_ERROR = "Check the logs for more details";
class ApiServices extends request_1.default {
handleError(error) {
let errorMessage = DEFAULT_MESSAGE_ERROR;
if (error instanceof Error) {
errorMessage = error.message;
}
return {
error: {
code: DEFAULT_ERROR,
message: errorMessage,
reference: DEFAULT_REFERENCE_MESSAGE_ERROR,
},
};
}
async getMe() {
try {
const data = await this.get("/me");
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getApiLimits() {
try {
const data = await this.get("/apiLimits");
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getCard(cardId) {
try {
const data = await this.get(`/cards/${cardId}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async createCard(board_id, title, description, assignee_ids, priority, column_id, lane_id, workflow_id) {
try {
const data = await this.post(`/cards`, {
board_id,
title,
description,
assignee_ids,
priority,
column_id,
lane_id,
workflow_id,
});
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async updateCard(card_id, title, description, assignee_ids, priority, column_id, lane_id) {
try {
const data = await this.patch(`/cards/${card_id}`, {
title,
description,
assignee_ids,
priority,
column_id,
lane_id,
});
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async deleteCard(cardId) {
try {
await this.delete(`/cards/${cardId}`);
return { data: "The card has been deleted" };
}
catch (error) {
return this.handleError(error);
}
}
async getCards(props) {
try {
const cardIds = props.card_ids ? `&card_ids=${props.card_ids}` : "";
const boardIds = props.board_ids ? `&board_ids=${props.board_ids}` : "";
const ownerUserIds = props.owner_user_ids
? `&owner_user_ids=${props.owner_user_ids}`
: "";
const data = await this.get(`/cards?state=${props.state}&is_blocked=${props.is_blocked}&expand=linked_cards,co_owner_ids,subtasks${cardIds}${boardIds}${ownerUserIds}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getCardComments(cardId) {
try {
const data = await this.get(`/cards/${cardId}/comments`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async addCardComment(cardId, comment) {
try {
const data = await this.post(`/cards/${cardId}/comments`, {
text: comment,
});
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getCardComment(cardId, commentId) {
try {
const data = await this.get(`/cards/${cardId}/comments/${commentId}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async updateCardComment(cardId, commentId, comment) {
try {
const data = await this.patch(`/cards/${cardId}/comments/${commentId}`, {
text: comment,
});
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async deleteCardComment(cardId, commentId) {
try {
const data = await this.delete(`/cards/${cardId}/comments/${commentId}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getCardCoOwners(cardId) {
try {
const data = await this.get(`/cards/${cardId}/coOwners`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async checkCardCoOwner(cardId, userId) {
try {
await this.get(`/cards/${cardId}/coOwners/${userId}`);
return { data: true };
}
catch (error) {
return this.handleError(error);
}
}
async addCardCoOwner(cardId, userId) {
try {
await this.put(`/cards/${cardId}/coOwners/${userId}`);
return { data: "Add a user as a co-owner of a card." };
}
catch (error) {
return this.handleError(error);
}
}
async removeCardCoOwner(cardId, userId) {
try {
await this.delete(`/cards/${cardId}/coOwners/${userId}`);
return { data: "Remove a user as a co-owner of a card." };
}
catch (error) {
return this.handleError(error);
}
}
async getLinkedCards(cardId) {
try {
const data = await this.get(`/cards/${cardId}/linkedCards`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getCardSubtasks(cardId) {
try {
const data = await this.get(`/cards/${cardId}/subtasks`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getCardSubtask(cardId, subtaskId) {
try {
const data = await this.get(`/cards/${cardId}/subtasks/${subtaskId}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async addCardSubtask(cardId, description) {
try {
const data = await this.post(`/cards/${cardId}/subtasks`, {
description,
});
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async updateCardSubtask(cardId, subtaskId, description, isFinished) {
try {
const data = await this.patch(`/cards/${cardId}/subtasks/${subtaskId}`, {
description,
is_finished: isFinished,
});
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async deleteCardSubtask(cardId, subtaskId) {
try {
await this.delete(`/cards/${cardId}/subtasks/${subtaskId}`);
return { data: "The card subtask has been deleted." };
}
catch (error) {
return this.handleError(error);
}
}
async getBoards() {
try {
const data = await this.get(`/boards?if_assigned=1`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getBoard(boardId) {
try {
const data = await this.get(`/boards/${boardId}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getUser(user_id) {
try {
const data = await this.get(`/users/${user_id}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getColumns(boardId) {
try {
const data = await this.get(`/boards/${boardId}/columns`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getColumn(boardId, columnId) {
try {
const data = await this.get(`/boards/${boardId}/columns/${columnId}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
async getWorkspace(workspaceId) {
try {
const data = await this.get(`/workspace/${workspaceId}`);
return { data };
}
catch (error) {
return this.handleError(error);
}
}
}
exports.apiServices = new ApiServices();