160 lines
4.7 KiB
Markdown
160 lines
4.7 KiB
Markdown
# Complete MCP Client Examples
|
|
|
|
This directory contains complete, working examples of MCP clients in different programming languages. Each client demonstrates the full functionality described in the main README.md tutorial.
|
|
|
|
## Available Clients
|
|
|
|
### 1. Java Client (`client_example_java.java`)
|
|
|
|
- **Transport**: SSE (Server-Sent Events) over HTTP
|
|
- **Target Server**: `http://localhost:8080`
|
|
- **Features**:
|
|
- Connection establishment and ping
|
|
- Tool listing
|
|
- Calculator operations (add, subtract, multiply, divide, help)
|
|
- Error handling and result extraction
|
|
|
|
**To run:**
|
|
|
|
```bash
|
|
# Ensure your MCP server is running on localhost:8080
|
|
javac client_example_java.java
|
|
java client_example_java
|
|
```
|
|
|
|
### 2. C# Client (`client_example_csharp.cs`)
|
|
|
|
- **Transport**: Stdio (Standard Input/Output)
|
|
- **Target Server**: Local .NET MCP server via dotnet run
|
|
- **Features**:
|
|
- Automatic server startup via stdio transport
|
|
- Tool and resource listing
|
|
- Calculator operations
|
|
- JSON result parsing
|
|
- Comprehensive error handling
|
|
|
|
**To run:**
|
|
|
|
```bash
|
|
dotnet run
|
|
```
|
|
|
|
### 3. TypeScript Client (`client_example_typescript.ts`)
|
|
|
|
- **Transport**: Stdio (Standard Input/Output)
|
|
- **Target Server**: Local Node.js MCP server
|
|
- **Features**:
|
|
- Full MCP protocol support
|
|
- Tool, resource, and prompt operations
|
|
- Calculator operations
|
|
- Resource reading and prompt execution
|
|
- Robust error handling
|
|
|
|
**To run:**
|
|
|
|
```bash
|
|
# First compile TypeScript (if needed)
|
|
npm run build
|
|
|
|
# Then run the client
|
|
npm run client
|
|
# or
|
|
node client_example_typescript.js
|
|
```
|
|
|
|
### 4. Python Client (`client_example_python.py`)
|
|
|
|
- **Transport**: Stdio (Standard Input/Output)
|
|
- **Target Server**: Local Python MCP server
|
|
- **Features**:
|
|
- Async/await pattern for operations
|
|
- Tool and resource discovery
|
|
- Calculator operations testing
|
|
- Resource content reading
|
|
- Class-based organization
|
|
|
|
**To run:**
|
|
|
|
```bash
|
|
python client_example_python.py
|
|
```
|
|
|
|
## Common Features Across All Clients
|
|
|
|
Each client implementation demonstrates:
|
|
|
|
1. **Connection Management**
|
|
- Establishing connection to MCP server
|
|
- Handling connection errors
|
|
- Proper cleanup and resource management
|
|
|
|
2. **Server Discovery**
|
|
- Listing available tools
|
|
- Listing available resources (where supported)
|
|
- Listing available prompts (where supported)
|
|
|
|
3. **Tool Invocation**
|
|
- Basic calculator operations (add, subtract, multiply, divide)
|
|
- Help command for server information
|
|
- Proper argument passing and result handling
|
|
|
|
4. **Error Handling**
|
|
- Connection errors
|
|
- Tool execution errors
|
|
- Graceful failure and user feedback
|
|
|
|
5. **Result Processing**
|
|
- Extracting text content from responses
|
|
- Formatting output for readability
|
|
- Handling different response formats
|
|
|
|
## Prerequisites
|
|
|
|
Before running these clients, ensure you have:
|
|
|
|
1. **The corresponding MCP server running** (from `../01-first-server/`)
|
|
2. **Required dependencies installed** for your chosen language
|
|
3. **Proper network connectivity** (for HTTP-based transports)
|
|
|
|
## Key Differences Between Implementations
|
|
|
|
| Language | Transport | Server Startup | Async Model | Key Libraries |
|
|
|------------|-----------|----------------|-------------|---------------------|
|
|
| Java | SSE/HTTP | External | Sync | WebFlux, MCP SDK |
|
|
| C# | Stdio | Automatic | Async/Await | .NET MCP SDK |
|
|
| TypeScript | Stdio | Automatic | Async/Await | Node MCP SDK |
|
|
| Python | Stdio | Automatic | AsyncIO | Python MCP SDK |
|
|
| Rust | Stdio | Automatic | Async/Await | Rust MCP SDK, Tokio |
|
|
|
|
## Next Steps
|
|
|
|
After exploring these client examples:
|
|
|
|
1. **Modify the clients** to add new features or operations
|
|
2. **Create your own server** and test it with these clients
|
|
3. **Experiment with different transports** (SSE vs. Stdio)
|
|
4. **Build a more complex application** that integrates MCP functionality
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
1. **Connection refused**: Ensure the MCP server is running on the expected port/path
|
|
2. **Module not found**: Install the required MCP SDK for your language
|
|
3. **Permission denied**: Check file permissions for stdio transport
|
|
4. **Tool not found**: Verify the server implements the expected tools
|
|
|
|
### Debug Tips
|
|
|
|
1. **Enable verbose logging** in your MCP SDK
|
|
2. **Check server logs** for error messages
|
|
3. **Verify tool names and signatures** match between client and server
|
|
4. **Test with MCP Inspector** first to validate server functionality
|
|
|
|
## Related Documentation
|
|
|
|
- [Main Client Tutorial](./README.md)
|
|
- [MCP Server Examples](../01-first-server/)
|
|
- [MCP with LLM Integration](../03-llm-client/)
|
|
- [Official MCP Documentation](https://modelcontextprotocol.io/)
|