UNPKG

taiga-mcp-server

Version:

Full-featured MCP server for Taiga project management with advanced sprint and issue tracking. Based on mcpTAIGA by adriapedralbes, enhanced with substantial modifications. Developed collaboratively with Claude Code (AI-assisted development).

160 lines (139 loc) 4.06 kB
/** * MCP Tools Registry * Centralizes all tool definitions for easy management */ // Import all tool modules import { authenticateTool } from './authTools.js'; import { listProjectsTool, getProjectTool } from './projectTools.js'; import { listUserStoriesTool, createUserStoryTool } from './userStoryTools.js'; import { createTaskTool } from './taskTools.js'; import { listIssuesTool, getIssueTool, createIssueTool, addIssueToSprintTool, assignIssueTool, updateIssueStatusTool } from './issueTools.js'; import { listSprintsTool, getSprintStatsTool, createSprintTool, getIssuesBySprintTool } from './sprintTools.js'; import { batchCreateIssuesTool, batchCreateUserStoriesTool, batchCreateTasksTool } from './batchTools.js'; import { advancedSearchTool, queryHelpTool, validateQueryTool } from './advancedSearchTools.js'; import { addCommentTool, listCommentsTool, editCommentTool, deleteCommentTool } from './commentTools.js'; import { uploadAttachmentTool, listAttachmentsTool, downloadAttachmentTool, deleteAttachmentTool } from './attachmentTools.js'; import { createEpicTool, listEpicsTool, getEpicTool, updateEpicTool, linkStoryToEpicTool, unlinkStoryFromEpicTool } from './epicTools.js'; import { createWikiPageTool, listWikiPagesTool, getWikiPageTool, updateWikiPageTool, deleteWikiPageTool, watchWikiPageTool } from './wikiTools.js'; /** * Registry of all available MCP tools * Organized by category for easy maintenance */ export const toolRegistry = { // Authentication tools auth: [ authenticateTool ], // Project management tools projects: [ listProjectsTool, getProjectTool ], // User story tools userStories: [ listUserStoriesTool, createUserStoryTool ], // Task tools tasks: [ createTaskTool ], // Issue tools issues: [ listIssuesTool, getIssueTool, createIssueTool, addIssueToSprintTool, assignIssueTool, updateIssueStatusTool ], // Sprint (milestone) tools sprints: [ listSprintsTool, getSprintStatsTool, createSprintTool, getIssuesBySprintTool ], // Batch operation tools batch: [ batchCreateIssuesTool, batchCreateUserStoriesTool, batchCreateTasksTool ], // Advanced search tools search: [ advancedSearchTool, queryHelpTool, validateQueryTool ], // Comment system tools comments: [ addCommentTool, listCommentsTool, editCommentTool, deleteCommentTool ], // Attachment management tools attachments: [ uploadAttachmentTool, listAttachmentsTool, downloadAttachmentTool, deleteAttachmentTool ], // Epic management tools epics: [ createEpicTool, listEpicsTool, getEpicTool, updateEpicTool, linkStoryToEpicTool, unlinkStoryFromEpicTool ], // Wiki management tools wiki: [ createWikiPageTool, listWikiPagesTool, getWikiPageTool, updateWikiPageTool, deleteWikiPageTool, watchWikiPageTool ] }; /** * Get all tools as a flat array * @returns {Array} - Array of all tool definitions */ export function getAllTools() { const allTools = []; for (const category in toolRegistry) { allTools.push(...toolRegistry[category]); } return allTools; } /** * Get tools by category * @param {string} category - Category name * @returns {Array} - Array of tools in the category */ export function getToolsByCategory(category) { return toolRegistry[category] || []; } /** * Register a tool with the MCP server * @param {Object} server - MCP server instance * @param {Object} tool - Tool definition */ export function registerTool(server, tool) { server.tool(tool.name, tool.schema, tool.handler); } /** * Register all tools with the MCP server * @param {Object} server - MCP server instance */ export function registerAllTools(server) { const tools = getAllTools(); tools.forEach(tool => { registerTool(server, tool); }); console.error(`Registered ${tools.length} MCP tools across ${Object.keys(toolRegistry).length} categories`); }