Skip to main content
Connect local or remote tools to Step Code through MCP (Model Context Protocol). Once a server connects, the model can call its registered tools as needed.

Connection methods

Legacy SSE transport is not supported. Plugins can also declare MCP servers; see Plugins and packages. See Migrating from other tools for importing configuration from other tools.

Add an MCP server

  1. Confirm the local command, arguments, and dependencies, or the remote URL and authentication requirements.
  2. Add a declaration under [mcp_servers.<name>] in ~/.stepcode/config.toml. See Configuration below for fields, and preserve other server declarations.
  3. Complete authentication, restart Step Code, and check the connection with /mcp.

Authentication

Read Bearer tokens from the environment running Step Code:
For OAuth services:
OAuth uses dynamic client registration, PKCE, and a local callback. Tokens are stored atomically in ~/.stepcode/.credentials.json with 0600 permissions. Model-platform login and MCP authorization use separate credentials.

Viewing servers interactively

Use /mcp for server status and loaded tool counts. States include connecting, connected, and failed. Servers with enabled = false do not appear in the list. If connection fails, check the command, environment variables, endpoint reachability, and authorization. Then request a low-risk tool call and inspect its result. Connection status checks the server connection; a tool result checks the capability you intend to use.

Tool names and filtering

Names use <server>__<tool>, with invalid characters converted to underscores. enabled_tools and disabled_tools filter tools before registration. When an allowlist is set, other tools are unavailable to the model.

Configuration

Declare servers under [mcp_servers.<name>] in global ~/.stepcode/config.toml. Project-level MCP servers are overlaid from installed plugins’ mcpServers manifests.
Replace the paths and endpoint with your service. Choose Bearer or OAuth as required; you do not need both. See Configuration files for global configuration details.

Command-line management

--url and a local command are mutually exclusive. --bearer-token-env-var is HTTP-only. --env sets stdio subprocess variables, not HTTP headers.

Security

stdio servers launch local processes; remote services receive call arguments. Returned content can also enter model context. Check the source and access scope before connecting, and disable tools you do not need. See Permissions and safety for approval rules.