Type to search the docs and updates.

Browse documentation

MCP server specs

MCP servers

Pure YAML, no markdown body, one file per server.

name: filesystem
description: Local filesystem access for the model.
type: stdio
command: npx
args:
  - -y
  - "@modelcontextprotocol/server-filesystem"
env:
  ROOT: /tmp

name is the server identifier, not the filename. It may contain package-style slashes, such as npm:@modelcontextprotocol/server-sequential.thinking. Such names are percent-encoded in YAML filenames and kept as-is in every generated config. Other spec kinds need one safe path segment, because their names become output paths.

A server needs command (stdio) or url (remote). agnostic-ai lint reports a missing one as LINT008; validate and sync do not, and some targets write a server that cannot start. See lint.

FieldRequiredDefaultDescription
nameyesnoneServer identifier and key in the generated config.
descriptionnoemptyFree-form documentation. Dropped where the target's MCP schema has no such key (Junie, Warp).
typenostdiostdio, http, sse, or ws. Remote transports write an explicit type; stdio stays implicit. A ws entry emits no server on Augment, Factory, and Qoder.
commandstdio onlynoneExecutable to launch.
argsnoemptyArgument list for the command.
envnoemptyEnvironment variables for the server.
urlhttp/sse/ws onlynoneEndpoint URL.
headersnoemptyHTTP headers for http/sse.
cwdnoemptyWorking directory for a stdio server, where supported.
timeoutnoemptyUnits vary by target: milliseconds on most.
oauthnoemptyOAuth settings. The shape is target-specific; see the target page.
disablednofalseSee disabled support by target.
rootsnoemptyList of {uri, name} objects, for targets that support MCP roots.

These fields apply only to the listed targets and are ignored elsewhere.

TargetExtra fields
Codexenv_vars, env_http_headers, http_headers_helper, auth, required, startup_timeout_sec, startup_timeout_ms, tool_timeout_sec, default_tools_approval_mode, scopes, oauth_resource, experimental_environment, enabled_tools, disabled_tools
Crushenabled_tools, disabled_tools, sessionless
Geminitrust, includeTools, excludeTools
Qodertrust, includeTools, excludeTools, alwaysAllow
KiroautoApprove, disabledTools, oauthScopes
FactorydisabledTools, connectTimeout
Claude CodealwaysLoad, headersHelper
CursorenvFile, auth
Copilot / VS CodeenvFile, dev, sandboxEnabled (VS Code file only), tools (Copilot CLI files only)
ContinueconnectionTimeout, requestOptions
OpenHandsauth: oauth, or a truthy oauth, which sets auth: "oauth" on a remote server in ~/.openhands/mcp.json

On Amp, set x-amp.includeTools. Use x-factory, x-kilo, or x-continue to override the matching top-level options for that target.

disabled support by target

Only the targets listed were checked.

TargetBehavior
Antigravity, Crush, Factory, Kiro, Qoder, WindsurfNative disabled
CodexMapped to enabled = false
Kilo Code, OpenCode, ZedMapped to "enabled": false
CopilotA disabledMcpServers entry in .github/copilot/settings.json for Copilot CLI. Stripped from both MCP files with a note; disable the server in VS Code for that half
Claude CodeMapped to project disabledMcpjsonServers in .claude/settings.json for servers emitted to .mcp.json. Import restores it
Cursor, Augment, Junie, Trae, WarpStripped with a note. Disable the server in the tool itself