Skip to content

Skills vs MCP -- When to Use Which

You installed a React MCP server and a React skill. Now the AI has two sources of React knowledge that occasionally contradict each other. The MCP server says to use createRoot from its tool output, but the skill says to use the legacy ReactDOM.render (it is outdated). You have two mechanisms doing overlapping work, and neither is clearly in charge.

This confusion is common because skills and MCP servers look similar from the outside — they both add capabilities to your AI. But they solve fundamentally different problems, and using the right one for each situation makes your setup cleaner and more reliable.

  • A clear mental model for when to use skills versus MCP servers
  • Decision framework for common development scenarios
  • Strategies for combining skills and MCP effectively
  • Anti-patterns to avoid when mixing the two

Skills are instructions. MCP servers are tools.

A skill tells the AI how to think about a problem. It shapes the AI’s approach, conventions, and decision-making patterns. Skills are passive — they sit in the context and influence behavior.

An MCP server gives the AI the ability to do something it could not do before. It provides tools for reading data, executing actions, and interacting with external systems. MCP servers are active — the AI calls them to perform operations.

SkillsMCP Servers
What they provideInstructions, conventions, patternsTools, actions, data access
How they workLoaded into context at session startCalled on-demand during conversation
AnalogyA style guide handed to a developerA set of power tools on a workbench
Context costFixed (loaded once per session)Variable (each tool call adds to context)
PersistenceAlways active once installedOnly active when connected
AuthenticationNone neededOften requires tokens or OAuth

You want to standardize how the AI writes code.

“Always use named exports. Always add JSDoc comments. Always create test files alongside components.” These are conventions — rules about style and structure that do not require external tool access.

You want to teach the AI about your project’s architecture.

“Our API routes live in src/pages/api/ and use this authentication middleware pattern. Our database queries use Drizzle ORM with this specific pattern for error handling.” This is project knowledge that the AI needs to apply consistently.

You want to share team conventions across developers.

Skills are stored as files in your repository. Every developer who clones the repo gets the same instructions. This is how you standardize AI behavior across a team.

You want to teach the AI a framework’s best practices.

“When using Next.js App Router, prefer Server Components by default. Only use ‘use client’ when you need interactivity.” This is framework knowledge that prevents the AI from using outdated patterns.

You need the AI to interact with an external system.

Reading Jira tickets, creating GitHub PRs, querying databases, browsing Figma designs — these require actual API calls that skills cannot make.

You need real-time data.

Skills are static text. They cannot fetch the current state of your database, the latest CI pipeline status, or the contents of a web page. MCP servers provide live data.

You need the AI to execute actions.

Creating files in specific formats, running test suites, deploying code, updating ticket status — these are operations that require tool access.

You need the AI to work with credentials.

MCP servers handle authentication (API keys, OAuth tokens) in a secure way. Skills should never contain credentials.

Scenario 1: “I want the AI to write better React code”

Section titled “Scenario 1: “I want the AI to write better React code””

Use a skill. Install vercel-labs/agent-skills to teach the AI current React patterns: Server Components, Suspense boundaries, proper hook usage. The skill provides the knowledge; the AI applies it to your code.

Why not an MCP server? Writing React code does not require external tool access. The AI already has the ability to write and edit files.

Scenario 2: “I want the AI to create PRs that reference Jira tickets”

Section titled “Scenario 2: “I want the AI to create PRs that reference Jira tickets””

Use an MCP server (two, actually). You need the Atlassian MCP server to read Jira tickets and the GitHub MCP server to create PRs. These are actions that require API access.

Why not a skill? A skill could tell the AI “always reference the Jira ticket in PR descriptions,” but it cannot actually read the ticket or create the PR. You need the MCP servers for the doing.

Best approach: Use both. Install a skill that says “When creating PRs, always include the Jira ticket ID in the branch name and PR title, and link back to the ticket in the description.” Then connect the Atlassian and GitHub MCP servers so the AI can actually execute this workflow.

Scenario 3: “I want the AI to follow our deployment process”

Section titled “Scenario 3: “I want the AI to follow our deployment process””

Use a skill for the process, MCP for the execution. A skill describes the steps: “Check CI is green, merge to main, wait for staging deployment, run smoke tests, promote to production.” MCP servers (GitHub, Playwright, your CI platform) execute each step.

Scenario 4: “I want the AI to use the latest library documentation”

Section titled “Scenario 4: “I want the AI to use the latest library documentation””

Use an MCP server. Context7 or Fetch MCP fetches live documentation. Skills are static and would contain stale documentation.

Exception: If the library rarely changes and you want to embed specific patterns, a skill works. For example, a skill teaching Drizzle ORM patterns for your specific schema is more reliable than fetching docs every time.

Scenario 5: “I want all team members’ AIs to behave consistently”

Section titled “Scenario 5: “I want all team members’ AIs to behave consistently””

Use a skill. Commit it to your repository. Every developer who clones the repo gets identical AI behavior. MCP servers are configured per-developer and may differ.

The best setups use skills for the “what” and “how,” and MCP servers for the “do.”

ConcernHandled ByExample
Code conventionsSkill”Use named exports, add JSDoc to public functions”
Framework patternsSkill”Prefer Server Components, use Suspense for data fetching”
Reading external dataMCP Server”Fetch the Jira ticket details, read the database schema”
Executing actionsMCP Server”Create a PR, deploy to staging, run E2E tests”
Workflow orchestrationSkill + MCPSkill defines the steps, MCP servers execute them

Putting API documentation in a skill. API docs change. Use Context7 or Fetch MCP instead.

Using an MCP server to enforce coding conventions. An MCP server that lints code on every save is a code review tool, not an AI skill. Use a skill for conventions and a linter for enforcement.

Installing too many skills. Each skill consumes context window space. If you have 20 skills, the AI may not read all of them carefully. Prioritize the 5-10 most impactful skills.

Duplicating MCP tool instructions in a skill. If the GitHub MCP server already knows how to create a PR, you do not need a skill that explains the GitHub API. You do need a skill that describes your team’s PR conventions (title format, required reviewers, description template).

Skill and MCP give contradictory guidance. The AI follows whichever appears later or more prominently in context. Remove the less authoritative source. If the skill says “use createRoot” but Context7 fetches docs showing hydrateRoot, the live docs should win.

Too much context from skills and MCP combined. If you have 10 skills and 5 MCP servers, the AI’s context window may be exhausted before you even ask a question. Audit your setup and remove anything you are not actively using.

Skills work in Claude Code but not in Cursor. Skills install into different directories per tool. Check that the skill files exist in the correct location for your editor.