UNPKG

mcp-server-blk

Version:

MCP server for managing blocks schemas via API

113 lines 4.69 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js"); const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js"); const types_js_1 = require("@modelcontextprotocol/sdk/types.js"); const logger_1 = require("./utils/logger"); const services_1 = require("./services"); const tools_1 = require("./tools"); class SchemaManagementServer { constructor() { this.server = new index_js_1.Server({ name: 'schema-management-server', version: '0.1.0', }, { capabilities: { tools: {}, }, }); this.blocksKey = process.env.BLOCKS_KEY; this.username = process.env.USERNAME; this.userkey = process.env.USER_KEY; this.apiBaseUrl = process.env.API_BASE_URL; (0, logger_1.debugLog)('info', 'Environment variables loaded', { projectKey: this.blocksKey ? '[SET]' : '[NOT SET]', username: this.username ? '[SET]' : '[NOT SET]', userkey: this.userkey ? '[SET]' : '[NOT SET]', apiBaseUrl: this.apiBaseUrl ? '[SET]' : '[NOT SET]' }); const logPaths = (0, logger_1.getLogFilePaths)(); (0, logger_1.debugLog)('info', '📁 Log files initialized', logPaths); (0, logger_1.cleanupOldLogs)(7); this.setupToolHandlers(); (0, logger_1.debugLog)('info', 'Server initialized'); } setupToolHandlers() { this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => { (0, logger_1.debugLog)('info', 'Received list_tools request'); const tools = [ tools_1.create_schema_tool, tools_1.update_schema_tool ]; (0, logger_1.debugLog)('info', 'Returning tools list', { toolCount: tools.length }); return { tools }; }); this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; (0, logger_1.debugLog)('info', `Received call_tool request for: ${name}`, { arguments: { ...args, userkey: '[HIDDEN]' } }); try { const promptArgs = args ?? {}; if (name === 'create_schema') { const result = await (0, services_1.createSchema)(promptArgs); return result; } else if (name === 'update_schema') { const result = await (0, services_1.updateSchema)(promptArgs); return result; } else { (0, logger_1.debugLog)('error', `Unknown tool: ${name}`); throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Unknown tool: ${name}`); } } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; const errorStack = error instanceof Error ? error.stack : undefined; (0, logger_1.debugLog)('error', `Error executing ${name}`, { error: errorMessage, stack: errorStack }); if (error instanceof types_js_1.McpError) { throw error; } throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Error executing ${name}: ${errorMessage}`); } }); } async run() { const transport = new stdio_js_1.StdioServerTransport(); await this.server.connect(transport); (0, logger_1.debugLog)('info', 'Schema Management MCP server running on stdio'); } async close() { await this.server.close(); } } const server = new SchemaManagementServer(); process.on('SIGINT', async () => { (0, logger_1.debugLog)('info', 'Received SIGINT, shutting down server'); await server.close(); process.exit(0); }); process.on('uncaughtException', (error) => { (0, logger_1.debugLog)('error', 'Uncaught exception', { error: error.message, stack: error.stack }); process.exit(1); }); process.on('unhandledRejection', (reason, promise) => { (0, logger_1.debugLog)('error', 'Unhandled rejection', { reason, promise }); process.exit(1); }); server.run().catch((error) => { (0, logger_1.debugLog)('error', 'Server startup failed', { error: error.message, stack: error.stack }); process.exit(1); }); //# sourceMappingURL=index.js.map