import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
import { describe, expect, it } from "vitest";
import { createServer } from "../src/server.js";
import type { Logger } from "../src/logger.js";
const testLogger: Logger = {
debug: () => undefined,
info: () => undefined,
warn: () => undefined,
error: () => undefined,
audit: () => undefined,
};
describe("tools/list", () => {
it("exposes the SMTP tool surface", async () => {
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
const server = createServer({ logger: testLogger, env: process.env });
await server.connect(serverTransport);
const client = new Client({ name: "test-client", version: "0.1.0" }, { capabilities: {} });
await client.connect(clientTransport);
const { tools } = await client.listTools();
const toolNames = tools.map((tool) => tool.name).sort();
expect(toolNames).toEqual(
["mail_smtp_list_accounts", "mail_smtp_send_message", "mail_smtp_verify_account"].sort(),
);
await client.close();
await server.close();
});
});