- Python
- TypeScript
- Java
- Kotlin
- C#
You can find the complete code for this tutorial here.Add You can find the complete The client will:
System Requirements
Before starting, ensure your system meets these requirements:- Mac or Windows computer
- Latest Python version installed
- Latest version of
uvinstalled
Setting Up Your Environment
First, create a new Python project withuv:Setting Up Your API Key
You’ll need an Anthropic API key from the Anthropic Console.Create a.env file to store it:.env to your .gitignore:Creating the Client
Basic Client Structure
First, let’s set up our imports and create the basic client class:Server Connection Management
Next, we’ll implement the method to connect to an MCP server:Query Processing Logic
Now let’s add the core functionality for processing queries and handling tool calls:Interactive Chat Interface
Now we’ll add the chat loop and cleanup functionality:Main Entry Point
Finally, we’ll add the main execution logic:client.py file here.Key Components Explained
1. Client Initialization
- The
MCPClientclass initializes with session management and API clients - Uses
AsyncExitStackfor proper resource management - Configures the Anthropic client for Claude interactions
2. Server Connection
- Supports both Python and Node.js servers
- Validates server script type
- Sets up proper communication channels
- Initializes the session and lists available tools
3. Query Processing
- Maintains conversation context
- Handles Claude’s responses and tool calls
- Manages the message flow between Claude and tools
- Combines results into a coherent response
4. Interactive Interface
- Provides a simple command-line interface
- Handles user input and displays responses
- Includes basic error handling
- Allows graceful exit
5. Resource Management
- Proper cleanup of resources
- Error handling for connection issues
- Graceful shutdown procedures
Common Customization Points
-
Tool Handling
- Modify
process_query()to handle specific tool types - Add custom error handling for tool calls
- Implement tool-specific response formatting
- Modify
-
Response Processing
- Customize how tool results are formatted
- Add response filtering or transformation
- Implement custom logging
-
User Interface
- Add a GUI or web interface
- Implement rich console output
- Add command history or auto-completion
Running the Client
To run your client with any MCP server:If you’re continuing the weather tutorial from the server quickstart, your command might look something like this:
python client.py .../quickstart-resources/weather-server-python/weather.py- Connect to the specified server
- List available tools
- Start an interactive chat session where you can:
- Enter queries
- See tool executions
- Get responses from Claude