Stop reading the two as a cage match. An MCP server connects your agent to a system. An Agent Skill teaches your agent a workflow. One is a connection; the other is an instruction. Almost every "should I use X or Y" argument you've seen collapses once you hold that line — and the products that ship well tend to use both.
If you want the answer in a sentence: **if the agent needs to reach something outside itself, build a server; if it needs to know how to do something, write a skill.** The rest of this page is the token math and the four questions for the cases where that sentence isn't enough. (For the deeper conceptual split — connection vs. instruction vs. the context bill — see the companion, Claude Agent Skills vs MCP.)
The four questions that settle it#
Run your feature through these in order. The first "yes" usually decides it.
- Does it need live data or an external system? A database, a third-party API, a search index, a feed. → MCP server. A skill is text; it can't hold a connection open.
- Does it perform an action with side effects that must run server-side? Charging a card, sending mail, writing to shared state — anything you can't trust a per-user local script to do, or that multiple users hit at once. → MCP server.
- Is it a workflow, procedure, or body of knowledge the model should follow? A house style, a release checklist, a code-generation recipe, domain conventions. → Agent Skill.
- Is it both? (It usually is.) → A thin server for the connection and side effects, and skills that encode the workflow on top. Build the skill first when you can — see the cost argument below.
The token-cost math (this decides the borderline cases)#
The costs are shaped differently, and the shape is the deciding factor when a feature could plausibly go either way.
- A server's cost is standing. Every tool the agent can call carries a JSON schema in its context window whether or not it's ever used. A broad tool catalog is a per-turn tax. Progressive tool discovery (load/unload schemas on demand) refunds part of it, but the default posture is "you pay for the whole menu."
- A skill's cost is deferred. Only the skill's short description sits in context so the model knows it exists. The full body loads only when the skill is invoked, and unloads pressure via supporting files you reference but don't inline. Per the Claude Code docs: a skill's body "loads only when it's used, so long reference material costs almost nothing until you need it."
Practical read: if the thing is mostly knowledge — long, occasionally-needed, reference-heavy — a skill is strictly cheaper to keep around. If the thing is mostly capability — a live action the agent takes often — a server earns its schema.
Why "start with the skill" is the right default#
When a feature genuinely could be either, bias toward the skill, because the operational cost is lopsided:
| Agent Skill | MCP Server | |
|---|---|---|
| To ship | Commit a folder | Deploy and secure a service |
| To version | git | Deploy pipeline + schema versioning |
| To kill | Delete the folder | Decommission infrastructure |
| To make multi-user | Share via plugin or managed settings | It already is — but you own the scaling |
A file in git is cheaper to write, review, and delete than a running service with auth, transport, and a scaling story. Ship the skill; graduate to a server only when questions 1 or 2 force your hand.
Where this is heading#
Both surfaces standardized in mid-2026, which is why this is now a clean decision rather than a bet. Skills became portable under the SKILL.md open standard — the same folder runs across Claude Code, claude.ai, Cursor, and ChatGPT. And MCP authorization went production with enterprise-managed, IdP-provisioned connector access, so a server is now sellable into enterprises without a bespoke auth story. You're no longer choosing between two moving targets — you're choosing between two stable primitives with different jobs.
When you've decided it's a skill, the build is short: how to turn a repeated prompt into a Claude Agent Skill walks it end to end. When it's a server, start with how to build an MCP server.



