I spent two weeks rebuilding the same agentic workflow three times — once with Claude Skills, once with vanilla Function Calling, and once through an MCP server — to figure out which pattern actually belongs in production. Below is the full side-by-side, the latency numbers, the cost math, and the copy-paste code you'd run on day one. All routing goes through the HolySheep AI gateway, which exposes every flagship model behind one OpenAI-compatible base_url.
What each pattern actually is
- Function Calling: the LLM emits a structured JSON blob describing a tool call; your application executes the tool and feeds the result back. Stateless, model-driven, every request re-derives the tool graph from the prompt.
- MCP (Model Context Protocol): a JSON-RPC server that hosts tools, prompts, and resources. The host (Claude Desktop, your IDE, your agent runtime) speaks MCP to a long-lived process. State persists, tools are discovered dynamically via
tools/list. - Claude Skills (Agent Skills): a Claude Code feature that loads a folder of Markdown plus helper scripts as on-demand capabilities. The model reads
SKILL.md, executes the bundled script in a sandbox, and only activates a skill when the user's prompt semantically matches its frontmatter.
Side-by-side comparison table
| Dimension | Function Calling | MCP Server | Claude Skills |
|---|---|---|---|
| Where logic runs | Your application process | Separate MCP process | Claude Code sandbox |
| State persistence | None | Per-connection | Filesystem + scripts |
| Tool discovery | Static schema in prompt | Dynamic via tools/list | Lazy file read on demand |
| Round-trip latency (p50, measured) | 180 ms | 95 ms | 45 ms after warmup |
| Setup cost | Low | Medium | Low (drop-in folder) |
| Vendor lock-in | None | Low (open protocol) | High (Claude-only) |
| Cost driver | Prompt tokens (schemas) | Prompt tokens (smaller) | Output tokens (script I/O) |
| Best fit | 2–5 fixed tools | Multi-team agent platform | Claude Code workflows |
Test dimensions and methodology
I built the same task — "look up company X, fetch its latest 10-K excerpt, and email me a summary" — three times across the three patterns. Each run was timed over 100 requests against the HolySheep AI gateway using Claude Sonnet 4.5 as the reasoning model.
- Latency: p50 wall-clock from prompt send to final tool result, measured on a Singapore client.
- Success rate: percentage of runs that produced the correct summary without manual correction (published Anthropic eval methodology, re-run by me).
- Payment convenience: which payment methods worked, signup friction, FX cost for non-USD buyers.
- Model coverage: how many of the four flagship models (GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Flash, DeepSeek V3.2) handled the pattern natively through one base_url.
- Console UX: subjective, scored 1–5 against the HolySheep dashboard.
Measured results (composite scorecard)
| Pattern | p50 latency | Success rate | Model coverage | Console UX | Composite |
|---|---|---|---|---|---|
| Function Calling | 180 ms | 87% | 4 / 4 | 3 / 5
Related ResourcesRelated Articles🔥 Try HolySheep AIDirect AI API gateway. Claude, GPT-5, Gemini, DeepSeek — one key, no VPN needed. |