使用说明
MCP服务器测试套件
针对采用OAuth认证的MCP(模型上下文协议)服务器的自动化测试套件。此工具在每次发布后验证服务器的连接性和响应质量。
特点/功能
- 连接测试验证MCP服务器连接并使用OAuth进行身份验证
- 响应验证确保回复符合质量标准(最低行数要求)
- 发布验证非常适合用于CI/CD流水线测试服务器发布
- 详细报告明确的通过/失败状态,附带全面的日志记录
先决条件
- Node.js 18及以上版本
- TypeScript
- 一个支持OAuth认证的MCP服务器
- OAuth凭据(客户端ID、密钥、令牌)
安装
- 克隆此仓库:
git clone <repository-url>
cd mcptest
- 安装依赖项:
npm install
- 配置您的环境:
cp .env.example .env
- 编辑
.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
该测试将:
- 使用OAuth连接到您的MCP服务器
- 发送已配置的测试提示(默认:“显示账户状态”)
- 验证响应至少包含10行内容
- 报告详细结果
退出代码
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
故障排除
连接失败
如果连接失败:
- 验证MCP服务器是否正在运行
- 检查OAuth凭据是否有效
- 确保服务器路径在(指定/正确设置)
MCP_SERVER_ARGS是正确的 - 检查服务器日志中的认证错误
响应验证失败
如果响应验证失败:
- 手动在您的服务器上测试该提示
- 验证响应格式
- 调整
MIN_RESPONSE_LINES如需需要 - 检查提示是否格式正确
超时问题
如果测试超时:
- 增加
TEST_TIMEOUT价值 - 检查服务器是否响应缓慢
- 验证网络连接
发展
项目结构
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
许可证
麻省理工学院
贡献;做出贡献
欢迎提出问题和拉取请求!