@allpepper/memory-bank-mcp
Version:
MCP server for remote management of project memory banks
45 lines (44 loc) • 1.56 kB
JavaScript
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);
}
}
}