Function calling spans the LLM-to-host boundary; MCP spans the host to tool boundary. Different layers, used together, never in competition.
Picture an office with three people: a manager, an assistant, and a contractor. The manager (the LLM) tells the assistant 'book me a flight' in a precise, agreed-upon phrasing. That precise phrasing is function calling. The assistant (the host app) then calls the travel agency over a standard phone line that every agency understands. That standard phone line is MCP. The manager never dials the agency directly, and the agency never hears the manager. Each boundary has its own protocol. The manager to assistant boundary uses one shape; the assistant to agency boundary uses another. They stack on top of each other, so swapping the phone line does not change how the manager talks, and swapping the manager does not change how the assistant dials out.
Detailed answer & concept explanation~8 min readEverything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
4 min: name the two boundaries, place each protocol, trace one turn through both, then explain why swapping either side leaves the other untouched.
| Concern | Function calling | MCP |
|---|---|---|
| Boundary spanned | LLM to host | Host to tool server |
| What crosses it | Structured call object in the completion | JSON-RPC request over stdio or HTTP |
| Defined by | Each model vendor | Open spec, vendor-neutral |
| Has a network hop | No, in-prompt convention | Yes, to a separate server process |
| Competing or stacked | Stacked, model-facing layer | Stacked, tool-facing layer |
Real products, models, and research that use this idea.
- Claude Code emits Anthropic-format function calls on the model side and reaches every registered server over MCP on the tool side.
- Cursor and Zed both adopted MCP in 2025, so a single filesystem server plugs into either host without touching the model-facing schema.
- OpenAI's tools API and Gemini function calling occupy the same inner boundary that an MCP-aware host wires its discovered tools into.
What an interviewer would ask next. Try answering before peeking at the approach.
QTrace one user turn through both boundaries end to end. Where does each protocol act?
QIf you swap the model vendor from one provider to another, what changes at each layer?
Don't say thisRed flags and common mistakes that signal junior thinking. Click to expand.
Red flags and common mistakes that signal junior thinking. Click to expand.
Placing both at the same layer and calling them rivals. Function calling is LLM facing; MCP is tool facing. One app speaks both at once.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.
Same topic, related formats. Practice these next.