mcpField
M
mcp-therapy

mcp-therapy

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

关于 mcp-therapy

mcp-testing-kit 是用于测试 MCP 服务的 TypeScript 工具库,适合编写服务行为测试。它通过虚拟传输层直接连接服务实例,无需依赖 HTTP/SSE。

主要功能

  1. 01兼容 Vitest、Jest 等测试框架
  2. 02直接连接 MCP 服务实例
  3. 03调用工具、资源和提示词
  4. 04监听通知、错误与进度
  5. 05发送原始 JSON-RPC 请求

适用场景

  1. 01验证服务注册的工具与资源
  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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。