mcp

MCP Servers vs Claude Code Skills: When to Use Each

Quick Answer

Skills are markdown files that tell Claude how to behave or what process to follow — they are prompt engineering. MCP servers are code that gives Claude new capabilities to take actions. Use skills for workflows and standards; use MCP for new tools and integrations.

The confusion between MCP servers and skills is understandable — both extend what Claude Code can do. But they operate at completely different layers. Skills are prompt-layer extensions: they are markdown instructions that shape how Claude thinks, what steps it follows, and what quality standards it upholds. MCP servers are capability-layer extensions: they are running code that adds new tools Claude can invoke.

Think of it this way: a skill called 'write-tests' tells Claude to always write unit tests, use the project's test framework, run the tests, and fix failures before calling a task done. An MCP server adds a 'run_tests' tool that actually executes your test suite and returns the output. You typically want both: the skill sets the standard, the MCP server provides the mechanical capability.

Skills have zero runtime overhead — they are just text appended to the context. MCP servers spawn child processes and add latency. For anything that can be expressed as instructions, a skill is preferable. For anything that requires real data (querying a DB, checking CI status, searching the web), you need an MCP server.

In practice, the most effective Claude Code setups combine both: a library of project-specific skills (commit-message, code-review, deploy-checklist) and a set of MCP servers (github, postgres, filesystem). The skills encode team knowledge; the MCP servers provide the tools to act on it.

Examples

What a skill looks like (.claude/skills/deploy.md)markdown
# deploy
Deploy the application to production.

## Steps
1. Run `npm run test` — fix any failures before proceeding
2. Run `npm run build` — fix any build errors
3. Check git status — commit any staged changes with a clear message
4. Run `vercel --prod` — wait for completion
5. Open the deployment URL and verify the health endpoint returns 200
6. Post the deployment URL in the #deployments Slack channel

## Rules
- Never deploy on Fridays after 4pm
- Always run tests first, even if they were just run
- If build fails, do NOT deploy a partial build
What an MCP server provides (capability, not instructions)typescript
// MCP server tool — does real work
server.tool(
  "run_tests",
  "Runs the project test suite and returns pass/fail counts and any failure output.",
  { filter: z.string().optional().describe("Optional test name filter") },
  async ({ filter }) => {
    const cmd = filter ? `npm test -- --grep "${filter}"` : "npm test";
    const { stdout, stderr, exitCode } = await exec(cmd);
    return {
      content: [{
        type: "text",
        text: JSON.stringify({ exitCode, stdout: stdout.slice(-2000), stderr: stderr.slice(-500) })
      }]
    };
  }
);

Tips

  • If you can express it as a checklist or set of rules, make it a skill. If you need real data or to take external actions, make it an MCP server.
  • Skills are free — they cost only context tokens. MCP server calls cost latency and tokens for the result. Prefer skills for pure process guidance.
  • You can invoke a skill by name in a prompt: '/deploy' triggers the deploy skill. MCP tools are invoked implicitly by Claude when relevant.
  • Combine them: a 'code-review' skill tells Claude what to look for; a GitHub MCP server lets Claude fetch the actual PR diff to review.
  • Skills live in .claude/skills/ and are checked into git — great for sharing team workflows. MCP servers are configured in settings.json and may be per-developer.

FAQ

Can a skill trigger an MCP tool call?+

Yes, indirectly. A skill can instruct Claude to 'run the test suite' and if an MCP server with a run_tests tool is available, Claude will use it. The skill provides the intent and process; the MCP server provides the mechanism.

Which should I build first when setting up a new project?+

Start with skills — they require no code and immediately encode your team's process. Add MCP servers once you identify the tools Claude keeps needing but lacks (usually database access and GitHub operations come up first).

Do skills affect MCP tool selection?+

Yes. If a skill says 'always use the project's eslint config when linting', Claude will apply that standard even when calling an MCP tool that runs linting. Skills set the standards; tools execute within them.

Related Guides