- Add test-engineer agent for bug reproduction and verification - Add /qc:bugfix command for structured bugfix workflow - Add e2e-testing skill covering headless/interactive modes, MCP testing - Add structured-debugging skill for hypothesis-driven debugging - Simplify AGENTS.md to focus on essential commands and conventions - Add terminal-capture scenario for bugfix workflow testing - Add .qwen folder to ESLint ignore list Known limitations: The /qc:bugfix workflow and e2e-testing skill are experimental and may be unstable or consume significant tokens. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2.1 KiB
MCP Server E2E Testing
How to set up and run end-to-end tests involving MCP tool servers.
Where MCP Config Goes
MCP servers are configured in .qwen/settings.json under mcpServers. This is
the only location that works for E2E testing.
Common mistakes that waste time:
.mcp.json— Claude Code convention, not Qwen Codesettings.local.json— the JSON schema validation rejectsmcpServershere--mcp-configCLI flag — does not exist
Setup
The CLI needs a git repo to load project settings. Create a temp directory:
mkdir -p /tmp/test-dir && cd /tmp/test-dir && git init -q
mkdir -p .qwen
cat > .qwen/settings.json << 'EOF'
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["/tmp/my-mcp-server.js"],
"trust": true
}
}
}
EOF
Run from that directory:
cd /tmp/test-dir && <qwen> "prompt" \
--approval-mode yolo --output-format json
Writing Test Servers
Use scripts/mcp-test-server.js as a template. It's a zero-dependency
JSON-RPC server over stdin/stdout — no npm install needed.
To create a server with custom tools, copy the template and edit the
TOOL_DEFINITIONS array and the handleToolCall function. Each tool definition
follows the MCP inputSchema format (standard JSON Schema).
Sanity-checking the server
Test the server without the CLI by piping JSON-RPC directly:
node /tmp/my-mcp-server.js << 'EOF'
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
EOF
Verifying the Server Loaded
Check the type: "system" init message in JSON output:
"mcp_servers": [{"name": "my-server", "status": "connected"}]
If mcp_servers is empty:
- You're not running from the directory containing
.qwen/settings.json - The directory is not a git repo (
git initmissing) - The server command/path is wrong (check stderr with
2>&1)