Skip to main content
You can add external tools to OpenCode using the Model Context Protocol, or MCP. OpenCode supports both local and remote servers. Once added, MCP tools are automatically available to the LLM alongside built-in tools.
MCP servers add to your context, so you want to be careful with which ones you enable. Certain MCP servers, like the GitHub MCP server, tend to add a lot of tokens and can easily exceed the context limit.

Enable MCP Servers

You can define MCP servers in your OpenCode Config under mcp. Add each MCP with a unique name. You can refer to that MCP by name when prompting the LLM.
opencode.jsonc
You can also disable a server by setting enabled to false. This is useful if you want to temporarily disable a server without removing it from your config.

Overriding Remote Defaults

Organizations can provide default MCP servers via their .well-known/opencode endpoint. These servers may be disabled by default, allowing users to opt-in to the ones they need. To enable a specific server from your organization’s remote config, add it to your local config with enabled: true:
opencode.json
Your local config values override the remote defaults. See config precedence for more details.

Local MCP Servers

Add local MCP servers using type set to "local" within the MCP object.
opencode.jsonc
The command is how the local MCP server is started. You can also pass in a list of environment variables as well. For example, here’s how you can add the test @modelcontextprotocol/server-everything MCP server:
opencode.jsonc
And to use it I can add use the mcp_everything tool to my prompts.

Local MCP Options

Here are all the options for configuring a local MCP server:

Remote MCP Servers

Add remote MCP servers by setting type to "remote".
opencode.json
The url is the URL of the remote MCP server and with the headers option you can pass in a list of headers.

Remote MCP Options

OAuth Authentication

OpenCode automatically handles OAuth authentication for remote MCP servers. When a server requires authentication, OpenCode will:
1

Detect authentication requirement

Detect the 401 response and initiate the OAuth flow.
2

Dynamic client registration

Use Dynamic Client Registration (RFC 7591) if supported by the server.
3

Store tokens securely

Store tokens securely for future requests in ~/.local/share/opencode/mcp-auth.json.

Automatic OAuth

For most OAuth-enabled MCP servers, no special configuration is needed. Just configure the remote server:
opencode.json
If the server requires authentication, OpenCode will prompt you to authenticate when you first try to use it. If not, you can manually trigger the flow with opencode mcp auth <server-name>.

Pre-registered OAuth Clients

If you have client credentials from the MCP server provider, you can configure them:
opencode.json

Authenticating

You can manually trigger authentication or manage credentials. Authenticate with a specific MCP server:
List all MCP servers and their auth status:
Remove stored credentials:
The mcp auth command will open your browser for authorization. After you authorize, OpenCode will store the tokens securely.

Disabling OAuth

If you want to disable automatic OAuth for a server (e.g., for servers that use API keys instead), set oauth to false:
opencode.json

OAuth Options

Debugging OAuth

If a remote MCP server is failing to authenticate, you can diagnose issues with:
The mcp debug command shows the current auth status, tests HTTP connectivity, and attempts the OAuth discovery flow.

Managing MCP Tools

Your MCPs are available as tools in OpenCode, alongside built-in tools. So you can manage them through the OpenCode config like any other tool.

Global Tool Management

You can enable or disable MCP tools globally:
opencode.json
You can also use a glob pattern to disable all matching MCPs:
opencode.json
Here we are using the glob pattern my-mcp* to disable all MCPs.

Per-Agent Tool Management

If you have a large number of MCP servers you may want to only enable them per agent and disable them globally. To do this:
1

Disable globally

Disable it as a tool globally in the tools section.
2

Enable per agent

In your agent config, enable the MCP server as a tool.
opencode.json

Glob Patterns

The glob pattern uses simple regex globbing patterns:
  • * matches zero or more of any character (e.g., "my-mcp*" matches my-mcp_search, my-mcp_list, etc.)
  • ? matches exactly one character
  • All other characters match literally
MCP server tools are registered with server name as prefix, so to disable all tools for a server simply use:

Examples

Below are examples of some common MCP servers. You can submit a PR if you want to document other servers.

Sentry

Add the Sentry MCP server to interact with your Sentry projects and issues.
opencode.json
After adding the configuration, authenticate with Sentry:
This will open a browser window to complete the OAuth flow and connect OpenCode to your Sentry account. Once authenticated, you can use Sentry tools in your prompts to query issues, projects, and error data.

Context7

Add the Context7 MCP server to search through docs.
opencode.json
If you have signed up for a free account, you can use your API key and get higher rate-limits:
opencode.json
Here we are assuming that you have the CONTEXT7_API_KEY environment variable set. Add use context7 to your prompts to use Context7 MCP server.
Alternatively, you can add something like this to your AGENTS.md:
AGENTS.md

Grep by Vercel

Add the Grep by Vercel MCP server to search through code snippets on GitHub.
opencode.json
Since we named our MCP server gh_grep, you can add use the gh_grep tool to your prompts to get the agent to use it.
Alternatively, you can add something like this to your AGENTS.md:
AGENTS.md

FAQ

There’s no hard limit, but keep in mind that each MCP server adds to your context window. We recommend being selective about which servers you enable to avoid exceeding context limits.
Yes! You can create custom MCP servers that implement the Model Context Protocol. Check the MCP specification for details on building your own server.
By default, MCP servers have a 5-second timeout. If a server times out, OpenCode will mark it as failed. You can increase the timeout in your config using the timeout property.
You can list all available MCP tools and their status using opencode mcp list. This shows connected servers and their available tools.