Skip to content

Why CLI Not MCP? ​

What You'll Learn ​

This lesson helps you understand:

  • ✅ Understand the positioning differences between MCP and the skill system
  • ✅ Understand why CLI is more suitable for skill loading
  • ✅ Master OpenSkills's design philosophy
  • ✅ Understand the technical principles of the skill system

Your Current Challenges ​

You might be thinking:

  • "Why not use the more advanced MCP protocol?"
  • "Isn't CLI too old-fashioned?"
  • "Isn't MCP more aligned with the AI era design?"

This lesson helps you understand the technical considerations behind these design decisions.


Core Question: What Is a Skill? ​

Before discussing CLI vs MCP, let's first understand the essence of "skills."

The Nature of Skills ​

Definition of Skills

Skills are a combination of static instructions + resources, including:

  • SKILL.md: Detailed operation guides and prompts
  • references/: Reference documentation
  • scripts/: Executable scripts
  • assets/: Images, templates, and other resources

Skills are not dynamic services, real-time APIs, or tools that require a server to run.

Anthropic's Official Design ​

Anthropic's skill system is inherently designed based on the file system:

  • Skills exist as SKILL.md files
  • Described through the <available_skills> XML block
  • AI agents read file contents to context on demand

This determines that the technology selection for the skill system must be compatible with the file system.


MCP vs OpenSkills: Positioning Comparison ​

Comparison DimensionMCP (Model Context Protocol)OpenSkills (CLI)
Use CaseDynamic tools, real-time API callsStatic instructions, documentation, scripts
Runtime RequirementsRequires MCP serverNo server needed (pure files)
Agent SupportOnly MCP-supporting agentsAll agents that can read AGENTS.md
ComplexityRequires server deployment and maintenanceZero configuration, ready to use
Data SourceRetrieved from server in real-timeRead from local file system
Network DependencyRequiredNot required
Skill LoadingThrough protocol callsThrough file reading

Why Is CLI More Suitable for the Skill System? ​

1. Skills Are Files ​

MCP requires a server: Need to deploy an MCP server, handle requests, responses, protocol handshake...

CLI only needs files:

bash
# Skills stored in file system
.claude/skills/pdf/
├── SKILL.md              # Main instruction file
├── references/           # Reference documentation
│   └── pdf-format-spec.md
├── scripts/             # Executable scripts
│   └── extract-pdf.py
└── assets/              # Resource files
    └── pdf-icon.png

Advantages:

  • ✅ Zero configuration, no server needed
  • ✅ Skills can be version-controlled
  • ✅ Available offline
  • ✅ Simple deployment

2. Universality: All Agents Can Use It ​

MCP's limitation:

Only agents that support the MCP protocol can use it. If agents like Cursor, Windsurf, Aider, etc., each implement MCP, it would bring:

  • Duplicate development work
  • Protocol compatibility issues
  • Difficult version synchronization

CLI's advantage:

Any agent that can execute shell commands can use it:

bash
# Claude Code invocation
npx openskills read pdf

# Cursor invocation
npx openskills read pdf

# Windsurf invocation
npx openskills read pdf

Zero integration cost: Only requires the agent to be able to execute shell commands.

3. Aligns with Official Design ​

Anthropic's skill system is inherently a file system design, not an MCP design:

xml
<!-- Skill description in AGENTS.md -->
<available_skills>
<skill>
<name>pdf</name>
<description>Comprehensive PDF manipulation toolkit...</description>
<location>project</location>
</skill>
</available_skills>

Invocation method:

bash
# Official designed invocation method
npx openskills read pdf

OpenSkills fully follows Anthropic's official design, maintaining compatibility.

4. Progressive Loading ​

Core advantage of the skill system: Load on demand, keep context concise.

CLI implementation:

bash
# Load skill content only when needed
npx openskills read pdf
# Output: Complete content of SKILL.md to standard output

MCP's challenge:

If implemented with MCP, it would need:

  • Server to manage skill list
  • Implement on-demand loading logic
  • Handle context management

Whereas CLI naturally supports progressive loading.


MCP's Applicable Scenarios ​

The problems MCP solves are different from the skill system:

