Command Palette

Search for a command to run...

GitHub
Blog
Next

Understanding MCP Clients

What Are MCP Clients? 🎯

Think of the Model Context Protocol (MCP) ecosystem like a restaurant:

  • Host: The restaurant (your AI application like Claude Desktop, Cursor, etc.)
  • Client: The waiter (handles communication between the restaurant and kitchen)
  • Server: The kitchen (provides specific capabilities/tools)

MCP Clients are crucial components that act as the bridge between AI applications (Hosts) and external capabilities provided by MCP Servers.

Let me show you this architecture:

Types of MCP Clients 📋

1. User Interface Clients

These are the apps you interact with directly:

Chat Interface Clients:

  • Claude Desktop: Anthropic's Claude Desktop stands as one of the most prominent MCP Clients, providing integration with various MCP Servers.

Development Clients:

  • Cursor: Cursor's MCP Client implementation enables AI-powered coding assistance through direct integration with code editing capabilities.
  • Continue.dev: Continue.dev is another example of an interactive development client that supports MCP and connects to an MCP server from VS Code.

2. Programmatic Clients

  • Tiny Agents: Code-based clients you can use in your own applications

Configuring MCP Clients - The Heart of Setup ⚙️

The magic happens in configuration files. MCP hosts use configuration files to manage server connections. These files define which servers are available and how to connect to them.

Basic Structure - mcp.json

Here's the fundamental structure:

{
  "servers": [
    {
      "name": "Server Name",
      "transport": {
        "type": "stdio|sse"
      }
    }
  ]
}

Transport Types Explained

Think of transport types as different ways to talk to servers:

1. STDIO (Standard Input/Output) - Like talking face-to-face

  • Used for local servers (running on your machine)
  • Direct process communication

2. SSE (Server-Sent Events) - Like making a phone call

  • Used for remote servers (over the internet)
  • HTTP-based communication

Let me show you both:

Practical Configuration Examples 🛠️

Example 1: Local File Explorer Server

For local servers using stdio transport, the configuration includes the command and arguments to launch the server process:

{
  "servers": [
    {
      "name": "File Explorer",
      "transport": {
        "type": "stdio",
        "command": "python",
        "args": ["/path/to/file_explorer_server.py"]
      }
    }
  ]
}

What's happening here?

  • name: Human-readable identifier
  • type: "stdio" means local communication
  • command: How to start the server (run Python)
  • args: Path to your server script

Example 2: Remote Weather API Server

For remote servers using HTTP+SSE transport, the configuration includes the server URL:

{
  "servers": [
    {
      "name": "Weather API",
      "transport": {
        "type": "sse",
        "url": "https://example.com/mcp-server"
      }
    }
  ]
}

Example 3: Using Environment Variables

Often you need API keys or secrets. Here's how to handle them safely:

{
  "servers": [
    {
      "name": "GitHub API",
      "transport": {
        "type": "stdio",
        "command": "python",
        "args": ["/path/to/github_server.py"],
        "env": {
          "GITHUB_TOKEN": "your_github_token"
        }
      }
    }
  ]
}

In your Python server, you'd access it like this:

import os
 
github_token = os.environ.get("GITHUB_TOKEN")
if not github_token:
    raise ValueError("GITHUB_TOKEN environment variable is required")

Using Tiny Agents (Programmatic Clients) 🤖

This is where it gets exciting! You can use MCP clients directly in your code.

Creating an Agent Configuration

Create an agent.json file:

{
  "model": "Qwen/Qwen2.5-72B-Instruct",
  "provider": "nebius",
  "servers": [
    {
      "type": "stdio",
      "config": {
        "command": "npx",
        "args": ["@playwright/mcp@latest"]
      }
    }
  ]
}

Running Your Agent

tiny-agents run agent.json

When you run the agent, you'll see it load, listing the tools it has discovered from its connected MCP servers. Then, it's ready for your prompts!

Key Takeaways 💡

  1. MCP Clients are bridges - They connect AI apps to external capabilities
  2. Configuration is simple - Just JSON files with server definitions
  3. Two transport types - STDIO for local, SSE for remote
  4. Environment variables - Keep secrets safe and configurable
  5. Multiple client types - UI clients (Claude Desktop) and programmatic clients (Tiny Agents)