The MCP Guide
MCP with agents

MCP vs plain function calling

People often ask whether MCP replaces function calling. It does not; it sits on top of it. Understanding the relationship clarifies when to reach for MCP.

They operate at different layers #

Function calling is a model capability: given tool schemas, the model emits a structured call, and your code executes it. It is specific to how you wired that model into your app.

MCP is a protocol for packaging tools so any client can discover and call them the same way. Under the hood, a client still uses the model's function calling to invoke MCP tools, MCP just standardizes where the tools come from and how they are described.

When plain function calling is enough #

If you have a single app, a fixed set of tools, and no need to share them, defining tools directly is simplest, and it sidesteps MCP's costs: a separate server process to run and monitor, extra latency from the client hop (and the network, for remote servers), and a spec that is still changing. There is no reason to add a protocol you will not reuse.

When MCP wins #

  • You want the same integration usable across multiple apps or models.
  • You want to consume third-party servers instead of writing every integration.
  • You want the team that owns a service to own its server.

In short: function calling is the mechanism, MCP is the distribution model.

Resources & further reading

  • Building effective agents AnthropicHow agents are structured and where tool-using agents commonly break down.
  • MCP specification MCPThe authoritative protocol spec: messages, capabilities, transports, and lifecycle.