Essay · AI Stack

Agents vs Skills vs MCP: A Practical Guide to Building Your AI Stack in 2025

Stop reading thought leadership. Start building.

I've spent the last six months helping teams implement AI-assisted development workflows. The number-one question I get: “Should we use Agents, Skills, or MCP?”

The answer? All three - but not randomly. This guide gives you a mental model, concrete decision criteria, copy-paste templates, and real architecture patterns from production systems. No fluff. No “it depends.” Actionable guidance.

← Back to the homepage

The Problem: Everyone's Confused

  • Using agents for everything (expensive, slow, overkill)
  • Ignoring skills entirely (reinventing the wheel every conversation)
  • Treating MCP as “just another API” (missing architectural benefits)
  • Picking one and ignoring the others (leaving 70% of the value on the table)

The confusion exists because these concepts operate at different layers of abstraction. Once you see the layers, everything clicks.

The Mental Model: Three Layers, One System

Layer Concept House Analogy What It Does
Orchestration Agents The Architect Decides what to do and when
Knowledge Skills The Blueprints Encodes how to do it right
Integration MCP The Utilities Connects to power, water, internet

You wouldn't build a house with just an architect or just blueprints. You need all three layers.

Layer 1: MCP (Model Context Protocol) - The Foundation

What It Actually Is

MCP is an open protocol under the Linux Foundation that standardizes how AI systems connect to external tools and data. Before MCP, every tool x model combination required custom work. With MCP, each tool and model implements the protocol once and they all interoperate. It truly is “USB-C for AI.”

When to Use MCP

Use MCP when you need:

  • Real-time data access (databases, APIs, file systems)
  • Integrations with platforms like GitHub, Slack, or Notion
  • Secure, production-ready connections
  • Multi-user environments with proper auth and audit

Skip MCP when:

  • You only need to teach the AI a procedure (use skills)
  • You need autonomous decision-making (use agents)
  • The data is static and fits in prompt context

Sample MCP Configuration

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
    }
  }
}

Key insight: MCP provides the what - the data and tools to work with.

Layer 2: Skills - The Knowledge Layer

What Skills Actually Are

Skills are reusable procedural knowledge encoded in Markdown. They teach AI how to do things your way. Skills don't add new tools; they make the existing ones more effective and token-efficient.

When to Use Skills

Use skills when you need:

  • Consistent procedures across conversations
  • Domain expertise captured in your own words
  • Portable knowledge that travels wherever Claude runs
  • Dynamic activation based on context

Skip skills when:

  • You need real-time external data (use MCP)
  • You need autonomous multi-step execution (use agents)
  • The knowledge is highly specific to one conversation

Skill Architecture

~/.claude/skills/
├── code-review/
│   └── SKILL.md
├── data-analysis/
│   ├── SKILL.md
│   └── schema-reference.md
├── commit-messages/
│   └── SKILL.md
└── security-review/
    └── SKILL.md

Sample SKILL.md Template

# Code Review Skill

## Description
Performs code reviews following [Company] engineering standards.

## Activation
Use this skill when:
- User asks for a code review
- User submits a PR for feedback
- User asks "what do you think of this code"

## Review Checklist

### 1. Security (Check First)
- [ ] No hardcoded secrets or API keys
- [ ] Input validation on all user data
- [ ] SQL queries use parameterized statements
- [ ] No eval() or dynamic code execution

### 2. Performance
- [ ] No N+1 query patterns
- [ ] Large datasets are paginated
- [ ] Expensive operations are cached or async

### 3. Maintainability
- [ ] Functions are <50 lines
- [ ] Clear naming (no abbreviations)
- [ ] Comments explain WHY, not WHAT

### 4. Testing
- [ ] Happy path covered
- [ ] Edge cases identified
- [ ] Error scenarios handled

## Output Format

**Summary:** [1-2 sentence overview]

**Critical Issues:**
- Issue 1

**Suggestions:**
- Suggestion 1

**What's Good:**
- Positive 1

## Examples
Input: "Review this authentication function"
Output: Start with security checklist, flag auth-specific concerns

Key insight: Skills provide the how - the methodology and expertise.

Layer 3: Agents - The Orchestration Layer

What Agents Actually Are

Agents are autonomous decision-makers that break down complex goals into steps, execute actions, handle errors, and work in parallel. They have a decision loop: Observe → Think → Act → repeat.

When to Use Agents

Use agents when you need:

  • Multi-step autonomous execution
  • Planning for complex tasks
  • Parallel work via subagents
  • Delegation without micromanagement

