UNPKG

genkitx-mcp

Version:

A Genkit plugin that provides interoperability between Genkit and Model Context Protocol (MCP). Both client and server use cases are supported.

54 lines 2.14 kB
import { __async } from "./chunk-E3LOUS7X.mjs"; import { GenkitError } from "genkit"; import { genkitPlugin } from "genkit/plugin"; import { registerAllPrompts } from "./client/prompts.js"; import { registerResourceTools } from "./client/resources.js"; import { registerAllTools } from "./client/tools.js"; import { GenkitMcpServer } from "./server.js"; function transportFrom(params) { return __async(this, null, function* () { if (params.transport) return params.transport; if (params.serverUrl) { const { SSEClientTransport } = yield import("@modelcontextprotocol/sdk/client/sse.js"); return new SSEClientTransport(URL.parse(params.serverUrl)); } if (params.serverProcess) { const { StdioClientTransport } = yield import("@modelcontextprotocol/sdk/client/stdio.js"); return new StdioClientTransport(params.serverProcess); } throw new GenkitError({ status: "INVALID_ARGUMENT", message: "Unable to create a server connection with supplied options. Must provide transport, stdio, or sseUrl." }); }); } function mcpClient(params) { return genkitPlugin(params.name, (ai) => __async(this, null, function* () { const { Client } = yield import("@modelcontextprotocol/sdk/client/index.js"); const transport = yield transportFrom(params); ai.options.model; const client = new Client( { name: params.name, version: params.version || "1.0.0" }, { capabilities: {} } ); yield client.connect(transport); const capabilties = yield client.getServerCapabilities(); const promises = []; if (capabilties == null ? void 0 : capabilties.tools) promises.push(registerAllTools(ai, client, params)); if (capabilties == null ? void 0 : capabilties.prompts) promises.push(registerAllPrompts(ai, client, params)); if (capabilties == null ? void 0 : capabilties.resources) promises.push(registerResourceTools(ai, client, params)); yield Promise.all(promises); })); } function mcpServer(ai, options) { return new GenkitMcpServer(ai, options); } export { mcpClient, mcpServer }; //# sourceMappingURL=index.mjs.map