Problems MCP SolvesExamples
Real-time API callsCalling OpenAI API, database queries
Dynamic toolsCalculators, data transformation services
Remote service integrationGit operations, CI/CD systems
State managementTools that need to maintain server state

These scenarios require servers and protocols, and MCP is the correct choice.


Skill System vs MCP: Not a Competitive Relationship ​

Core viewpoint: MCP and the skill system solve different problems, not an either-or choice.

Skill System Positioning ​

[Static Instructions] → [SKILL.md] → [File System] → [CLI Loading]

Applicable scenarios:

  • Operation guides and best practices
  • Documentation and reference materials
  • Static scripts and templates
  • Configuration that needs version control

MCP Positioning ​

[Dynamic Tools] → [MCP Server] → [Protocol Calls] → [Real-time Responses]

Applicable scenarios:

  • Real-time API calls
  • Database queries
  • Remote services that need state
  • Complex calculations and transformations

Complementary Relationship ​

OpenSkills doesn't reject MCP, but focuses on skill loading:

AI Agents
  ├─ Skill System (OpenSkills CLI) → Load static instructions
  └─ MCP Tools → Call dynamic services

They are complementary, not substitutes.


Practical Examples: When to Use Which? ​

Example 1: Calling Git Operations ​

❌ Not suitable for the skill system:

  • Git operations are dynamic and require real-time interaction
  • Depends on Git server state

✅ Suitable for MCP:

bash
# Call through MCP tool
git:checkout(branch="main")

Example 2: PDF Processing Guide ​

❌ Not suitable for MCP:

  • Operation guides are static
  • No server needed to run

✅ Suitable for the skill system:

bash
# Load through CLI
npx openskills read pdf
# Output: Detailed PDF processing steps and best practices

Example 3: Database Query ​

❌ Not suitable for the skill system:

  • Need to connect to database
  • Results are dynamic

✅ Suitable for MCP:

bash
# Call through MCP tool
database:query(sql="SELECT * FROM users")

Example 4: Code Review Guidelines ​

❌ Not suitable for MCP:

  • Review guidelines are static documentation
  • Need version control

✅ Suitable for the skill system:

bash
# Load through CLI
npx openskills read code-review
# Output: Detailed code review checklist and examples

Future: Fusion of MCP and Skill System ​

Possible Evolution Directions ​

MCP + Skill System:

bash
# Skills referencing MCP tools
npx openskills read pdf-tool

# SKILL.md content
This skill requires using MCP tools:

1. Use mcp:pdf-extract to extract text
2. Use mcp:pdf-parse to parse structure
3. Use the scripts provided by this skill to process results

Advantages:

  • Skills provide high-level instructions and best practices
  • MCP provides underlying dynamic tools
  • Combined, they're more powerful

Current Stage ​

OpenSkills chose CLI because:

  1. The skill system is already a mature file system design
  2. CLI implementation is simple and highly universal
  3. No need to wait for various agents to implement MCP support

Lesson Summary ​

OpenSkills's core reasons for choosing CLI over MCP:

Core Reasons ​

  • ✅ Skills are static files: No server needed, file system storage
  • ✅ Stronger universality: All agents can use it, doesn't depend on MCP protocol
  • ✅ Aligns with official design: Anthropic's skill system is inherently a file system design
  • ✅ Zero-config deployment: No server needed, ready to use

MCP vs Skill System ​

MCPSkill System (CLI)
Dynamic toolsStatic instructions
Requires serverPure file system
Real-time APIDocumentation and scripts
Needs protocol supportZero integration cost

Not Competition, But Complementarity ​

  • MCP solves dynamic tool problems
  • Skill system solves static instruction problems
  • The two can be used together

Further Reading ​


Appendix: Source Code Reference ​

Click to expand source code locations

Last updated: 2026-01-24

FunctionFile PathLine Numbers
CLI entrysrc/cli.ts39-80
Read commandsrc/commands/read.ts1-50
AGENTS.md generationsrc/utils/agents-md.ts23-93

Key design decisions:

  • CLI approach: Load skills through npx openskills read <name>
  • File system storage: Skills stored in .claude/skills/ or .agent/skills/
  • Universal compatibility: Output XML format completely consistent with Claude Code