@edicarlos.lds/businessmap-mcp
Version:
Model Context Protocol server for BusinessMap (Kanbanize) integration
50 lines • 2.15 kB
JavaScript
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
export class CardResourceHandler {
registerResources(server, client) {
// List cards for a specific board
server.registerResource('cards', new ResourceTemplate('businessmap://boards/{board_id}/cards', { list: undefined }), {}, // Added empty metadata object
async (uri, variables) => {
try {
const boardId = parseInt(variables.board_id);
if (isNaN(boardId)) {
throw new Error(`Invalid board_id: "${variables.board_id}" is not a valid number`);
}
const cards = await client.getCards(boardId);
return {
contents: [
{
uri: uri.href,
text: JSON.stringify(cards, null, 2),
},
],
};
}
catch (error) {
throw new Error(`Failed to fetch cards: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
});
// Get card details
server.registerResource('card', new ResourceTemplate('businessmap://cards/{card_id}', { list: undefined }), {}, // Added empty metadata object
async (uri, variables) => {
try {
const cardId = parseInt(variables.card_id);
if (isNaN(cardId)) {
throw new Error(`Invalid card_id: "${variables.card_id}" is not a valid number`);
}
const card = await client.getCard(cardId);
return {
contents: [
{
uri: uri.href,
text: JSON.stringify(card, null, 2),
},
],
};
}
catch (error) {
throw new Error(`Failed to fetch card: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
});
}
}
//# sourceMappingURL=card-resources.js.map