Merge pull request #16 from modelcontextprotocol/justin/fixes-2
Update "Development Tools"
This commit is contained in:
commit
0854b8e900
2 changed files with 79 additions and 176 deletions
|
|
@ -1,10 +1,14 @@
|
||||||
---
|
---
|
||||||
title: Debugging MCP servers
|
title: Debugging
|
||||||
description: A comprehensive guide to debugging Model Context Protocol (MCP) servers and integrations
|
description: A comprehensive guide to debugging Model Context Protocol (MCP) integrations
|
||||||
---
|
---
|
||||||
|
|
||||||
Effective debugging is essential when developing MCP servers or integrating them with applications. This guide covers the debugging tools and approaches available in the MCP ecosystem.
|
Effective debugging is essential when developing MCP servers or integrating them with applications. This guide covers the debugging tools and approaches available in the MCP ecosystem.
|
||||||
|
|
||||||
|
<Info>
|
||||||
|
This guide is for macOS. Guides for other platforms are coming soon.
|
||||||
|
</Info>
|
||||||
|
|
||||||
## Debugging tools overview
|
## Debugging tools overview
|
||||||
|
|
||||||
MCP provides several tools for debugging at different levels:
|
MCP provides several tools for debugging at different levels:
|
||||||
|
|
@ -12,9 +16,9 @@ MCP provides several tools for debugging at different levels:
|
||||||
1. **MCP Inspector**
|
1. **MCP Inspector**
|
||||||
- Interactive debugging interface
|
- Interactive debugging interface
|
||||||
- Direct server testing
|
- Direct server testing
|
||||||
- See the [Inspector Guide](docs/tools/inspector) for details
|
- See the [Inspector guide](/docs/tools/inspector) for details
|
||||||
|
|
||||||
2. **Claude.app Developer Tools**
|
2. **Claude Desktop Developer Tools**
|
||||||
- Integration testing
|
- Integration testing
|
||||||
- Log collection
|
- Log collection
|
||||||
- Chrome DevTools integration
|
- Chrome DevTools integration
|
||||||
|
|
@ -24,7 +28,7 @@ MCP provides several tools for debugging at different levels:
|
||||||
- Error tracking
|
- Error tracking
|
||||||
- Performance monitoring
|
- Performance monitoring
|
||||||
|
|
||||||
## Debugging in Claude.app
|
## Debugging in Claude Desktop
|
||||||
|
|
||||||
### Checking server status
|
### Checking server status
|
||||||
|
|
||||||
|
|
@ -32,20 +36,18 @@ The Claude.app interface provides basic server status information:
|
||||||
|
|
||||||
1. Click the 🔌 icon to view:
|
1. Click the 🔌 icon to view:
|
||||||
- Connected servers
|
- Connected servers
|
||||||
- Available prompts
|
- Available prompts and resources
|
||||||
- Accessible resources
|
|
||||||
- Supported tools
|
|
||||||
|
|
||||||
### Enabling logging
|
2. Click the 🔨 icon to view:
|
||||||
|
- Tools made available to the model
|
||||||
|
|
||||||
Get detailed logs from Claude.app:
|
### Viewing logs
|
||||||
|
|
||||||
|
Review detailed MCP logs from Claude Desktop:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Launch with logging enabled
|
|
||||||
open /Applications/Claude.app --stdout ~/Claude.log --stderr ~/Claude.log
|
|
||||||
|
|
||||||
# Follow logs in real-time
|
# Follow logs in real-time
|
||||||
tail -n 100 -f ~/Claude.log
|
tail -n 20 -f ~/Logs/Claude/mcp*.log
|
||||||
```
|
```
|
||||||
|
|
||||||
The logs capture:
|
The logs capture:
|
||||||
|
|
@ -56,7 +58,7 @@ The logs capture:
|
||||||
|
|
||||||
### Using Chrome DevTools
|
### Using Chrome DevTools
|
||||||
|
|
||||||
Access Chrome's developer tools for deeper inspection:
|
Access Chrome's developer tools inside Claude Desktop to investigate client-side errors:
|
||||||
|
|
||||||
1. Enable DevTools:
|
1. Enable DevTools:
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -70,9 +72,9 @@ Note: You'll see two DevTools windows:
|
||||||
- Main content window
|
- Main content window
|
||||||
- App title bar window
|
- App title bar window
|
||||||
|
|
||||||
|
Use the Console panel to inspect client-side errors.
|
||||||
|
|
||||||
Use the Network panel to inspect:
|
Use the Network panel to inspect:
|
||||||
- WebSocket connections
|
|
||||||
- Server-sent events
|
|
||||||
- Message payloads
|
- Message payloads
|
||||||
- Connection timing
|
- Connection timing
|
||||||
|
|
||||||
|
|
@ -80,15 +82,16 @@ Use the Network panel to inspect:
|
||||||
|
|
||||||
### Environment variables
|
### Environment variables
|
||||||
|
|
||||||
MCP servers don't inherit environment variables automatically. Configure them in `claude_desktop_config.json`:
|
MCP servers inherit only a subset of environment variables automatically, like `USER`, `HOME`, and `PATH`.
|
||||||
|
|
||||||
|
To override the default variables or provide your own, you can specify an `env` key in `claude_desktop_config.json`:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"myserver": {
|
"myserver": {
|
||||||
"command": "mcp-server-myapp",
|
"command": "mcp-server-myapp",
|
||||||
"env": {
|
"env": {
|
||||||
"HOME": "/Users/username",
|
"MYAPP_API_KEY": "some_key",
|
||||||
"PATH": "/usr/local/bin:/usr/bin:/bin"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -117,23 +120,41 @@ Common initialization problems:
|
||||||
|
|
||||||
When servers fail to connect:
|
When servers fail to connect:
|
||||||
|
|
||||||
1. Check Claude.app logs
|
1. Check Claude Desktop logs
|
||||||
2. Verify server process is running
|
2. Verify server process is running
|
||||||
3. Test standalone with Inspector
|
3. Test standalone with [Inspector](/docs/tools/inspector)
|
||||||
4. Check network connectivity
|
4. Verify protocol compatibility
|
||||||
5. Verify protocol compatibility
|
|
||||||
|
|
||||||
## Implementing logging
|
## Implementing logging
|
||||||
|
|
||||||
### Server-side logging
|
### Server-side logging
|
||||||
|
|
||||||
Implement custom logging in your server:
|
When building a server that uses the local stdio [transport](/docs/concepts/transports), all messages logged to stderr (standard error) will be captured by the client (e.g., Claude Desktop) automatically.
|
||||||
|
|
||||||
```typescript
|
<Warning>
|
||||||
server.setNotificationHandler(LoggingMessageNotificationSchema, (notification) => {
|
Local MCP servers should not log messages to stdout (standard out), as this will interfere with protocol operation.
|
||||||
console.log(`[${notification.params.level}] ${notification.params.data}`);
|
</Warning>
|
||||||
});
|
|
||||||
```
|
For all [transports](/docs/concepts/transports), you can also provide logging to the client by sending a log message notification:
|
||||||
|
|
||||||
|
<Tabs>
|
||||||
|
<Tab title="Python">
|
||||||
|
```python
|
||||||
|
server.request_context.session.send_log_message(
|
||||||
|
level="info",
|
||||||
|
data="Server started successfully",
|
||||||
|
)
|
||||||
|
```
|
||||||
|
</Tab>
|
||||||
|
<Tab title="TypeScript">
|
||||||
|
```typescript
|
||||||
|
server.sendLoggingMessage({
|
||||||
|
level: "info",
|
||||||
|
data: "Server started successfully",
|
||||||
|
});
|
||||||
|
```
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
Important events to log:
|
Important events to log:
|
||||||
- Initialization steps
|
- Initialization steps
|
||||||
|
|
@ -156,27 +177,22 @@ In client applications:
|
||||||
### Development cycle
|
### Development cycle
|
||||||
|
|
||||||
1. Initial Development
|
1. Initial Development
|
||||||
- Use Inspector for basic testing
|
- Use [Inspector](/docs/tools/inspector) for basic testing
|
||||||
- Implement core functionality
|
- Implement core functionality
|
||||||
- Add logging points
|
- Add logging points
|
||||||
|
|
||||||
2. Integration Testing
|
2. Integration Testing
|
||||||
- Test in Claude.app
|
- Test in Claude Desktop
|
||||||
- Monitor logs
|
- Monitor logs
|
||||||
- Check error handling
|
- Check error handling
|
||||||
|
|
||||||
3. Production Deployment
|
|
||||||
- Verify logging
|
|
||||||
- Monitor performance
|
|
||||||
- Track errors
|
|
||||||
|
|
||||||
### Testing changes
|
### Testing changes
|
||||||
|
|
||||||
To test changes efficiently:
|
To test changes efficiently:
|
||||||
|
|
||||||
- **Configuration changes**: Restart Claude.app
|
- **Configuration changes**: Restart Claude Desktop
|
||||||
- **Server code changes**: Use Command-R to reload
|
- **Server code changes**: Use Command-R to reload
|
||||||
- **Quick iteration**: Use Inspector during development
|
- **Quick iteration**: Use [Inspector](/docs/tools/inspector) during development
|
||||||
|
|
||||||
## Best practices
|
## Best practices
|
||||||
|
|
||||||
|
|
@ -220,14 +236,13 @@ When encountering issues:
|
||||||
|
|
||||||
1. **First Steps**
|
1. **First Steps**
|
||||||
- Check server logs
|
- Check server logs
|
||||||
- Test with Inspector
|
- Test with [Inspector](/docs/tools/inspector)
|
||||||
- Review configuration
|
- Review configuration
|
||||||
- Verify environment
|
- Verify environment
|
||||||
|
|
||||||
2. **Support Channels**
|
2. **Support Channels**
|
||||||
- #mcp-sig channel
|
|
||||||
- GitHub issues
|
- GitHub issues
|
||||||
- MCP Asana project
|
- GitHub discussions
|
||||||
|
|
||||||
3. **Providing Information**
|
3. **Providing Information**
|
||||||
- Log excerpts
|
- Log excerpts
|
||||||
|
|
@ -239,4 +254,4 @@ When encountering issues:
|
||||||
|
|
||||||
- Learn to use the [MCP Inspector](/docs/tools/inspector)
|
- Learn to use the [MCP Inspector](/docs/tools/inspector)
|
||||||
- Review [Protocol Overview](/api-reference/protocol-overview)
|
- Review [Protocol Overview](/api-reference/protocol-overview)
|
||||||
- Study [Error Handling](/api-reference/error-handling)
|
- Study [Error Handling](/api-reference/error-handling)
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
---
|
---
|
||||||
title: MCP Inspector
|
title: Inspector
|
||||||
description: In-depth guide to using the MCP Inspector for testing and debugging Model Context Protocol servers
|
description: In-depth guide to using the MCP Inspector for testing and debugging Model Context Protocol servers
|
||||||
---
|
---
|
||||||
|
|
||||||
The [MCP Inspector](https://github.com/modelcontextprotocol/inspector) is an interactive developer tool for testing and debugging MCP servers. While the [Debugging Guide](docs/tools/debugging) covers the Inspector as part of the overall debugging toolkit, this document provides a detailed exploration of the Inspector's features and capabilities.
|
The [MCP Inspector](https://github.com/modelcontextprotocol/inspector) is an interactive developer tool for testing and debugging MCP servers. While the [Debugging Guide](/docs/tools/debugging) covers the Inspector as part of the overall debugging toolkit, this document provides a detailed exploration of the Inspector's features and capabilities.
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
|
|
@ -20,111 +20,35 @@ Pass arguments to your server after the path:
|
||||||
npx @modelcontextprotocol/inspector path/to/server.js arg1 arg2
|
npx @modelcontextprotocol/inspector path/to/server.js arg1 arg2
|
||||||
```
|
```
|
||||||
|
|
||||||
## Interface overview
|
## Feature overview
|
||||||
|
|
||||||
The Inspector provides several key panels for interacting with your MCP server:
|
The Inspector provides several features for interacting with your MCP server:
|
||||||
|
|
||||||
### Server info panel
|
### Server connection pane
|
||||||
- Displays server name and version
|
- Allows selecting the [transport](/docs/concepts/transports) for connecting to the server
|
||||||
- Shows negotiated protocol version
|
- For local servers, supports customizing the command-line arguments and environment
|
||||||
- Lists supported capabilities
|
|
||||||
- Indicates connection status
|
|
||||||
|
|
||||||
### Resources browser
|
### Resources tab
|
||||||
- Lists all available resources
|
- Lists all available resources
|
||||||
- Shows resource metadata (MIME types, descriptions)
|
- Shows resource metadata (MIME types, descriptions)
|
||||||
- Allows resource content inspection
|
- Allows resource content inspection
|
||||||
- Supports subscription testing
|
- Supports subscription testing
|
||||||
|
|
||||||
### Prompts panel
|
### Prompts tab
|
||||||
- Displays available prompt templates
|
- Displays available prompt templates
|
||||||
- Shows prompt arguments and descriptions
|
- Shows prompt arguments and descriptions
|
||||||
- Enables prompt testing with custom arguments
|
- Enables prompt testing with custom arguments
|
||||||
- Previews generated messages
|
- Previews generated messages
|
||||||
|
|
||||||
### Tools panel
|
### Tools tab
|
||||||
- Lists available tools
|
- Lists available tools
|
||||||
- Shows tool schemas and descriptions
|
- Shows tool schemas and descriptions
|
||||||
- Provides input validation
|
- Enables tool testing with custom inputs
|
||||||
- Displays tool execution results
|
- Displays tool execution results
|
||||||
|
|
||||||
## Testing features
|
### Notifications pane
|
||||||
|
- Presents all logs recorded from the server
|
||||||
### Resource testing
|
- Shows notifications received from the server
|
||||||
```typescript
|
|
||||||
// Example resource URI to test
|
|
||||||
resource://myapp/data/123
|
|
||||||
```
|
|
||||||
|
|
||||||
1. View resource metadata
|
|
||||||
2. Inspect content representations
|
|
||||||
3. Test subscription updates
|
|
||||||
4. Monitor resource changes
|
|
||||||
|
|
||||||
### Prompt testing
|
|
||||||
|
|
||||||
Test prompts with different arguments:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"temperature": 0.7,
|
|
||||||
"style": "concise"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Validate argument constraints
|
|
||||||
2. Preview generated messages
|
|
||||||
3. Test error conditions
|
|
||||||
4. Check template rendering
|
|
||||||
|
|
||||||
### Tool testing
|
|
||||||
|
|
||||||
Test tool execution with various inputs:
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"query": "SELECT * FROM users",
|
|
||||||
"limit": 10
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
1. Validate input schemas
|
|
||||||
2. Test error handling
|
|
||||||
3. Monitor execution progress
|
|
||||||
4. Inspect tool results
|
|
||||||
|
|
||||||
## Advanced usage
|
|
||||||
|
|
||||||
### Message inspector
|
|
||||||
|
|
||||||
The Message inspector panel shows all communication between the client and server:
|
|
||||||
|
|
||||||
1. Request/response pairs
|
|
||||||
2. Notifications
|
|
||||||
3. Progress updates
|
|
||||||
4. Error messages
|
|
||||||
|
|
||||||
This helps debug:
|
|
||||||
- Protocol conformance
|
|
||||||
- Message formatting
|
|
||||||
- Error conditions
|
|
||||||
- State transitions
|
|
||||||
|
|
||||||
### Subscription testing
|
|
||||||
|
|
||||||
Test resource subscriptions:
|
|
||||||
|
|
||||||
1. Subscribe to resources
|
|
||||||
2. Monitor update notifications
|
|
||||||
3. Test unsubscribe behavior
|
|
||||||
4. Verify update patterns
|
|
||||||
|
|
||||||
### Capability testing
|
|
||||||
|
|
||||||
Verify server capabilities:
|
|
||||||
|
|
||||||
1. Check supported features
|
|
||||||
2. Test capability negotiation
|
|
||||||
3. Verify feature availability
|
|
||||||
4. Monitor initialization flow
|
|
||||||
|
|
||||||
## Best practices
|
## Best practices
|
||||||
|
|
||||||
|
|
@ -137,52 +61,16 @@ Verify server capabilities:
|
||||||
|
|
||||||
2. Iterative testing
|
2. Iterative testing
|
||||||
- Make server changes
|
- Make server changes
|
||||||
- Restart Inspector
|
- Rebuild the server
|
||||||
|
- Reconnect the Inspector
|
||||||
- Test affected features
|
- Test affected features
|
||||||
- Monitor messages
|
- Monitor messages
|
||||||
|
|
||||||
3. Error testing
|
3. Test edge cases
|
||||||
- Test invalid inputs
|
- Invalid inputs
|
||||||
- Check error responses
|
|
||||||
- Verify error handling
|
|
||||||
- Test recovery flows
|
|
||||||
|
|
||||||
### Tips and tricks
|
|
||||||
|
|
||||||
1. Keep Inspector Running
|
|
||||||
- Monitor changes in real-time
|
|
||||||
- Quick iteration cycle
|
|
||||||
- Immediate feedback
|
|
||||||
|
|
||||||
2. Use Message Filtering
|
|
||||||
- Filter by message type
|
|
||||||
- Focus on specific features
|
|
||||||
- Debug targeted behaviors
|
|
||||||
|
|
||||||
3. Test Edge Cases
|
|
||||||
- Invalid resource URIs
|
|
||||||
- Malformed tool inputs
|
|
||||||
- Missing prompt arguments
|
- Missing prompt arguments
|
||||||
- Concurrent operations
|
- Concurrent operations
|
||||||
|
- Verify error handling and error responses
|
||||||
## Common patterns
|
|
||||||
|
|
||||||
### Development loop
|
|
||||||
|
|
||||||
1. Start server development
|
|
||||||
2. Launch Inspector
|
|
||||||
3. Implement feature
|
|
||||||
4. Test in Inspector
|
|
||||||
5. Refine implementation
|
|
||||||
6. Repeat
|
|
||||||
|
|
||||||
### Integration testing
|
|
||||||
|
|
||||||
1. Test basic functionality
|
|
||||||
2. Verify error handling
|
|
||||||
3. Check performance
|
|
||||||
4. Validate protocols
|
|
||||||
5. Test user flows
|
|
||||||
|
|
||||||
## Next steps
|
## Next steps
|
||||||
|
|
||||||
|
|
@ -218,4 +106,4 @@ Verify server capabilities:
|
||||||
>
|
>
|
||||||
Review message specifications
|
Review message specifications
|
||||||
</Card>
|
</Card>
|
||||||
</CardGroup>
|
</CardGroup>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue