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
JavaScript
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