MCP clients

MCP clients are the programs that speak the protocol from the consuming side. As of 2026, the ecosystem is Anthropic-led but broadening.

Claude Code

Anthropic's CLI agent. MCP support is first-class, you add servers to ~/.claude/config.json (or project-level) and they appear as tools the agent can use. Supports stdio and remote transports. See Claude Code overview.

Claude.ai (web + desktop apps)

The Claude web and desktop apps support remote MCP servers as "connectors." A growing list of first-party connectors (Gmail, Calendar, Notion, Slack, GitHub, Linear, etc.) and third-party ones. Good for end-users who don't want to run servers locally.

IDE extensions

Custom agent frameworks

If you're building your own agent, the MCP SDKs ship a client side too. You can connect your agent to any MCP server and pipe the tools directly into your LLM calls. Community projects like LangGraph and CrewAI have MCP adapters.

Configuring a client

Most clients use a JSON config that lists servers with transport + command. Example (Claude Code style):

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp"],
      "env": { "NOTION_API_KEY": "secret_..." }
    },
    "github-remote": {
      "url": "https://api.github.com/mcp",
      "headers": { "Authorization": "Bearer ghp_..." }
    }
  }
}

Permissions layer

A good MCP client sits between the model and the server and enforces permissions. Claude Code has allow/deny lists by tool name pattern (mcp__notion__*, mcp__github__delete_*). Before running any MCP tool, the client checks the permission list. See Permissions.

Multi-client considerations

Servers don't know which client is calling. That's usually fine, but if you're building a server that depends on specific client behaviors (resources, prompts, progress notifications), test against multiple clients, support varies.