What Is an MCP Client? How Hosts, Clients and Servers Fit
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.
6 min read
MCP vs function calling compared with concrete decision rules, tradeoffs and a hybrid architecture, for makers choosing which to build with.
Anyone who has wired up OpenAI's tools parameter or Anthropic's tools array, then read about the Model Context Protocol, asks the same question: isn't MCP just function calling with extra steps? The mcp vs function calling comparisons ranking today are vendor blogs from Prefect, Portkey and Obot AI, each nudging the answer toward their own platform. Here is the neutral version, with rules you can apply today.
MCP vs function calling is a question of layers, not competition. Function calling is the model emitting structured JSON to request a tool call inside your app. MCP is a client-server protocol where a server exposes tools, resources and prompts that any client discovers at runtime. Use function calling for a few tools in one app; use MCP once tools must be shared or governed.
| Function calling | MCP | |
|---|---|---|
| What it does | Model emits structured tool-call JSON inside your app's process | Separate server exposes tools, resources and prompts over JSON-RPC 2.0; clients discover them at runtime |
| Where tool logic lives | Inside your application code | Inside the MCP server, decoupled from any one app |
| Provider format | Different per vendor: OpenAI's tool_calls, Anthropic's tool_use, Gemini's functionCall, Llama's function_call | One protocol, invoked through tools/call, works with any MCP client regardless of which model generated the request |
| Discovery | None; tools are hard-coded into every request | Clients call tools/list at runtime; servers push notifications/tools/list_changed when tools change |
| Setup | About 20-30 lines of Python, no extra process | A server process (stdio) or a hosted service (Streamable HTTP with OAuth) |
| Latency | In-process, minimal | An extra process or network hop |
| Sweet spot (Portkey) | Fewer than 5 tools, single provider, single app | 10+ tools, multiple teams, multiple providers |
| Governance | No natural interception point for audit or access control | Can sit behind a gateway that logs which agent called which tool, with what arguments, at what time |
Function calling is a feature of the LLM API itself. You define tools as JSON schemas, send them with your prompt, and the model decides whether to call one. Prefect's comparison shows how close the schemas look across providers and how different the wrapping is: Anthropic's Python SDK nests the schema under input_schema, while OpenAI's SDK nests the same fields under parameters inside a function object. Support both providers and you either maintain two definitions or write a translation layer.
The model never runs the function. Your application reads the structured output, matches it to real code, executes it, and sends the result back into the conversation. That dispatch loop, plus the schema and the credentials, all live in one process. Obot AI adds a second limit: function calling doesn't natively chain multi-step tool calls into a workflow. You build that logic yourself, and it becomes a bottleneck as the workflow grows.
Function calling is cheap to stand up. Portkey measures a typical implementation at 20-30 lines of Python. There is no server to run and no connection to manage, which is why Prefect recommends it for prototyping: build the tool inline, test it, and only graduate it to an MCP server once it proves valuable.
The Model Context Protocol is an open standard, described by the spec authors as "a USB-C port for AI." Version 2026-07-28 is the current release, supported by Claude, ChatGPT, Visual Studio Code, Cursor and MCPJam.
MCP splits the pipeline into parts. Per Portkey, the MCP Host is the AI application itself, such as Claude Code or Cursor; the MCP Client maintains a connection to a server; and the MCP Server is a separate process exposing tools, resources and prompts. Obot AI adds a fourth layer to the picture: the data sources underneath, the databases, APIs or files that the tools actually reach into. Tools are executable actions, resources are contextual data, prompts are reusable interaction templates. The latter two have no equivalent in plain function calling.
Discovery is the part function calling can't do. A client calls tools/list to see what a server offers at runtime, and if the server adds or removes a tool it sends notifications/tools/list_changed so every connected client updates without a code change. MCP runs on JSON-RPC 2.0 over two transports: stdio for local servers with near-zero overhead, and Streamable HTTP for remote servers with OAuth. Invocation goes through one universal method, tools/call, regardless of which model generated the request, which removes the per-provider parsing logic function calling requires.
Prefect's worked example makes the payoff concrete: a support-ticket search tool built as an MCP server with FastMCP is one file. Build the same tool as function calling in three separate applications and you get three copies of the schema, three dispatch loops, and three database connections. When the support team adds a filter parameter to the MCP version, every client sees it on its next connection. Prefect also counts the MCP server ecosystem already at hundreds of pre-built servers for services like GitHub, Slack, databases and file systems, so teams can plug in rather than reimplement. Obot AI's tradeoff list is equally direct: more setup complexity, network latency, and a newer, smaller ecosystem than the one built up around individual provider APIs.
Prototyping a single-model app. Function calling. You're testing whether a tool is useful at all, so build it inline and iterate before setting up infrastructure.
A coding assistant generating tools from the current project. Function calling. Ephemeral, per-session tools are just data passed with each request; a server for a tool that exists for one conversation adds overhead for no benefit.
A latency-sensitive single-service app. Function calling. It runs in-process. MCP adds a process or network hop, and where every millisecond counts, that's the wrong trade.
A database query tool used by engineering, support and an executive dashboard through different clients. MCP. One server, one source of truth, access control managed at the server level. Prefect calls this a team-shared tool, and it's the kind of integration you'll find listed in the databases category on AI Agents Listing.
Multi-model, multi-team production systems with 10 or more tools. MCP. Portkey's factor table draws the line at five tools for function calling and ten-plus for MCP; below five, inside one app, a server isn't worth the setup cost.
Anything needing an audit trail. MCP. A server behind a gateway is the only architecture here with a natural point to log which agent called which tool, with what arguments, at what time.
Most production systems, in practice. Both. Portkey and Prefect independently describe the same hybrid: function calling handles the model's request inside the conversation loop, MCP handles routing and execution for shared tools, and hot-path, latency-critical calls can bypass MCP entirely. Portkey notes that without MCP, integration complexity across multiple providers and tools tends to grow quadratically; centralizing tool infrastructure in MCP keeps it closer to linear.
If you're picking an editor to build any of this in, Claude Code, Cursor and Windsurf all act as MCP hosts, and adoptable servers turn up across developer tools as well as databases.
The MCP specification's current version is dated 2026-07-28, and the official docs list Claude, ChatGPT, Visual Studio Code, Cursor and MCPJam as supported clients. Portkey's own comparison, published 20 March 2026, flags a terminology shift worth knowing: several platforms and docs now use "tool calling" and "function calling" interchangeably, describing the same mechanism, the model emitting structured output that tells the application which tool to run. Portkey has since become part of PRISMA AIRS AI Gateway under Palo Alto Networks.
tool_calls, Anthropic's tool_use, Gemini's functionCall, Llama's function_call, while MCP invokes every tool through one method, tools/call.No. Prefect and Portkey both describe them as complementary rather than competing: function calling generates the model's intent to call a tool, and MCP standardizes how that call is discovered and executed once the intent exists. Neither source describes MCP as a replacement for function calling.
Yes. Portkey describes this as the common pattern in production: function calling handles the model's request inside the conversation loop, while MCP manages routing and execution at the infrastructure layer, with hot-path calls sometimes going direct to bypass the extra hop.
Function calling, for a single application, since it runs entirely in-process. MCP adds either a local process hop (stdio transport) or a network hop (Streamable HTTP), which both Portkey and Prefect note as the trade-off you accept for portability and discovery.
Portkey's factor table puts function calling's comfort zone at fewer than five tools on a single provider, and MCP's at ten or more tools, especially once multiple teams or model providers are involved. Below that, a 20-30 line function-calling implementation is usually simpler to run.
Yes. An MCP server exposes tools through one protocol that any MCP client can call regardless of which model generated the request, according to the MCP spec, which lists Claude, ChatGPT, Visual Studio Code, Cursor and MCPJam as supported clients.
Compare adoptable servers in the MCP servers hub.
One email a week. New agents, MCP servers and skills, and what is actually getting traction.
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.
6 min read
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