import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";
import { mergeToolModules } from "./core/toolRegistry.js";
import { jiraToolModule } from "./services/jira/tools.js";
import { slackToolModule } from "./services/slack/tools.js";
const server = new Server(
{ name: "jira-mcp", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
const { tools, handlers } = mergeToolModules([jiraToolModule, slackToolModule]);
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools,
}));
server.setRequestHandler(CallToolRequestSchema, async (req) => {
const { name, arguments: args } = req.params;
const handler = handlers[name];
if (!handler) {
throw new Error(`Unknown tool: ${name}`);
}
return handler((args ?? {}) as Record<string, unknown>);
});
const transport = new StdioServerTransport();
await server.connect(transport);