关于 mcp-testing-kit
mcp-testing-kit 是用于测试 MCP 服务的 TypeScript 工具库,适合编写服务器测试的开发者。它可直接连接服务器实例并调用其工具、资源和提示词,无需依赖 HTTP/SSE。
主要功能
- 01兼容 Vitest、Jest 等测试框架
- 02直接连接 MCP 服务实例
- 03调用工具并列出资源
- 04获取提示词
- 05监听通知、错误和进度
适用场景
- 01测试 MCP 服务注册的工具
- 02验证资源和提示词行为
- 03检查服务器通知与进度消息
MCP 相关
该库用于测试 MCP 服务,可连接服务器实例、发送请求、接收通知,并断言服务行为。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-testing-kit

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