MCP服务器测试套件

用于验证MCP服务器连接和响应质量的自动化测试工具,支持OAuth认证,适用于CI/CD流程。

  • by Maximomx
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Maximomx/mcptest

使用说明

MCP服务器测试套件

针对采用OAuth认证的MCP(模型上下文协议)服务器的自动化测试套件。此工具在每次发布后验证服务器的连接性和响应质量。

特点/功能

  • 连接测试验证MCP服务器连接并使用OAuth进行身份验证
  • 响应验证确保回复符合质量标准(最低行数要求)
  • 发布验证非常适合用于CI/CD流水线测试服务器发布
  • 详细报告明确的通过/失败状态,附带全面的日志记录

先决条件

  • Node.js 18及以上版本
  • TypeScript
  • 一个支持OAuth认证的MCP服务器
  • OAuth凭据(客户端ID、密钥、令牌)

安装

  1. 克隆此仓库:
git clone <repository-url>
cd mcptest
  1. 安装依赖项:
npm install
  1. 配置您的环境:
cp .env.example .env
  1. 编辑 .env 提供您的MCP服务器详细信息:
# Server configuration
MCP_SERVER_COMMAND=node
MCP_SERVER_ARGS=path/to/your/mcp-server.js

# OAuth credentials
OAUTH_CLIENT_ID=your-client-id
OAUTH_CLIENT_SECRET=your-client-secret
OAUTH_TOKEN=your-access-token
OAUTH_REFRESH_TOKEN=your-refresh-token

# Test configuration
TEST_PROMPT=Show me the account status
MIN_RESPONSE_LINES=10
TEST_TIMEOUT=30000

使用方法

构建测试套件

npm run build

运行测试

npm test

该测试将:

  1. 使用OAuth连接到您的MCP服务器
  2. 发送已配置的测试提示(默认:“显示账户状态”)
  3. 验证响应至少包含10行内容
  4. 报告详细结果

退出代码

  • 0所有测试均通过
  • 1测试失败或发生错误

测试标准

该测试验证了两个关键方面:

1. 连接测试

  • 建立与MCP服务器的连接
  • 验证OAuth身份验证
  • 检索服务器信息和功能

2. 响应质量测试

  • 向服务器发送测试提示
  • 收到回复
  • 验证响应包含至少所需行数(默认:10行)
  • 显示响应预览

配置选项

变量 描述 默认值
MCP_SERVER_COMMAND 运行服务器的命令 node
MCP_SERVER_ARGS 服务器脚本路径和参数 (必需)
OAUTH_CLIENT_ID OAuth 客户端 ID (必填)
OAUTH_CLIENT_SECRET OAuth 客户端密钥 (必需)
OAUTH_TOKEN OAuth 访问令牌 (必填)
OAUTH_REFRESH_TOKEN OAuth 刷新令牌 (必需)
TEST_PROMPT 测试提示发送 Show me the account status
MIN_RESPONSE_LINES 最小响应行数 10
TEST_TIMEOUT 毫秒级超时 30000

示例输出

═══════════════════════════════════════════════════
      MCP Server Release Test Suite
═══════════════════════════════════════════════════

Configuration:
  Server: node dist/mcp-server.js
  Test Prompt: "Show me the account status"
  Min Response Lines: 10
  Timeout: 30000ms

🔌 Connecting to MCP server...
   Command: node
   Args: dist/mcp-server.js
✅ Connection established successfully

📋 Server Information:
   Name: my-mcp-server
   Version: 1.0.0

📝 Testing prompt execution...
   Prompt: "Show me the account status"
   Available tools: 3
   Using tool: get_account_status

📊 Response Analysis:
   Lines received: 15
   Required minimum: 10

   Preview (first 5 lines):
   Account Status Report
   =====================
   Account ID: 12345
   Status: Active
   Balance: $1,234.56
   ...

✅ TEST PASSED: Response meets quality criteria (15 >= 10 lines)

🔌 Connection closed

═══════════════════════════════════════════════════
                 TEST SUMMARY
═══════════════════════════════════════════════════
Status: ✅ PASSED
Duration: 2.34s
Connection: ✅
Response Received: ✅
Response Quality: 15/10 lines ✅
═══════════════════════════════════════════════════

持续集成/持续交付(CI/CD)集成

GitHub Actions 示例

name: Test MCP Server

on:
  release:
    types: [published]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm install

      - name: Build
        run: npm run build

      - name: Run MCP Server Tests
        env:
          MCP_SERVER_ARGS: ${{ secrets.MCP_SERVER_ARGS }}
          OAUTH_CLIENT_ID: ${{ secrets.OAUTH_CLIENT_ID }}
          OAUTH_CLIENT_SECRET: ${{ secrets.OAUTH_CLIENT_SECRET }}
          OAUTH_TOKEN: ${{ secrets.OAUTH_TOKEN }}
          OAUTH_REFRESH_TOKEN: ${{ secrets.OAUTH_REFRESH_TOKEN }}
        run: npm test

故障排除

连接失败

如果连接失败:

  1. 验证MCP服务器是否正在运行
  2. 检查OAuth凭据是否有效
  3. 确保服务器路径在(指定/正确设置) MCP_SERVER_ARGS 是正确的
  4. 检查服务器日志中的认证错误

响应验证失败

如果响应验证失败:

  1. 手动在您的服务器上测试该提示
  2. 验证响应格式
  3. 调整 MIN_RESPONSE_LINES 如需需要
  4. 检查提示是否格式正确

超时问题

如果测试超时:

  1. 增加 TEST_TIMEOUT 价值
  2. 检查服务器是否响应缓慢
  3. 验证网络连接

发展

项目结构

mcptest/
├── src/
│   └── test-mcp-server.ts    # Main test implementation
├── dist/                      # Compiled JavaScript (generated)
├── package.json              # Dependencies and scripts
├── tsconfig.json             # TypeScript configuration
├── .env.example              # Environment template
└── README.md                 # This file

在开发模式下运行

npm run build && npm test

许可证

麻省理工学院

贡献;做出贡献

欢迎提出问题和拉取请求!