@inso_web/els-mcp
Version:
MCP-сервер поверх INSO Error Logs Service. Read-only tools (search, analytics, fingerprinting, correlations) для подключения Claude Desktop/Code и ChatGPT к логам ошибок. Streamable HTTP transport + stdio для npx-запуска.
41 lines • 1.81 kB
JavaScript
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import pino from 'pino';
import { ElsClient } from './elsClient.js';
import { registerTools } from './tools/index.js';
import { registerResources } from './resources/index.js';
import { registerPrompts } from './prompts/index.js';
import { buildInstructions } from './discovery/instructions.js';
export function createMcpServer(opts) {
const log = opts.log ??
pino({ level: opts.config.logLevel, name: 'els-mcp' }, pino.destination({ dest: 2, sync: false }));
const client = opts.client ??
new ElsClient({
baseUrl: opts.config.elsBaseUrl,
apiKey: opts.config.elsApiKey,
timeoutMs: opts.config.upstreamTimeoutMs,
log,
});
const instructions = opts.instructions ??
buildInstructions({ project: opts.projectConfig ?? null });
const server = new McpServer({ name: 'els-mcp', version: '0.3.0' }, {
capabilities: { tools: {}, resources: {}, prompts: {} },
instructions,
});
const registeredTools = registerTools(server, {
client,
disabled: opts.config.disabledTools,
log,
...(opts.contextProvider ? { contextProvider: opts.contextProvider } : {}),
...(opts.middleware ? { middleware: opts.middleware } : {}),
});
const registeredResources = registerResources(server, { client, log });
const registeredPrompts = registerPrompts(server, { log });
log.info({
tools: registeredTools,
resources: registeredResources,
prompts: registeredPrompts,
baseUrl: opts.config.elsBaseUrl,
}, 'MCP server initialized');
return { server, client, log, registeredTools, registeredResources, registeredPrompts };
}
//# sourceMappingURL=server.js.map