返回市场
MCP治疗

MCP治疗

作者:thoughtspot11 星标更新:2025-05-07

项目介绍

mcp-testing-kit </br> Coverage Status NPM Version

用于测试您的MCP服务器的测试库。

概述

mcp-testing-kit 提供了测试 模型上下文协议 (MCP) 服务器的实用工具。它允许您连接到一个 MCP 服务器实例,发送请求,接收通知,并在测试中验证服务器的行为。

特性

  • 支持任何测试框架(如 vitest, jest 等)
  • 轻量级,提供“足够”的工具来测试 MCP 服务器。
  • TypeScript

安装

$ npm i -D mcp-testing-kit

示例

假设您在 example/basic/src/index.ts 中定义了一个 MCP 服务器:

// mcp-server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";

const server = new McpServer({ name: 'simple-mcp-server', version: '1.0.0' });

server.tool(
  'add',
  '以 MCP 方式添加两个数字',
  { 
    a: z.number().describe('第一个数字'), 
    b: z.number().describe('第二个数字') 
  },
  async ({ name }) => ({
    messages: [
      { role: 'user', content: { type: 'text', text: String(a + b) } }
    ]
  })
);

export default server;

您可以使用 mcp-testing-kit 编写如下测试:

// mcp-server.test.js
import server from "../src/index.js";
// 使用您喜欢的测试框架。
import { describe, it, expect, afterEach } from "vitest";
import { connect, close } from "../../../index.js";

describe("基本 MCP 服务器", () => {
  afterEach(async () => {
    await close(server);
  });

  it("当调用 `sum` 时应返回正确的总和", async () => {
    // 连接到服务器并创建一个模拟客户端。
    const client = await connect(server);
    const result = await client.callTool("greeting-template", { a: 10, b: 2 });
    expect(result.content[0].text).toEqual("12");
  });
});

工作原理

  • 创建一个虚拟传输层,直接连接到 MCP 服务器,而不是依赖于 HTTP/SSE。
  • 提供抽象方法,可以直接在服务器上调用工具/资源/提示。

API

connect(server: Server)

连接到 MCP 服务器实例,并返回具有以下方法的客户端:

方法签名描述
listTools(): Promise<ListToolsResult>列出服务器上注册的所有工具。
callTool(tool: string, params?: any): Promise<any>通过名称调用工具,可选参数。
listResources(): Promise<ListResourcesResult>列出服务器上注册的所有资源。
listPrompts(): Promise<ListPromptsResult>列出服务器上注册的所有提示。
getPrompt(prompt: string, params?: any): Promise<any>通过名称获取提示,可选参数。
onNotification(cb: (message: JSONRPCMessage) => void): void注册来自服务器的通知回调。
onError(cb: (message: JSONRPCMessage) => void): void注册来自服务器的错误消息回调。
onProgress(cb: (message: JSONRPCMessage) => void): void注册来自服务器的进度通知回调。
sendToServer(message: Request): Promise<any>向服务器发送原始 JSON-RPC 请求。

close(server: Server)

关闭 MCP 服务器实例。

更多示例

参见 example/basic 以了解一个完整的 MCP 服务器及其对应的测试。

许可证

MIT