Skip to main content

mcps.yml

MCP (Model Context Protocol) servers provide tool capabilities for AI Agents. The system supports three transport types: stdio (subprocess), streamableHttp (HTTP endpoint), and sse (SSE endpoint).

Full Example

servers:
# Stdio — launches a subprocess via command line
- id: "github-mcp"
name: "GitHub"
type: "stdio"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}"
description: "Manage GitHub Issues, PRs, repos, etc."

# streamableHttp — connects to an HTTP MCP endpoint
- id: "open-websearch"
name: "Open WebSearch"
type: "streamableHttp"
url: "http://localhost:3000"
description: "Multi-engine web search via HTTP"

# Self-hosted streamableHttp — npx starts the process, then connects to url
- id: "my-service"
name: "My MCP Service"
type: "streamableHttp"
command: "npx"
args: ["-y", "my-mcp-server"]
url: "http://localhost:3000/api/mcp"
description: "Self-hosted MCP with custom API path"

The dashboard ships with builtin tools for file access (read_only/read_write) and shell execution, so you usually only need to add servers for external capabilities. Below are the commonly used ones; secrets are passed as ${ENV_NAME} placeholders instead of being hardcoded.

Servernpx packageUse it forRequired env
GitHub@modelcontextprotocol/server-githubIssues / PRs / repos / code search on GitHubGITHUB_PERSONAL_ACCESS_TOKEN
Open WebSearchopen-websearchMulti-engine web search (Google / Bing / DuckDuckGo)optional DEFAULT_SEARCH_ENGINE
Desktop Commander@wonderwhy-er/desktop-commanderTerminal control + file editing (community, third-party)
CurseForgecurseforge-mcpSearch mods, browse files, download URLs on CurseForgeCURSEFORGE_API_KEY
Pendulumpendulum-mcp-dispatcherIn-game Minecraft control & debugging via the Pendulum modstarts with /pendulum mcp start in-game

Ready-to-paste YAML (add to the servers: list):

servers:
# GitHub — stdio
- id: "github-mcp"
name: "GitHub"
type: "stdio"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_PERSONAL_ACCESS_TOKEN}"
description: "Manage GitHub Issues, PRs, repos, code search"

# Web search — streamableHttp (self-hosted)
- id: "open-websearch"
name: "Open WebSearch"
type: "streamableHttp"
command: "npx"
args: ["-y", "open-websearch"]
url: "http://localhost:3000"
env:
DEFAULT_SEARCH_ENGINE: "bing"
description: "Multi-engine web search"

# Terminal / file editing — stdio (optional, community)
- id: "desktop-commander"
name: "Desktop Commander"
type: "stdio"
command: "npx"
args: ["-y", "@wonderwhy-er/desktop-commander"]
env: {}
description: "Terminal operations and file editing"

# CurseForge API — stdio
- id: "curseforge"
name: "CurseForge API"
type: "stdio"
command: "npx"
args: ["-y", "curseforge-mcp"]
env:
CURSEFORGE_API_KEY: "${CURSEFORGE_API_KEY}"
description: "Search CurseForge mods and browse files"

# Pendulum in-game MCP — stdio (requires the Pendulum mod)
- id: "pendulum"
name: "Pendulum"
type: "stdio"
command: "npx"
args: ["-y", "pendulum-mcp-dispatcher"]
env: {}
description: "In-game Minecraft control and debugging"
tip

Only enable the servers you actually need — every external server adds tools to the model context and increases token usage.

Field Reference

FieldTypeDescription
idstringUnique identifier, referenced in agents.yml
namestringDisplay name
typestringTransport: stdio / streamableHttp / sse
commandstringLaunch command (required for stdio; optional for streamableHttp/sse for self-hosting)
argsstring[]Command-line arguments
urlstringHTTP/SSE endpoint URL (required for streamableHttp/sse)
envmapEnvironment variables (supports ${ENV} placeholder)
descriptionstringDescription text

Transport Types

stdio

Launches the MCP server as a subprocess, communicating through stdin/stdout (JSON-RPC over lines):

type: "stdio"
command: "npx" # or "uvx", "node", "python"
args: ["-y", "package-name", "arg1"]
Prerequisites
  • npx: Requires Node.js 18+
  • uvx: Requires Python 3.10+ and the uv toolchain

streamableHttp

Connects to an HTTP MCP endpoint via POST JSON-RPC. Supports both standard JSON responses and SSE (text/event-stream) responses:

# Direct connection (service already running)
type: "streamableHttp"
url: "http://localhost:3000"

# Self-hosted (auto-launch via npx, then connect)
type: "streamableHttp"
command: "npx"
args: ["-y", "open-websearch"]
url: "http://localhost:3000"

Self-hosting flow: the system runs the command to start the process, waits up to 10 seconds for the HTTP endpoint to become available (via HEAD probe), then proceeds with tool discovery and connection.

sse

Same as streamableHttp — connects via HTTP POST to an SSE-capable endpoint:

type: "sse"
url: "http://localhost:3000/mcp"

Caching

MCP tool discovery results are cached to cache/mcp_cache.json. On restart, cached tools are loaded immediately; missing or failed servers are re-detected in the background. Use the Refresh button in the MCP UI panel to force re-discovery.

Security Recommendations

MCP TypeRecommendation
FilesystemUse builtin read_only / read_write tools instead — they include path sandboxing
ShellThe builtin shell_exec tool has safety checks and user approval for dangerous commands