mcp_<server>_<tool>. The agent can then call those tools exactly like any built-in tool, with no extra configuration required in the agent itself.
Tool names are normalized to
[a-z0-9_-] and prefixed with the server name to avoid conflicts. If normalization is lossy (e.g. the original name contained special characters), a short hash is appended to keep names unique.Global configuration
MCP is disabled by default. Enable it and define your servers undertools.mcp in config.json.
Master switch for MCP. When
false, no MCP servers are started regardless of individual server configs.A map of server names to server configuration objects. Each key becomes the server identifier used in tool names (
mcp_<key>_<tool>).Per-server configuration
Whether this specific server should be started. Set to
false to temporarily disable a server without removing its config.Transport type:
stdio, sse, or http. If omitted, the transport is auto-detected:urlis set →ssecommandis set →stdio
The executable to launch for
stdio transport (e.g. npx, python, ./my-server).Command-line arguments passed to
command for stdio transport.Environment variables injected into the
stdio server process. Use this to pass API keys without hard-coding them in args.Path to a
.env-format file whose variables are merged into the stdio server’s environment. Lines are KEY=value; lines starting with # are comments.The endpoint URL for
sse or http transport (e.g. https://mcp.example.com/mcp).HTTP headers sent with every request to
sse or http servers. Use this to pass Authorization tokens or API keys.Transport types
- stdio
- HTTP / SSE
The server runs as a child process on the same machine. Operator OS spawns the process, communicates over stdin/stdout, and manages its lifecycle.This is the most common transport for locally-installed MCP servers distributed as npm packages, Python scripts, or compiled binaries.Use
env or env_file to pass secrets to the subprocess without exposing them in args:Example servers
The following examples are taken directly fromconfig.example.json. Copy the relevant block into the tools.mcp.servers object in your config.json.
filesystem — local file access via stdio
filesystem — local file access via stdio
Gives the agent read/write access to a directory tree via the official MCP filesystem server.Replace
/tmp with the directory you want the agent to access. You can add multiple paths as additional arguments.context7 — up-to-date library documentation
context7 — up-to-date library documentation
Fetches current documentation for libraries and frameworks from Context7’s hosted MCP endpoint.Obtain an API key at context7.com.
github — repository and issue management
github — repository and issue management
Exposes GitHub operations (file access, pull requests, issues, search) to the agent.Create a personal access token with the scopes your agent needs (
repo, read:org, etc.).brave-search — Brave web search via MCP
brave-search — Brave web search via MCP
Routes web search requests through the Brave Search API via an MCP wrapper.This is an alternative to the built-in
web_search tool — useful if you want to route all web search through a single MCP-managed process.postgres — SQL query execution
postgres — SQL query execution
Lets the agent run read queries against a PostgreSQL database.Replace the connection string with your database credentials. Grant the database user only the privileges the agent needs.
Using environment variables for secrets
Avoid putting secrets directly inargs where they may appear in process listings. Use env for inline key/value pairs, or env_file to point to a file outside the config:
.env file format:
env and env_file are merged, with env taking precedence.
How tools become available
When Operator OS starts with MCP enabled:- Each enabled server is launched (stdio) or connected to (SSE/HTTP).
- The MCP client performs the protocol handshake and fetches the server’s tool list.
- Each tool is wrapped in an
MCPTooladapter and registered in the globalToolRegistry. - The LLM’s system prompt is updated with the new tool definitions.