mcp-inspector-testing.md•6.16 kB
# MCP Inspector Manual Testing Checklist
This document provides a checklist for manually testing the MCP Debug Tool with MCP Inspector.
## Prerequisites
1. Install MCP Inspector:
```bash
npm install -g @modelcontextprotocol/inspector
```
2. Start the MCP Debug Tool server:
```bash
cd /path/to/Debug-MCP
uv run python -m mcp_debug_tool.server_v2 --workspace .
```
## Testing Checklist
### 1. Server Connection
- [ ] MCP Inspector successfully connects to the server
- [ ] Server name displays as "python-debug"
- [ ] No connection errors in console
### 2. Tool Discovery (list_tools)
- [ ] Inspector lists all 5 tools:
- [ ] `sessions_create`
- [ ] `sessions_breakpoint`
- [ ] `sessions_continue`
- [ ] `sessions_state`
- [ ] `sessions_end`
- [ ] Each tool has a description
- [ ] Each tool has an input schema with required fields
### 3. Tool: sessions_create
**Test Case 1: Valid Session Creation**
- [ ] Input: `{"entry": "tests/integration/samples/buggy_script.py"}`
- [ ] Expected: Response with `sessionId` (UUID format)
- [ ] Actual Result: ________________
**Test Case 2: Invalid File Path**
- [ ] Input: `{"entry": "nonexistent.py"}`
- [ ] Expected: Error response with type `FileNotFoundError`
- [ ] Actual Result: ________________
**Test Case 3: With Arguments**
- [ ] Input: `{"entry": "tests/integration/samples/buggy_script.py", "args": ["arg1", "arg2"]}`
- [ ] Expected: Response with `sessionId`
- [ ] Actual Result: ________________
**Test Case 4: With Environment Variables**
- [ ] Input: `{"entry": "tests/integration/samples/buggy_script.py", "env": {"TEST_VAR": "value"}}`
- [ ] Expected: Response with `sessionId`
- [ ] Actual Result: ________________
### 4. Tool: sessions_state
**Test Case 1: Valid Session**
- [ ] Prerequisites: Create a session first
- [ ] Input: `{"sessionId": "<session-id-from-create>"}`
- [ ] Expected: Response with `status` field (idle/running/paused/completed/error)
- [ ] Actual Result: ________________
**Test Case 2: Invalid Session**
- [ ] Input: `{"sessionId": "invalid-id-12345"}`
- [ ] Expected: Error response with type `SessionNotFound`
- [ ] Actual Result: ________________
### 5. Tool: sessions_breakpoint
**Test Case 1: Run to Breakpoint**
- [ ] Prerequisites: Create a session first
- [ ] Input: `{"sessionId": "<session-id>", "file": "tests/integration/samples/buggy_script.py", "line": 10}`
- [ ] Expected: Response with:
- [ ] `hit: true`
- [ ] `frameInfo` object with file and line
- [ ] `locals` object with variables
- [ ] Actual Result: ________________
**Test Case 2: Invalid Session**
- [ ] Input: `{"sessionId": "invalid-id", "file": "test.py", "line": 10}`
- [ ] Expected: Error response
- [ ] Actual Result: ________________
**Test Case 3: Invalid File**
- [ ] Prerequisites: Create a session first
- [ ] Input: `{"sessionId": "<session-id>", "file": "nonexistent.py", "line": 10}`
- [ ] Expected: Error response
- [ ] Actual Result: ________________
### 6. Tool: sessions_continue
**Test Case 1: Continue to Next Breakpoint**
- [ ] Prerequisites: Create session and hit first breakpoint
- [ ] Input: `{"sessionId": "<session-id>", "file": "tests/integration/samples/buggy_script.py", "line": 15}`
- [ ] Expected: Response with `hit: true` and new locals
- [ ] Actual Result: ________________
**Test Case 2: Continue Without Prior Breakpoint**
- [ ] Prerequisites: Create fresh session (no breakpoint hit yet)
- [ ] Input: `{"sessionId": "<session-id>", "file": "test.py", "line": 10}`
- [ ] Expected: Error response (invalid state)
- [ ] Actual Result: ________________
### 7. Tool: sessions_end
**Test Case 1: End Active Session**
- [ ] Prerequisites: Create a session
- [ ] Input: `{"sessionId": "<session-id>"}`
- [ ] Expected: Response with `ended: true`
- [ ] Actual Result: ________________
**Test Case 2: End Non-Existent Session**
- [ ] Input: `{"sessionId": "invalid-id"}`
- [ ] Expected: Error response
- [ ] Actual Result: ________________
### 8. Complete Workflow Test
**Scenario: Full Debug Session**
1. [ ] Create session
2. [ ] Verify session state is "idle"
3. [ ] Run to first breakpoint (line 10)
4. [ ] Verify session state is "paused"
5. [ ] Inspect local variables
6. [ ] Continue to second breakpoint (line 15)
7. [ ] Verify session state is "paused"
8. [ ] Inspect updated local variables
9. [ ] End session
10. [ ] Verify session no longer exists (state query fails)
### 9. Error Handling
- [ ] Missing required field returns validation error
- [ ] Invalid JSON returns parse error
- [ ] Timeout scenarios handled gracefully
- [ ] Error messages are clear and actionable
### 10. Performance
- [ ] Tool responses return within 2 seconds (normal cases)
- [ ] Concurrent requests handled correctly
- [ ] No memory leaks after multiple sessions
- [ ] Server remains responsive under load
### 11. Input Schema Validation
For each tool, verify schema in Inspector:
- [ ] Required fields marked correctly
- [ ] Field types match documentation
- [ ] Descriptions are clear
- [ ] Examples provided where helpful
## Test Results Summary
**Date:** ________________
**Tester:** ________________
**MCP Inspector Version:** ________________
**Server Version:** 0.2.0 (SDK-based)
**Overall Result:** [ ] PASS / [ ] FAIL
**Issues Found:**
1. ________________
2. ________________
3. ________________
**Notes:**
________________
________________
________________
## Cleanup
After testing:
```bash
# Stop the server (Ctrl+C)
# Clean up any test files or sessions if needed
```
## Troubleshooting
### Server won't start
- Check that workspace path exists
- Verify Python dependencies installed: `uv pip install -e ".[dev]"`
- Check for port conflicts
### Inspector can't connect
- Verify server is running and listening on stdio
- Check server logs for errors
- Try restarting both server and inspector
### Tools not appearing
- Verify server initialized correctly
- Check that `list_tools` handler registered
- Look for registration errors in logs
### Unexpected errors
- Check server logs (stderr)
- Verify input matches schema exactly
- Test with simpler inputs first
- Check workspace permissions