Skills teach an agent how to do a job; MCP gives it access to a system. Where each runs, what each costs in context (measured), and what a SaaS should ship.


Mikhail Savchenko13 min
Contents9 sections
  1. What is a Claude Skill, exactly?
  2. What is an MCP server, exactly?
  3. Where does each one actually run?
  4. Which costs more context, a Skill or an MCP server?
  5. Can a Skill replace an MCP server, or the other way round?
  6. When should you use both?
  7. What should a SaaS vendor ship to become AI-native?
  8. What usually goes wrong?
  9. How do you choose?

Claude Skills vs MCP is a choice between teaching and access. Use a Skill when the agent can already reach everything it needs and keeps doing the job the wrong way: the Skill holds your procedure, your output format and any script that should run the same way every time. Use an MCP server when the agent needs live data or must act in a system it cannot otherwise reach. Use both when the job is a procedure over a live system, which is the usual case for a SaaS product. If you are unsure, write the Skill first: it is one markdown file, and it will show you which calls the procedure needs that the agent cannot make.

Everything below was checked on 2026-10-07 against Anthropic's documentation and the MCP specification (revision 2026-07-28), and the token figures are our own measurements on our own server and skills.

Claude Skill (Agent Skill)MCP server
What it isInstructions the agent reads, plus optional scripts and reference filesA program that exposes tools, resources and prompts over a JSON-RPC protocol
PackagingA folder with SKILL.md (YAML name and description, markdown body)A local process (stdio) or a remote HTTP endpoint (Streamable HTTP)
Where it executesIn the agent's own environment: a sandbox on the Claude API, your machine in Claude CodeIn the server's process: on the user's machine for stdio, on the vendor's infrastructure for remote
Context costAbout 100 tokens of metadata always; body under 5,000 tokens only when triggered; files cost nothing until readEvery tool definition on every request unless the client uses tool search; results count too
Auth and data accessWhatever the agent's environment already has; no network on the Claude APIOAuth 2.1 for HTTP servers (optional in the spec), credentials from the environment for stdio
Best forProcedures, house rules, output formats, deterministic scriptsLive data, actions in another product, anything with a login
Not forReaching a system the sandbox cannot reachTeaching order or format
PortabilityOpen standard since 18 Dec 2025; uploads do not sync between Claude surfacesOpen standard under the Linux Foundation since 9 Dec 2025; one server serves every client

What is a Claude Skill, exactly?

A Skill is a directory with one required file. SKILL.md opens with YAML frontmatter that carries two required fields: name (up to 64 characters, lowercase letters, numbers and hyphens, and it may not contain "anthropic" or "claude") and description (up to 1,024 characters). The markdown body below it is the procedure. Next to it you can put more markdown files, reference data and scripts.

The mechanism that makes Skills cheap is progressive disclosure, and Anthropic's Agent Skills documentation describes it in three levels. At startup only the name and description of every installed Skill go into the system prompt, about 100 tokens each. When a request matches a description, Claude reads the body of SKILL.md from the filesystem; Anthropic's guidance is to keep it under 5,000 tokens. Anything else in the folder loads only when the body points to it, and scripts run through bash so only their output enters the context, never their code.

Two consequences follow. The description is a classifier: Claude decides whether to open the Skill by matching the request against that one paragraph, so it has to say both what the Skill does and when to use it, in the words a user would type. And a Skill can carry a lot of material at no cost, because a reference file nobody needs this time is never read.

Skills launched in Claude on 16 October 2025 and became an open standard on 18 December 2025. The client list on agentskills.io (read 2026-10-07) includes Claude Code, Cursor, GitHub Copilot, VS Code, Gemini CLI, OpenAI Codex, Goose and OpenCode, so "Claude Skills" is now mostly a name for where the format came from.

What is an MCP server, exactly?

The Model Context Protocol connects an AI application (the host, such as Claude Code or VS Code) to servers that provide context. The host opens one client connection per server, and the two talk JSON-RPC 2.0. A server can offer three kinds of thing: tools the model calls, resources it reads, and prompts the user invokes as templates. The client discovers them with tools/list and its siblings, and the host passes the tool definitions to the model, which then decides when to call them.

There are two standard transports. Stdio runs the server as a local process on the user's machine and suits developer tools. Streamable HTTP runs it remotely, so one deployment serves many clients; this is the transport a SaaS product uses. The older SSE transport is deprecated, and Claude Code marks it so in its own setup docs.

