MCP clients are the programs that speak the protocol from the consuming side. As of 2026, the ecosystem is Anthropic-led but broadening.
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.
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.
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.
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_..." }
}
}
}
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.
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.