Skip to main content
DeerFlow supports two types of extensions: Skills (specialized agent workflows) and MCP Servers (external context providers). Both are configured through config.yaml and extensions_config.json.

Configuration Files

config.yaml

Skills Directory: Configure where skills are located and how they’re mounted in sandboxes

extensions_config.json

Enable/Disable State: Control which skills and MCP servers are active

Skills Configuration

Skills are specialized workflows and prompts that enhance agent capabilities for specific tasks.

Directory Configuration (config.yaml)

config.yaml
string
Path to the skills directory on the host machine.
  • Can be absolute (/home/user/skills) or relative (../skills)
  • Relative paths are resolved from the current working directory
  • If not specified, defaults to ../skills relative to the backend directory
string
default:"/mnt/skills"
Path where skills are mounted inside the sandbox container.The agent uses this path to access skills in both local and Docker sandboxes.

Skills Directory Structure

Enable/Disable Skills (extensions_config.json)

Control which skills are active:
extensions_config.json
Default Behavior: If a skill is not listed in extensions_config.json, it’s enabled by default for public and custom categories.

Programmatic Access

Check if a skill is enabled:

MCP (Model Context Protocol) Configuration

MCP servers provide external context, tools, and data sources to agents. DeerFlow supports three transport types:

stdio

Local process communication via stdin/stdout

HTTP

RESTful HTTP communication

SSE

Server-Sent Events for streaming

Configuration (extensions_config.json)

All MCP servers are configured in extensions_config.json:
extensions_config.json

Common Fields

boolean
default:"true"
required
Whether this MCP server is active. Set to false to temporarily disable.
string
required
Transport protocol: stdio, http, or sse
string
Human-readable description of what this MCP server provides

stdio Transport

For local processes that communicate via stdin/stdout:
string
required
Executable command to start the MCP server (e.g., npx, python, /usr/bin/my-server)
array
Command-line arguments passed to the command
object
Environment variables for the MCP server process.Values starting with $ are resolved from the host environment:

HTTP Transport

For RESTful HTTP-based MCP servers:
string
required
Base URL of the MCP server
object
HTTP headers sent with requests. Supports environment variable resolution with $VAR_NAME.
object
OAuth configuration for automatic token management. See OAuth Configuration below.

SSE (Server-Sent Events) Transport

For streaming MCP servers using Server-Sent Events:
SSE servers use the same fields as HTTP servers.

OAuth Configuration

For HTTP and SSE transports, DeerFlow can automatically manage OAuth tokens:
boolean
default:"true"
Enable OAuth token management
string
required
OAuth token endpoint URL
string
default:"client_credentials"
OAuth grant type: client_credentials or refresh_token
string
OAuth client ID (supports $VAR_NAME for environment variables)
string
OAuth client secret (supports $VAR_NAME)
string
OAuth refresh token (for refresh_token grant type, supports $VAR_NAME)
string
OAuth scope (space-separated list of permissions)
string
OAuth audience (provider-specific, e.g., Auth0)
string
default:"access_token"
Field name containing the access token in the token response
string
default:"token_type"
Field name containing the token type in the token response
string
default:"expires_in"
Field name containing the expiry duration (in seconds) in the token response
string
default:"Bearer"
Default token type when missing in the token response
integer
default:"60"
Refresh the token this many seconds before expiry to avoid race conditions
object
Additional form parameters sent to the token endpoint

OAuth Grant Types

Most common for server-to-server authentication:

Environment Variable Resolution

Both env fields (for stdio) and OAuth configuration support environment variable resolution:
Set these variables in your environment:
If a referenced environment variable is not set, DeerFlow will raise a ValueError during configuration loading.

Programmatic Access

Examples

Official MCP Servers

Custom Skills Example

Create a custom skill:
  1. Create skill directory:
  2. Create SKILL.md:
    skills/custom/my-skill/SKILL.md
  3. Enable in extensions_config.json:

Troubleshooting

Ensure all referenced environment variables are set:
Verify the command is available:
Check the skills path configuration:
Check OAuth configuration:
  • Verify token_url is correct
  • Ensure client_id and client_secret are set
  • Check scope matches provider requirements
  • Review provider’s OAuth documentation

Next Steps

Memory Configuration

Set up the memory system

Creating Skills

Build custom skills