The specification keeps moving, and anyone building a server today should read the 2026-07-28 revision rather than a tutorial from last year. It makes the protocol stateless: every request carries its protocol version and capabilities, and servers advertise what they support through a mandatory server/discover request. It deprecates sampling (servers asking the client's model for completions). And in the authorization spec it deprecates dynamic client registration in favour of OAuth Client ID Metadata Documents, keeping DCR only for backward compatibility.

Where does each one actually run?

Where a piece runs decides what it can reach, so check this first.

A Skill runs wherever the agent runs, with exactly the access that environment has. Anthropic's documentation lists the differences by surface. On the Claude API, Skills run inside the code execution container with no network access and no runtime package installation. On claude.ai, network access ranges from full to none depending on user and admin settings. In Claude Code, a Skill's scripts have the same network access as any other program on your computer.

An MCP server runs in its own process. A remote server runs on the vendor's infrastructure with the vendor's own access to its database and APIs; the agent sends a request and gets a result back. A stdio server runs on the user's machine with the user's credentials from the environment.

So the question "can a Skill do what my MCP server does?" has a surface-dependent answer. In Claude Code, a Skill whose script calls your API with a key from the environment works. On the Claude API, the same Skill cannot reach your API at all. For a product used by people you do not control, from clients you do not choose, the MCP server is the part that works in any MCP-capable client.

Sharing differs too. Custom Skills do not sync between Claude surfaces: an upload to claude.ai is personal to that user, an upload through the API is shared with the workspace, and Claude Code reads ~/.claude/skills/ or the project's .claude/skills/. A remote MCP server is one URL that every client connects to.

Which costs more context, a Skill or an MCP server?

998MCP server, tokens
against
69Skill, tokens
In our measurement the MCP server cost more than the Skill that drives it, 998 tokens against 69 of always-loaded cost, because full tool definitions travel with every request while a Skill sends only its description until it is used.

We measured both on our own artefacts with Anthropic's token-counting endpoint on 2026-10-07 (model claude-sonnet-4-5):

  • The INITE visibility MCP server exposes three tools (analyze_site, get_analysis, match_tools). Sending their definitions adds 998 input tokens to a request. One tool alone adds 660, because the API inserts a fixed tool-use preamble as soon as any tool is present; the second and third added 103 and 235.
  • Our published skill that drives the same server, inite-ai-visibility-audit, costs 69 tokens of metadata and 636 tokens for the whole SKILL.md file, frontmatter included, once loaded.
  • Two of our internal writing skills cost 89 and 127 tokens of metadata. Their full bodies are 2,399 and 6,769 tokens, and the second is over Anthropic's 5,000-token guidance, which is a reason to move part of it into a reference file.

At scale the gap is wide. Anthropic's tool search documentation gives about 55,000 tokens of definitions for a five-server setup (GitHub, Slack, Sentry, Grafana and Splunk) and says Claude's tool selection degrades past 30 to 50 available tools. Its fix is to defer loading and let Claude search for the three to five tools a request needs, which Anthropic says cuts definition tokens by more than 85 percent. Claude Code's MCP documentation says tool search is on by default from version 2.1.232.

Results cost context as well. The same Claude Code page says it warns when a single MCP tool result passes 10,000 tokens and caps it at 25,000 by default. A Skill's script returns only its output, so a script that prints "validation passed" costs a few tokens.

Can a Skill replace an MCP server, or the other way round?

A Skill can replace an MCP server only where the agent's environment already has the access, which in practice means Claude Code on a machine holding the credentials. The LlamaIndex team, writing about their own agent builder, put the trade-off as predictable execution through MCP against interpreted instructions through Skills: a tool call either works or fails, while a Skill can be misread.

An MCP server cannot replace a Skill. It can describe each tool, and a good description says when to call it, but it has no place for "call this, then that, check the result, and format the answer as a punch list for a marketing lead". Anthropic's own rule, from its December 2025 post on Skills and MCP, is the cleanest: "If you're explaining how to do something, that's a skill. If you need Claude to access something, that's MCP." The same post notes that one Skill can coordinate several MCP servers and one server can support many Skills.

When should you use both?

Whenever the job has steps and at least one step touches a live system. A weekly report is one example: MCP connects the database and the document store, and the Skill holds the normalisation rules and the template. Another is anything with a fixed sequence, such as "start the run, wait, read the result, then explain it to a non-technical owner", where the server alone would leave the agent guessing the order.

Our own pair works that way. The MCP server starts an audit and returns a run id; a second tool reads the result about a minute later. The Skill tells the agent when an audit is the right answer, that the two calls go in that order, and how to read the score back to the person who asked. An agent holding only the tool list has to infer the order from two descriptions; an agent holding only the Skill would read about an audit it has no way to start.

What should a SaaS vendor ship to become AI-native?

For a SaaS product the comparison above resolves into a short list. Most agents call tools instead of opening your dashboard. That shift is what the phrase AI-native points at, and the two standards are what make it concrete.

  1. A remote MCP server over Streamable HTTP. Start with the few jobs customers repeat most (ours began with three tools), write each description for a model (what it does, when to call it, what it returns), and bound the output: a summary plus a link to the full report, never an unpaged dump. Ours uses the same account, quota and plan as the browser.
  2. OAuth from the start. The MCP authorization spec builds on OAuth 2.1, Protected Resource Metadata and Resource Indicators, and Claude Code, for one, runs the browser flow and refreshes tokens for the user. Asking users to paste API keys into config files adds a manual step to every install. One honest note: our server was written against protocol version 2025-06-18 and registers clients dynamically, which the 2026-07-28 revision keeps only for compatibility; new servers should start with Client ID Metadata Documents.
  3. A Skill per workflow. Put the trigger phrases users type into the description, the call order and output rules into the body, and anything long into reference files. We publish ours at /.well-known/agent-skills/index.json, following the agentskills.io discovery schema, with a content digest per skill.
  4. A registry listing. The official MCP registry resolves server names; ours is listed as ai.inite/inite-visibility, with the namespace proved by a key served from our own domain.
  5. Telemetry by tool and by client. You need to know which tools are dead weight and which client sends the failing calls.

The build plan, week by week, is in the 90-day MCP server plan. The browser side of the same problem, making your interface legible to computer-use agents, is in browser-agent-ready SaaS. Whether your site is readable to the assistants that would recommend your product in the first place is what the free AI visibility check measures.

What usually goes wrong?

  • Vague tool descriptions. The model never picks the tool. Write descriptions with verbs, inputs and a sentence on when to use it.
  • Unbounded outputs. One call fills the context. Cap, paginate, or return a summary with a link.
  • Too many tools. Past 30 to 50 tools, selection gets worse. Merge near-duplicates and namespace the rest (billing_, reports_) so tool search can find a group.
  • API keys instead of OAuth. Every install needs a manual trip to a config file.
  • A server without a Skill. Calls happen in the wrong order, and the answer comes back in the wrong shape.
  • A Skill that assumes network access. It works in Claude Code and fails on the API.
  • A generic Skill description. The Skill is never opened, because nothing in the request matches it.
  • Installing Skills from strangers. Anthropic's documentation says to treat a Skill like installed software: a malicious one can direct the agent to run code or send data out. Audit every file before use. Anthropic also notes that Agent Skills are not covered by zero-data-retention arrangements.

For the governance side, who approves which actions an agent may take on your data, see human-in-the-loop for AI agents; for the platform pattern behind shipping one server per product, see one engine, many skins.

How do you choose?

Ask two questions in order. First: does the agent need something it cannot reach from where it runs, such as live data, an action in another product, or anything behind a login? If yes, you need an MCP server, and on the Claude API or in clients you do not control, a Skill cannot stand in for it. Second: does the job have an order, a format or a rule the agent keeps getting wrong? If yes, you need a Skill. Two yeses mean both.

For a SaaS product that wants agents to use it, the answer is almost always two yeses: ship the server so agents can reach the product, and the Skill so they follow the procedure you would otherwise explain in support tickets.

Frequently Asked Questions

  • Are Claude Skills better than MCP?

    They solve different problems, so neither is better in general. A Skill gives the agent a procedure and costs about 100 tokens until it is used. An MCP server gives the agent access to a system it cannot otherwise reach. If the agent needs live data or must change something in another product, a Skill alone cannot do it. If the agent already has access and keeps doing the job the wrong way, an MCP server will not fix that.

  • Can a Claude Skill call an API instead of an MCP server?

    Sometimes. A Skill can bundle a script that calls an API, and in Claude Code the script has the same network access as any program on your machine. On the Claude API, Skills run in a sandboxed container with no network access, and on claude.ai network access depends on admin settings. For a product other people will use from several clients, an MCP server is the dependable path; a script inside a Skill is fine for your own team in Claude Code.

  • Do Agent Skills work outside Claude?

    Yes. Anthropic published Agent Skills as an open standard on 18 December 2025, and the client list on agentskills.io (read 2026-10-07) includes Cursor, GitHub Copilot, VS Code, Gemini CLI, OpenAI Codex, Goose and OpenCode. Within Claude, custom Skills do not sync across surfaces: a Skill uploaded to claude.ai has to be uploaded separately to the API, and Claude Code reads its own folders.

  • Do MCP tools use up the context window?

    By default, yes: every connected server's tool definitions are sent with every request, and our own three-tool server adds 998 tokens. Anthropic's tool search loads definitions on demand and, by Anthropic's figures, cuts that by more than 85 percent; Claude Code turns tool search on by default from version 2.1.232. Tool results also count, and Claude Code warns when one MCP result passes 10,000 tokens.

  • Do I need an MCP server if my SaaS already has a REST API?

    If you want agents in Claude, ChatGPT, Cursor or VS Code to use your product without the user writing code, yes. The API stays; the MCP server is a thin layer over it that gives the agent a discoverable tool list, schemas written for a model, and the standard OAuth flow that MCP clients such as Claude Code already run for the user. Without it, the agent has to read your API docs and improvise calls each time.

MCPAgent SkillsClaudeAI Agents