The Model Context Protocol (MCP) is an open standard that lets agents talk to external tools and data sources: APIs, databases, browsers, and services like GitHub or Linear. Connect an MCP server and its tools become callable by Geoff Code, subject to the same approval prompts as built-in tools.

Where servers are configured

Geoff Code reads MCP servers from mcp.json files at three scopes. On a name collision, later scopes override earlier ones: All three files use the same wrapper:
Project-root and project-local stdio servers spawn commands at session start. Only enable them in repositories you trust.
The fastest way to add or edit a server is the /mcp-config slash command inside the TUI: it asks which scope you want, shows you the current contents, and writes the entry for you. You can also edit the files directly.

stdio servers (local processes)

A stdio server is a local command Geoff Code launches and talks to over stdin/stdout. The minimal entry needs only command; transport is inferred, so you can omit it.
For project-root .mcp.json, stdio commands run from the project root by default, and relative cwd values resolve against the directory containing .mcp.json.

HTTP servers (remote)

A remote server needs a url. For servers that authenticate with a static bearer token, reference it indirectly through an environment variable rather than inlining the secret:
Servers that authenticate with OAuth take no token field: see Authentication below.

Optional fields

Both transports accept these common fields: The schema of record is McpServerStdioConfigSchema / McpServerHttpConfigSchema in the Geoff Code source.

Authentication

For MCP servers that require OAuth, run /mcp-config login <server> (or just /mcp-config and follow the prompt). Geoff Code prints the authorization URL and completes the callback for you. Surface the URL exactly as printed: it contains state and PKCE parameters that break if edited.

Reloading

MCP servers load at session start. After editing mcp.json, start a new session with /new or restart geoff for the change to take effect.

Security

  • MCP tool calls go through the same approval mechanism as every other tool: you confirm each one (except in yolo / auto modes).
  • Tool outputs are marked to mitigate prompt-injection attacks; still, only connect trusted servers and review high-risk operations before approving.
  • Never commit secrets as literals in mcp.json. Use bearerTokenEnvVar for HTTP servers; if a stdio entry must inline one in env, treat that file as sensitive.

Plugins

Bundle MCP servers and executable tools as installable packages.

Skills

Teach Geoff Code your team’s conventions and workflows.