"MCP" and "function calling" get used almost interchangeably, and that causes real confusion when you're designing a system. They're related — but they operate at different layers. Function calling is how a model invokes a tool. MCP is how tools are exposed and shared across applications. Getting the distinction right changes how you architect your AI features.
Quick definitions
Function calling (a.k.a. tool calling) is a model capability: you describe some functions to the model, and when a user's request needs one, the model responds with a structured request to call it. Your code executes the function and feeds the result back. The tools live inside your application, in that provider's format.
Model Context Protocol (MCP) is an open protocol that standardises how AI applications connect to tools and data. Tools live in an MCP server — a separate process — and any MCP-compatible client (Claude Desktop, an IDE assistant, your own agent) can discover and call them over a standard interface.
The key difference
Function calling is in-process and per-app: each application wires each tool in by hand, in each provider's schema. If three apps need the same "look up order status" tool, you implement it three times.
MCP is out-of-process and reusable: you build one server that exposes "look up order status," and every MCP client can use it — no per-app rewiring, no provider-specific glue.