UNPKG

@allpepper/memory-bank-mcp

Version:

MCP server for remote management of project memory banks

45 lines (44 loc) 1.56 kB
import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from "@modelcontextprotocol/sdk/types.js"; export class McpServerAdapter { mcpRouter; server = null; constructor(mcpRouter) { this.mcpRouter = mcpRouter; } register({ name, version }) { this.server = new Server({ name, version, }, { capabilities: { tools: this.mcpRouter.getToolCapabilities(), }, }); this.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: this.mcpRouter.getToolsSchemas(), })); this.server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name } = request.params; const handler = await this.mcpRouter.getToolHandler(name); if (!handler) { throw new McpError(ErrorCode.MethodNotFound, `Tool ${name} not found`); } return await handler(request); }); } async start() { if (!this.server) { throw new Error("Server not initialized"); } const transport = new StdioServerTransport(); try { await this.server.connect(transport); console.error("Memory Bank MCP server running on stdio"); } catch (error) { console.error(error); } } }