Skip agents when:

  • A single prompt can do the job
  • You need maximum control over each action
  • Cost is a major concern (agents consume more tokens)
  • The task is procedural rather than decision-heavy

Agent Architecture Patterns

Pattern 1: Single Agent with Skills + MCP

Main Agent (Autonomous Executor)
├─ Skills loaded: code-review, data-analysis, deployment-checklist
└─ MCP connections: postgres (data), github (code), slack (notifications)

Pattern 2: Multi-Agent with Specialization

Orchestrator Agent (plans & delegates)
├─ Research Agent (skills: search, summary)
├─ Coder Agent (skills: coding, testing)
└─ Reviewer Agent (skills: review, security)

Key insight: Agents decide the when - what to do and in what order.

Putting It All Together: Real-World Example

Scenario: Automated Weekly Data Reports

Goal: Every Monday, analyze sales data and send insights to Slack. Here's how the three layers play together.

Layer 1: MCP Connections

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://readonly:pass@prod-db:5432/sales"
      }
    },
    "slack": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-slack"],
      "env": {
        "SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}"
      }
    }
  }
}

MCP provides live access to the sales database and Slack.

Layer 2: Skills

# Sales Analysis Skill

## Data Model
- orders: id, customer_id, total, created_at, region
- customers: id, name, segment (enterprise|mid-market|smb)
- products: id, name, category, margin

## Standard Metrics
1. Revenue by Segment (GROUP BY customers.segment)
2. Week-over-Week Growth (compare to previous 7 days)
3. Top Products (by revenue AND margin)
4. Regional Performance (GROUP BY orders.region)

## Query Patterns
- WHERE created_at >= NOW() - INTERVAL '7 days'
- Join orders → customers → products
- Exclude test accounts (segment != 'test')

## Output Format
1. Executive Summary (3 bullets max)
2. Key Metrics Table
3. Notable Changes (>10% WoW)
4. Recommendations (1-2 actions)

Skills provide the domain knowledge and methodology.

Layer 3: Agent Orchestration

Agent receives: "Generate weekly sales report"
1. Needs sales data → use MCP (postgres)
2. Needs to analyze correctly → load sales-analysis Skill
3. Needs to send results → use MCP (slack)
4. Executes the workflow autonomously, handles errors, and posts to #sales-reports

The agent provides autonomous execution, error handling, and sequencing.

Decision Flowchart

Need external data or tools? → Yes → Use MCP
                           → No  → Need consistent procedures? → Yes → Use Skill
                                                              → No  → Need autonomous multi-step work? → Yes → Use Agent
                                                                                                     → No  → Prompt is enough
Combine as needed.

Diagrams referenced in the original article (architecture layers and flowchart) map directly to this logic.

Common Mistakes (And How to Avoid Them)

Mistake 1: Using Agents for Everything

Agents are expensive and slow for simple tasks. Use skills for procedural work and reserve agents for true orchestration.

Mistake 2: Ignoring Skills

If you're repeating instructions in every conversation, you're wasting tokens and inviting drift. Turn repeatable knowledge into a skill.

Mistake 3: Putting Secrets in Skills

Skills are text files, not secure storage. Keep secrets in MCP env vars.

Mistake 4: Massive Monolithic Skills

One giant skill wastes context tokens. Keep skills small and focused.

Quick Reference Card

Question Answer
Need external data? MCP
Need real-time API access? MCP
Need secure credentials? MCP
Need consistent procedures? Skill
Need domain expertise? Skill
Need portable knowledge? Skill
Need autonomous execution? Agent
Need multi-step planning? Agent
Need parallel processing? Agent

Getting Started Today

If you have 30 minutes

  1. Identify one procedure you repeat with AI.
  2. Write it as a SKILL.md using the template above.
  3. Save to ~/.claude/skills/<name>/SKILL.md.

If you have 2 hours

  1. Do everything above.
  2. Set up one MCP server (filesystem or GitHub).
  3. Test the skill + MCP combination end-to-end.

If you have a day

  1. Do the 2-hour plan.
  2. Identify a workflow that could be automated.
  3. Design an agent that uses your skills + MCP connections.
  4. Document the architecture for your team.

The Bottom Line

Skills teach how.

MCP provides what.

Agents decide when.

The teams that dominate 2026 won't pick one - they'll orchestrate all three. Start with skills (lowest barrier, highest ROI), add MCP when you need real data, and deploy agents when autonomy matters. This isn't theory. It's competitive advantage.

Resources

#AIAgents #MCP #ClaudeAI #AIEngineering #TechLeadership #SoftwareDevelopment