Files
ai_ops/tests/mcp-registry.test.ts

66 lines
1.6 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import {
McpRegistry,
createDefaultMcpRegistry,
createMcpHandlerShell,
} from "../src/mcp/handlers.js";
test("mcp registries are isolated instances", () => {
const registryA = createDefaultMcpRegistry();
const registryB = createDefaultMcpRegistry();
registryA.register(
createMcpHandlerShell({
id: "custom-a",
description: "custom handler",
matches: () => false,
}),
);
assert.equal(registryA.listHandlers().some((handler) => handler.id === "custom-a"), true);
assert.equal(registryB.listHandlers().some((handler) => handler.id === "custom-a"), false);
});
test("mcp registry resolves generic fallback by default", () => {
const registry = createDefaultMcpRegistry();
const resolved = registry.resolveServerWithHandler({
serverName: "local-files",
server: {
type: "stdio",
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem", "."],
},
context: {},
fullConfig: {
servers: {},
},
});
assert.equal(resolved.handlerId, "generic");
assert.ok(resolved.codex);
assert.ok(resolved.claude);
});
test("mcp registry rejects unknown explicit handlers", () => {
const registry = new McpRegistry();
assert.throws(
() =>
registry.resolveServerWithHandler({
serverName: "broken",
server: {
type: "http",
url: "http://localhost:3000/mcp",
handler: "missing-handler",
},
context: {},
fullConfig: {
servers: {},
},
}),
/Unknown MCP handler/,
);
});