Skip to main content
Node

System Requirements

Before starting, ensure your system meets these requirements:
  • Mac or Windows computer
  • Node.js version 16 or higher installed
  • npm (comes with Node.js)

Setting Up Your Environment

First, create a new Node.js project:
Update your package.json to add necessary configuration:
Update your tsconfig.json with appropriate settings:

Setting Up Your API Key

You’ll need an Anthropic API key from the Anthropic Console.Create a .env file:
Add .env to your .gitignore:

Creating the Client

First, let’s set up our imports and create the basic client class in src/client.ts:

Server Connection Management

Next, implement the method to connect to an MCP server:

Query Processing Logic

Now add the core functionality for processing queries and handling tool calls:

Interactive Chat Interface

Add the chat loop and cleanup functionality:

Main Entry Point

Finally, add the main execution logic outside the class:

Running the Client

To run your client with any MCP server:
The client will:
  1. Connect to the specified server
  2. List available tools
  3. Start an interactive chat session where you can:
    • Enter queries
    • See tool executions
    • Get responses from Claude

Key Components Explained

1. Client Initialization

  • The MCPClient class initializes with session management and API clients
  • Sets up the MCP client with basic capabilities
  • 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
  • Lists available tools on connection

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

  1. Tool Handling
    • Modify processQuery() to handle specific tool types
    • Add custom error handling for tool calls
    • Implement tool-specific response formatting
  2. Response Processing
    • Customize how tool results are formatted
    • Add response filtering or transformation
    • Implement custom logging
  3. User Interface
    • Add a GUI or web interface
    • Implement rich console output
    • Add command history or auto-completion

Best Practices

  1. Error Handling
    • Always wrap tool calls in try-catch blocks
    • Provide meaningful error messages
    • Gracefully handle connection issues
  2. Resource Management
    • Use proper cleanup methods
    • Close connections when done
    • Handle server disconnections
  3. Security
    • Store API keys securely in .env
    • Validate server responses
    • Be cautious with tool permissions

Troubleshooting

Server Path Issues

  • Double-check the path to your server script
  • Use absolute paths if relative paths aren’t working
  • For Windows users, use forward slashes (/) or escaped backslashes (\)
  • Verify the server file has the correct extension (.py or .js)
Example of correct path usage:

Connection Issues

  • Verify the server script exists and has correct permissions
  • Check that the server script is executable
  • Ensure the server script’s dependencies are installed
  • Try running the server script directly to check for errors

Tool Execution Issues

  • Check server logs for error messages
  • Verify tool input arguments match the schema
  • Ensure tool dependencies are available
  • Add debug logging to track execution flow