@l4t/mcp-ai
Version:
A set of tools for making integration and aggregation of MCP servers extremely easy.
41 lines • 1.58 kB
JavaScript
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { McpClientConfigs } from '../../common/types.js';
import { create as createFeatures } from '../features.js';
import { openApiToZodSchema } from '../../common/libs.js';
const create = (config) => {
// eslint-disable-next-line functional/no-let
let server;
const setupServer = async (features) => {
const rawTools = await features.getTools();
const tools = rawTools.map(tool => ({
name: tool.name,
description: tool.description || '',
parameters: tool.inputSchema,
}));
server = new McpServer(Object.assign({}, McpClientConfigs.aggregator, {
capabilities: { tools },
}));
tools.forEach(tool => {
// @ts-ignore
server.tool(tool.name, tool.description || '', openApiToZodSchema(tool.parameters), async (extra) => {
const results = await features.executeTool(tool.name, extra);
return results;
});
});
};
return {
start: async () => {
const features = await createFeatures(config);
await features.connect();
await setupServer(features);
const transport = new StdioServerTransport();
await server?.connect(transport);
},
stop: async () => {
await server?.close();
},
};
};
export { create };
//# sourceMappingURL=cli.js.map