mcp-testing
MCP testing guidance and patterns. Loaded by /ops/test/mcp command or subagents for comprehensive Navigator MCP server testing.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Navigator MCP Testing
Automated tests for Navigator MCP server via JSON-RPC protocol.
Quick Start
# Start server
bun run dev
# Run tests
./.claude/scripts/run-mcp-tests.sh schema-validation
./.claude/scripts/run-mcp-tests.sh --all
Structure
.claude/
├── commands/ops/test/mcp.md # Command definition
├── scripts/run-mcp-tests.sh # Test runner (all logic here)
├── scripts/lib/test-runner-lib.sh # Shared test library
└── skills/mcp-testing/SKILL.md # This file
Test Categories
| Category | Tests | What It Validates |
|---|---|---|
schema-validation |
7 | Zod schema validation, missing/invalid params |
action-routing |
7 | Action dispatch for all action types |
error-responses |
4 | Error codes and structured error handling |
response-formatting |
4 | MCP content structure (text/image types) |
Output
.scratch/testing/
├── 20260116-abc12-mcp-schema-validation.md # Results table
├── 20260116-abc12-mcp-schema-validation-debug.log # Debug output
└── ...
Adding Tests
Edit .claude/scripts/run-mcp-tests.sh:
# Add a test to existing category
run_mcp_test 8 "New test name" '{"action":"snap"}' "expected_pattern" "false" # false = expect success
# Add new category
run_new_category() {
setup_category "new-category"
log "Running new-category tests..."
# Setup: navigate to test page
mcp_call '{"action":"navigate","url":"https://example.com"}' >/dev/null 2>&1
run_mcp_test 1 "Test name" '{"action":"..."}' "pattern" "false"
# ... more tests
finalize_category
}
Then add to main():
new-category) test_new_category || exit_code=1 ;;
Key Differences from CLI Tests
| Aspect | CLI | MCP |
|---|---|---|
| Protocol | HTTP to server | JSON-RPC over stdio |
| Input | Shell arguments | JSON objects |
| Output | JSON stdout | MCP content array |
| Error detection | Exit code + stderr | isError flag |
Exit Codes
-
0- All passed -
1- Failures -
2- Setup error (server not running, jq missing)
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!