Skip to main content
Glama

mcp-server-circleci

Official
index.ts2.45 kB
#!/usr/bin/env node import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { CCI_HANDLERS, CCI_TOOLS } from './circleci-tools.js'; import { createUnifiedTransport } from './transports/unified.js'; import { createStdioTransport } from './transports/stdio.js'; const server = new McpServer( { name: 'mcp-server-circleci', version: '1.0.0' }, { capabilities: { tools: {}, resources: {} } }, ); // ---- DEBUG WRAPPERS -------------------------------------------------- if (process.env.debug === 'true') { const srv: any = server; if (typeof srv.notification === 'function') { const origNotify = srv.notification.bind(server); srv.notification = async (...args: any[]) => { try { const [{ method, params }] = args; console.error( '[DEBUG] outgoing notification:', method, JSON.stringify(params), ); } catch { /* ignore */ } return origNotify(...args); }; } if (typeof srv.request === 'function') { const origRequest = srv.request.bind(server); srv.request = async (...args: any[]) => { const [payload] = args; const result = await origRequest(...args); console.error( '[DEBUG] response to', payload?.method, JSON.stringify(result).slice(0, 200), ); return result; }; } } // Register all CircleCI tools once if (process.env.debug === 'true') { console.error('[DEBUG] [Startup] Registering CircleCI MCP tools...'); } // Ensure we advertise support for tools/list in capabilities (SDK only sets listChanged) (server as any).server.registerCapabilities({ tools: { list: true } }); CCI_TOOLS.forEach((tool) => { const handler = CCI_HANDLERS[tool.name]; if (!handler) throw new Error(`Handler for tool ${tool.name} not found`); if (process.env.debug === 'true') { console.error(`[DEBUG] [Startup] Registering tool: ${tool.name}`); } server.tool( tool.name, tool.description, { params: tool.inputSchema.optional() }, handler as any, ); }); async function main() { if (process.env.start === 'remote') { console.error('Starting CircleCI MCP unified HTTP+SSE server...'); createUnifiedTransport(server); } else { console.error('Starting CircleCI MCP server in stdio mode...'); createStdioTransport(server); } } main().catch((err) => { console.error('Server error:', err); process.exit(1); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CircleCI-Public/mcp-server-circleci'

If you have feedback or need assistance with the MCP directory API, please join our Discord server