mcpField
M
mcp-testing-kit

mcp-testing-kit

本地服务
github.com/thoughtspot开发工具1477 周前更新

关于 mcp-testing-kit

mcp-testing-kit 是用于测试 MCP 服务的 TypeScript 工具库,适合编写服务器测试的开发者。它可直接连接服务器实例并调用其工具、资源和提示词,无需依赖 HTTP/SSE。

主要功能

  1. 01兼容 Vitest、Jest 等测试框架
  2. 02直接连接 MCP 服务实例
  3. 03调用工具并列出资源
  4. 04获取提示词
  5. 05监听通知、错误和进度

适用场景

  1. 01测试 MCP 服务注册的工具
  2. 02验证资源和提示词行为
  3. 03检查服务器通知与进度消息

MCP 相关

该库用于测试 MCP 服务,可连接服务器实例、发送请求、接收通知,并断言服务行为。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-testing-kit
Coverage Status NPM Version

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

概述

mcp-testing-kit 提供用于测试 Model Context Protocol (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',
  'Add two numbers MCP style',
  { 
    a: z.number().describe('first number'), 
    b: z.number().describe('second number') 
  },
  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";
// Use your favorite testing framework.
import { describe, it, expect, afterEach } from "vitest";
import { connect, close } from "../../../index.js";

describe("Basic MCP server", () => {
  afterEach(async () => {
    await close(server);
  });

  it("Should return correct sum when `sum` is called", async () => {
    // Connect to the server and create a mock client.
    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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。