Skip to main content

Overview

CrewAI agents can be extended with five distinct capability types, each serving a different purpose. Understanding when to use each one — and how they work together — is key to building effective agents.

Tools

Callable functions — give agents the ability to take action. Web searches, file operations, API calls, code execution.

MCP Servers

Remote tool servers — connect agents to external tool servers via the Model Context Protocol. Same effect as tools, but hosted externally.

Apps

Platform integrations — connect agents to SaaS apps (Gmail, Slack, Jira, Salesforce) via CrewAI’s platform. Runs locally with a platform integration token.

Skills

Domain expertise — inject instructions, guidelines, and reference material into agent prompts. Skills tell agents how to think.

Knowledge

Retrieved facts — provide agents with data from documents, files, and URLs via semantic search (RAG). Knowledge gives agents what to know.

The Key Distinction

The most important thing to understand: these capabilities fall into two categories.

Action Capabilities (Tools, MCPs, Apps)

These give agents the ability to do things — call APIs, read files, search the web, send emails. At execution time, all three resolve into the same internal format (BaseTool instances) and appear in a unified tool list the agent can call.
from crewai import Agent
from crewai_tools import SerperDevTool, FileReadTool

agent = Agent(
    role="Researcher",
    goal="Find and compile market data",
    backstory="Expert market analyst",
    tools=[SerperDevTool(), FileReadTool()],  # Local tools
    mcps=["https://mcp.example.com/sse"],     # Remote MCP server tools
    apps=["gmail", "google_sheets"],           # Platform integrations
)

Context Capabilities (Skills, Knowledge)

These modify the agent’s prompt — injecting expertise, instructions, or retrieved data before the agent starts reasoning. They don’t give agents new actions; they shape how agents think and what information they have access to.
from crewai import Agent

agent = Agent(
    role="Security Auditor",
    goal="Audit cloud infrastructure for vulnerabilities",
    backstory="Expert in cloud security with 10 years of experience",
    skills=["./skills/security-audit"],        # Domain instructions
    knowledge_sources=[pdf_source, url_source], # Retrieved facts
)

When to Use What

You need…UseExample
Agent to search the webToolstools=[SerperDevTool()]
Agent to call a remote API via MCPMCPsmcps=["https://api.example.com/sse"]
Agent to send emails via GmailAppsapps=["gmail"]
Agent to follow specific proceduresSkillsskills=["./skills/code-review"]
Agent to reference company docsKnowledgeknowledge_sources=[pdf_source]
Agent to search the web AND follow review guidelinesTools + SkillsUse both together

Combining Capabilities

In practice, agents often use multiple capability types together. Here’s a realistic example:
from crewai import Agent
from crewai_tools import SerperDevTool, FileReadTool, CodeInterpreterTool

# A fully-equipped research agent
researcher = Agent(
    role="Senior Research Analyst",
    goal="Produce comprehensive market analysis reports",
    backstory="Expert analyst with deep industry knowledge",

    # ACTION: What the agent can DO
    tools=[
        SerperDevTool(),         # Search the web
        FileReadTool(),          # Read local files
        CodeInterpreterTool(),   # Run Python code for analysis
    ],
    mcps=["https://data-api.example.com/sse"],  # Access remote data API
    apps=["google_sheets"],                      # Write to Google Sheets

    # CONTEXT: What the agent KNOWS
    skills=["./skills/research-methodology"],    # How to conduct research
    knowledge_sources=[company_docs],            # Company-specific data
)

Comparison Table

FeatureToolsMCPsAppsSkillsKnowledge
Gives agent actions
Modifies prompt
Requires codeYesConfig onlyConfig onlyMarkdown onlyConfig only
Runs locallyYesDependsYes (with env var)N/AYes
Needs API keysPer toolPer serverIntegration tokenNoEmbedder only
Set on Agenttools=[]mcps=[]apps=[]skills=[]knowledge_sources=[]
Set on Crewskills=[]knowledge_sources=[]

Deep Dives

Ready to learn more about each capability type?

Tools

Create custom tools, use the 75+ OSS catalog, configure caching and async execution.

MCP Integration

Connect to MCP servers via stdio, SSE, or HTTP. Filter tools, configure auth.

Skills

Build skill packages with SKILL.md, inject domain expertise, use progressive disclosure.

Knowledge

Add knowledge from PDFs, CSVs, URLs, and more. Configure embedders and retrieval.