MCP协议测试工具

零配置的MCP(Model Context Protocol)服务器测试工具,支持协议合规性测试、模式验证和CI/CD集成。

  • by no-problem-dev
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 no-problem-dev/mcptest

使用说明

mcptest

MCP(模型上下文协议)服务器的零配置测试运行器


特性

  • 零配置 --自动检测您的MCP服务器 package.json 或 mcptest.config.ts
  • 协议合规性测试 --验证是否符合MCP规范2025-06-18
  • 模式验证 --检查 inputSchema 针对JSON模式的每个工具
  • JUnit XML输出 --降低CI/CD集成 --reporter junit
  • 苏格兰和南方能源公司运输支持 --通过stdio或服务器发送事件测试服务器
  • 快速启动 --500ms以下冷启动

安装

# Global install
npm install -g @ricker-np/mcptest

# Or use directly with npx
npx mcptest run

快速开始

步骤1:在MCP服务器项目中安装mcptest

cd my-mcp-server
npm install --save-dev @ricker-np/mcptest

第二步:运行mcptest

npx mcptest run

步骤3:mcptest自动检测您的服务器并运行测试

mcptest读取您的 package.json 要找到服务器入口点,请通过stdio连接,并自动为服务器公开的每个工具生成和运行协议合规性测试。

mcptest v0.1.0
Auto-detected server: node dist/index.js (stdio)

  initialize            PASS
  tools/list            PASS
  tools/call: add       PASS
  tools/call: subtract  PASS
  Schema: add           PASS
  Schema: subtract      PASS

  6 passed  0 failed  (312ms)

步骤4:修复任何失败结果

每个故障都包含一个明确的信息,解释出了什么问题以及如何修复:

  tools/call: divide    FAIL
  Error: Tool response missing required field "content"
  Expected: { content: [...] }
  Received: { result: 0 }

步骤5:与CI/CD集成

在您的管道中添加JUnitXML输出以跟踪测试结果:

npx mcptest run --reporter junit --output test-results.xml

命令

mcptest run [options]

对MCP服务器运行协议合规性和模式测试。

选项 默认值 描述
--server <cmd> 自动检测 服务器启动命令(例如。 node dist/index.js)
--transport <type> stdio 运输类型: stdio 或 sse
--url <url> -- SSE服务器URL(需要时 --transport sse)
--timeout <ms> 30000 每次测试超时(毫秒)
--reporter <type> default 输出格式: default 或 junit
--output <file> -- 将报告写入文件(需要 --reporter junit)
--mode <mode> conservative 测试生成模式: conservative 或 strict

mcptest validate [target] [options]

验证工具 inputSchema 定义,而无需运行实时服务器。

选项 默认值 描述
[target] . MCP服务器源代码或构建文件的路径
--strict false 警告和错误失败

mcptest init [options]

初始化a mcptest.config.ts 当前目录中的配置文件。

选项 默认值 描述
--transport <type> stdio 在生成的配置中预填充传输类型

配置

创建 mcptest.config.ts 在项目根目录中覆盖默认值:

import type { McptestConfig } from '@ricker-np/mcptest';

export default {
  server: 'node dist/index.js',
  transport: 'stdio',
  timeout: 30000,
  mode: 'conservative',
} satisfies Partial<McptestConfig>;

配置文件是可选的——mcptest在没有配置文件的情况下通过自动检测服务器来工作。


CI/CD集成

GitHub 操作

name: MCP Protocol Tests

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm run build
      - run: npx mcptest run --reporter junit --output test-results.xml
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: test-results
          path: test-results.xml

JUnitXML输出与GitHub Actions测试报告、Jenkins、GitLab CI和大多数其他CI系统兼容。


许可证

麻省理工学院——见 许可证 了解详情。