Skip to main content

Configuration

SLOP MCP uses KDL (KDL Document Language) for configuration files. This guide covers everything you need to know about configuring your MCPs.

Configuration Scopes

SLOP MCP supports three configuration scopes, loaded in order of precedence:

ScopeFilePurpose
Local.slop-mcp.local.kdlPersonal overrides, gitignored
Project.slop-mcp.kdlShared project config, committed
User~/.config/slop-mcp/config.kdlGlobal user defaults

Using Scopes

# Add to project config (default)
slop-mcp mcp add my-mcp npx my-mcp

# Add to local config (gitignored)
slop-mcp mcp add -l my-secret-mcp npx secret-mcp

# Add to user config (global)
slop-mcp mcp add -u my-global-mcp npx global-mcp

# Or use --scope explicitly
slop-mcp mcp add --scope=local my-mcp npx my-mcp

KDL Syntax

Basic MCP Definition

mcp "my-mcp" {
transport "stdio"
command "npx"
args "my-mcp-package"
}

Transport Types

stdio (default)

For command-line MCPs that communicate via stdin/stdout:

mcp "filesystem" {
transport "stdio"
command "npx"
args "@anthropic/filesystem-mcp" "/allowed/path"
}

streamable (HTTP)

For HTTP-based MCPs with streaming support:

mcp "figma" {
transport "streamable"
url "https://mcp.figma.com/mcp"
}

sse (Server-Sent Events)

For MCPs using SSE transport:

mcp "my-sse-mcp" {
transport "sse"
url "https://example.com/mcp/sse"
}

Environment Variables

Pass environment variables to stdio MCPs:

mcp "my-mcp" {
transport "stdio"
command "node"
args "server.js"
env {
API_KEY "secret-key"
DEBUG "true"
}
}

Multiple Arguments

mcp "filesystem" {
transport "stdio"
command "npx"
args "@anthropic/filesystem-mcp" "/path/one" "/path/two"
}

Full Example

Here's a complete .slop-mcp.kdl with multiple MCPs:

// Math and calculation tools
mcp "math-mcp" {
transport "stdio"
command "npx"
args "@anthropic/math-mcp"
}

// File system access (restricted paths)
mcp "filesystem" {
transport "stdio"
command "npx"
args "@anthropic/filesystem-mcp" "./src" "./docs"
}

// Figma design integration
mcp "figma" {
transport "streamable"
url "https://mcp.figma.com/mcp"
}

// Dart project management
mcp "dart" {
transport "streamable"
url "https://mcp.dartai.com/mcp"
}

// Custom Python MCP
mcp "my-analyzer" {
transport "stdio"
command "python"
args "-m" "my_analyzer.server"
env {
PYTHONPATH "/path/to/modules"
}
}

Configuration Precedence

When the same MCP is defined in multiple scopes, local takes precedence:

  1. .slop-mcp.local.kdl (highest priority)
  2. .slop-mcp.kdl
  3. ~/.config/slop-mcp/config.kdl (lowest priority)

This lets you override project settings locally without modifying committed files.

Viewing Effective Configuration

# See all loaded MCPs and their sources
slop-mcp mcp list

# Output shows source scope
MCPs:
math-mcp (stdio) from project - connected, 5 tools
my-secret (stdio) from local - connected, 3 tools
global-util (stdio) from user - connected, 2 tools

Tips

Gitignore Local Config

Add to your .gitignore:

.slop-mcp.local.kdl

Validate Config

# Attempt to load config and show any errors
slop-mcp mcp list

Environment Variable Expansion

Environment variables in KDL values are expanded:

mcp "my-mcp" {
transport "stdio"
command "node"
args "server.js"
env {
API_KEY "${MY_API_KEY}" // Expands from environment
}
}

Next Steps