Human in the Loop AI Agents: How HITL Works and When to Use It
Human in the loop AI agents pause before a risky action so a person can approve, reject or edit it. How the pattern works, real frameworks, and when to skip it.
5 min read
What is an MCP client? It is the part inside apps like Claude, Cursor and VS Code that opens one connection to one MCP server to fetch tools and data.
An MCP client is the piece of software inside an AI application that opens and holds one connection to one MCP server. The application, called the host, creates a separate client for every server it talks to. Claude Desktop, Cursor and VS Code are hosts; the client is the component doing the protocol work underneath.
An MCP client is a component instantiated by a host application, such as Claude Desktop or Cursor, to communicate with one specific MCP server over the Model Context Protocol. It sends requests for that server's tools, resources and prompts, and it exposes features back to the server, such as elicitation, so a tool can ask the person using it for missing information mid-task.
The Model Context Protocol, introduced by Anthropic in November 2024 and now maintained under the Agentic AI Foundation, a directed fund under the Linux Foundation that Anthropic set up with Block and OpenAI in December 2025, distinguishes three roles:
According to the official MCP architecture documentation, local MCP servers that use the STDIO transport typically serve a single client, while remote servers on Streamable HTTP typically serve many clients at once. When VS Code connects to the Sentry MCP server and then separately to a local filesystem server, it instantiates two distinct client objects, one per connection.
MCP splits into two layers. The data layer is a JSON-RPC based protocol that covers capability discovery, versioning, and the core primitives: tools, resources, prompts and notifications. The transport layer defines how bytes actually move, whether over STDIO on the same machine or over Streamable HTTP across the network, including authorization.
A client's day-to-day job runs through a small set of message types. It sends a ListToolsRequest to ask a server what it can do and gets back a ListToolsResult. When the host's model decides to use one of those tools, the client sends a CallToolRequest with the arguments and receives a CallToolResult with the outcome. The client sits between the host's model and the server's actual work, translating decisions into protocol calls and results back into something the model can read.
Clients also expose features that let servers ask for more than they were given upfront. The current protocol version, 2026-07-28, documents three:
InputRequiredResult, the client collects the input, and it retries the original request carrying the answers.Local, one server, one client. Claude Desktop's filesystem quickstart has a person edit a JSON config file naming the @modelcontextprotocol/server-filesystem package and the directories it may touch. Claude Desktop then launches that server over STDIO and creates one client to talk to it. Every file read, write or move still needs the user's explicit approval in the app, one action at a time.
Remote, custom connector. Claude's remote-server flow works differently: a person adds a Custom Connector by pasting a server URL such as https://example-server.modelcontextprotocol.io/mcp into Settings, completes whatever authentication the server needs (commonly OAuth or an API key), and Claude then lists that server's resources and prompts under the message composer's attachment menu, with tool permissions configurable per connector.
Editor client with its own transport rules. Cursor's MCP documentation lists three transports it supports: stdio for a locally-run, single-user server started with a shell command; SSE; and Streamable HTTP, both for local or remote multi-user servers reached by URL with OAuth. Cursor's protocol support table marks tools, prompts, resources, roots, elicitation and the MCP Apps extension all as supported, and it also accepts static OAuth client credentials in mcp.json for providers, such as Figma or Linear, that require a fixed client ID or a whitelisted redirect URL instead of dynamic client registration.
If you are building an MCP server, you mostly do not write client code: you implement the server side of the spec and let existing clients connect to it. You do need to know what the clients you are targeting actually support, because support is uneven. MCPJam's client directory, last reviewed 2026-07-08, tracks 16 clients and finds that only 9 of them (ChatGPT, Claude, Copilot, Cursor, Goose, MCPJam, Mistral, Slackbot and VS Code) render MCP Apps' interactive UI at all; the rest, including Claude Code, Cline, Codex, Amazon Bedrock AgentCore, n8n, Notion and Perplexity, will still call your tools and read your resources but will draw nothing for a UI-based tool. A server whose value lives in that UI shows those users nothing, so if your tool depends on MCP Apps you have to check the specific client, not assume parity across the ecosystem.
If you are building a client yourself, in most cases you should not start from the wire protocol. The official SDKs for TypeScript, Python, C#, Go and Rust hold Tier 1 status (complete protocol implementation, comprehensive documentation, a two business day issue-triage commitment), with Java and Ruby at Tier 2 and Swift, PHP and Kotlin at Tier 3. All of them implement both server and client creation, so picking one by language and following its client quickstart is faster and less error-prone than implementing the JSON-RPC exchange from scratch.
Protocol version 2026-07-28 is the current release referenced throughout the official documentation. Under this version, Roots and Sampling are both marked deprecated, while Elicitation has been extended with a URL mode alongside its original form mode, specifically so sensitive flows like OAuth authorization or credential entry can happen out of band from the client. In December 2025, Anthropic donated MCP to the Agentic AI Foundation, a Linux Foundation directed fund it co-founded with Block and OpenAI, moving governance of the spec outside a single vendor. MCPJam's client capability catalog, reviewed 2026-07-08, is the most current public accounting of which of the 16 clients it tracks render MCP Apps' UI (9 of 16) versus which only call tools and read resources.
Developers comparing MCP servers or planning which ones to install can browse the MCP servers directory on AI Agents Listing, and hosts such as Cursor, Claude Code and Goose each have their own listing there too.
The host is the application a person actually uses, such as Claude Desktop or Cursor; it manages the overall experience and can coordinate several server connections at once. The client is the protocol-level component the host creates to maintain one specific connection to one specific server. A host with multiple server connections runs multiple clients internally.
No. Existing hosts already contain clients that can connect to any spec-compliant server. Building a server means implementing the server side of the protocol (exposing tools, resources and prompts) and testing it against real clients, which is what tools like the MCP Inspector and MCPJam's testing tools are for.
According to MCPJam's client directory, reviewed 2026-07-08, 9 of the 16 clients it tracks render MCP Apps: ChatGPT, Claude, Copilot, Cursor, Goose, MCPJam, Mistral, Slackbot and VS Code. The other 7, including Claude Code, Cline and Codex, can still call tools and read resources but will not draw an app's UI.
Both are marked deprecated as of protocol version 2026-07-28 in the official specification. Elicitation, the third core client feature, is still active and was extended with a URL mode so sensitive exchanges like OAuth logins can happen outside the client entirely.
One email a week. New agents, MCP servers and skills, and what is actually getting traction.
Human in the loop AI agents pause before a risky action so a person can approve, reject or edit it. How the pattern works, real frameworks, and when to skip it.
5 min read
MCP server security covers confused deputy attacks, token passthrough, tool poisoning and supply chain risk, and how to harden a Model Context Protocol server in 2026.
5 min read
An MCP server registry catalogs available MCP servers so clients like Claude and Cursor can find and connect to them. Here is how one actually works.
3 min read