日本語
ドキュメント
MCPサーバー

MCP サーバー

ローカルおよびリモートの MCP ツールを追加します。

Model Context Protocol(MCP)を使用して、OpenCode に外部ツールを追加できます。OpenCode はローカルサーバーとリモートサーバーの両方をサポートしています。

追加されると、MCP ツールは組み込みツールと一緒に LLM で自動的に利用可能になります。


注意事項

MCP サーバーを使用すると、コンテキストに追加されます。多くのツールがある場合、これはすぐに蓄積されます。そのため、どの MCP サーバーを使用するか慎重に選択することをお勧めします。

MCP サーバーはコンテキストに追加されるため、有効にするものを慎重に選択してください。

GitHub MCP サーバーなど、特定の MCP サーバーは多くのトークンを追加する傾向があり、コンテキスト制限を簡単に超える可能性があります。


有効化

OpenCode 設定mcp で MCP サーバーを定義できます。各 MCP に一意の名前を追加します。LLM にプロンプトを送信する際に、その名前で MCP を参照できます。

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "name-of-mcp-server": {
      // ...
      "enabled": true,
    },
    "name-of-other-mcp-server": {
      // ...
    },
  },
}

enabledfalse に設定してサーバーを無効にすることもできます。設定から削除せずに一時的にサーバーを無効にしたい場合に便利です。


リモートデフォルトの上書き

組織は .well-known/opencode エンドポイントを通じてデフォルトの MCP サーバーを提供できます。これらのサーバーはデフォルトで無効になっている場合があり、ユーザーは必要なものを選択して有効にできます。

組織のリモート設定から特定のサーバーを有効にするには、ローカル設定に enabled: true を追加します:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

ローカル設定の値はリモートのデフォルトを上書きします。詳細は設定の優先順位を参照してください。


ローカル

MCP オブジェクト内で type"local" に設定してローカル MCP サーバーを追加します。

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-local-mcp-server": {
      "type": "local",
      // または ["bun", "x", "my-mcp-command"]
      "command": ["npx", "-y", "my-mcp-command"],
      "enabled": true,
      "environment": {
        "MY_ENV_VAR": "my_env_var_value",
      },
    },
  },
}

command はローカル MCP サーバーを起動するコマンドです。環境変数のリストも渡すことができます。

例えば、テスト用の @modelcontextprotocol/server-everything (opens in a new tab) MCP サーバーを追加する方法は以下の通りです。

opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mcp_everything": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
    },
  },
}

使用するには、プロンプトに use the mcp_everything tool を追加します。

use the mcp_everything tool to add the number 3 and 4

オプション

ローカル MCP サーバーを設定するためのすべてのオプションは以下の通りです。

オプション必須説明
typeStringはいMCP サーバー接続タイプ、"local" である必要があります。
commandArrayはいMCP サーバーを実行するコマンドと引数。
environmentObjectサーバー実行時に設定する環境変数。
enabledBoolean起動時に MCP サーバーを有効または無効にします。
timeoutNumberMCP サーバーからツールを取得するタイムアウト(ミリ秒)。デフォルトは 5000(5 秒)。

リモート

type"remote" に設定してリモート MCP サーバーを追加します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-remote-mcp": {
      "type": "remote",
      "url": "https://my-mcp-server.com",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer MY_API_KEY"
      }
    }
  }
}

url はリモート MCP サーバーの URL で、headers オプションでヘッダーのリストを渡すことができます。


オプション

オプション必須説明
typeStringはいMCP サーバー接続タイプ、"remote" である必要があります。
urlStringはいリモート MCP サーバーの URL。
enabledBoolean起動時に MCP サーバーを有効または無効にします。
headersObjectリクエストと一緒に送信するヘッダー。
oauthObjectOAuth 認証設定。下記の OAuth セクションを参照。
timeoutNumberMCP サーバーからツールを取得するタイムアウト(ミリ秒)。デフォルトは 5000(5 秒)。

OAuth

OpenCode はリモート MCP サーバーの OAuth 認証を自動的に処理します。サーバーが認証を必要とする場合、OpenCode は:

  • 401 レスポンスを検出して OAuth フローを開始
  • サーバーがサポートしている場合、**動的クライアント登録(RFC 7591)**を使用
  • 将来のリクエストのためにトークンを安全に保存

自動

ほとんどの OAuth 対応 MCP サーバーでは、特別な設定は必要ありません。リモートサーバーを設定するだけです:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-oauth-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp"
    }
  }
}

サーバーが認証を必要とする場合、OpenCode は最初に使用しようとしたときに認証を促します。そうでない場合は、opencode mcp auth <server-name>手動でフローをトリガーできます。


事前登録

MCP サーバープロバイダーからクライアント資格情報がある場合は、設定できます:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-oauth-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "clientId": "{env:MY_MCP_CLIENT_ID}",
        "clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
        "scope": "tools:read tools:execute"
      }
    }
  }
}

認証

手動で認証をトリガーしたり、資格情報を管理したりできます。

特定の MCP サーバーで認証:

opencode mcp auth my-oauth-server

すべての MCP サーバーとその認証ステータスを一覧表示:

opencode mcp list

保存された資格情報を削除:

opencode mcp logout my-oauth-server

mcp auth コマンドは認証のためにブラウザを開きます。認証後、OpenCode はトークンを ~/.local/share/opencode/mcp-auth.json に安全に保存します。


OAuth の無効化

サーバーの自動 OAuth を無効にしたい場合(例:API キーを使用するサーバーの場合)、oauthfalse に設定します:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-api-key-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": false,
      "headers": {
        "Authorization": "Bearer {env:MY_API_KEY}"
      }
    }
  }
}

OAuth オプション

オプション説明
oauthObject | falseOAuth 設定オブジェクト、または OAuth 自動検出を無効にする false
clientIdStringOAuth クライアント ID。提供されない場合、動的クライアント登録が試行されます。
clientSecretString認可サーバーが必要とする場合の OAuth クライアントシークレット。
scopeString認可時にリクエストする OAuth スコープ。

デバッグ

リモート MCP サーバーの認証に失敗した場合、以下のコマンドで問題を診断できます:

# すべての OAuth 対応サーバーの認証ステータスを表示
opencode mcp auth list
 
# 特定のサーバーの接続と OAuth フローをデバッグ
opencode mcp debug my-oauth-server

mcp debug コマンドは現在の認証ステータスを表示し、HTTP 接続をテストし、OAuth ディスカバリーフローを試行します。


管理

MCP は OpenCode でツールとして利用可能で、組み込みツールと並んでいます。そのため、他のツールと同様に OpenCode 設定で管理できます。


グローバル

これは、グローバルに有効または無効にできることを意味します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp-foo": false
  }
}

glob パターンを使用して、一致するすべての MCP を無効にすることもできます。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp*": false
  }
}

ここでは glob パターン my-mcp* を使用してすべての MCP を無効にしています。


エージェントごと

多数の MCP サーバーがある場合、グローバルで無効にしてエージェントごとにのみ有効にしたい場合があります。これを行うには:

  • ツールとしてグローバルに無効にします。
  • エージェント設定で、MCP サーバーをツールとして有効にします。
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command"],
      "enabled": true
    }
  },
  "tools": {
    "my-mcp*": false
  },
  "agent": {
    "my-agent": {
      "tools": {
        "my-mcp*": true
      }
    }
  }
}

Glob パターン

glob パターンはシンプルな正規表現グロビングパターンを使用します:

  • * は 0 個以上の任意の文字にマッチ(例:"my-mcp*"my-mcp_searchmy-mcp_list などにマッチ)
  • ? は正確に 1 文字にマッチ
  • その他のすべての文字はリテラルにマッチ

MCP サーバーツールはサーバー名をプレフィックスとして登録されるため、サーバーのすべてのツールを無効にするには単に以下を使用します:

"mymcpservername_*": false

以下は一般的な MCP サーバーの例です。他のサーバーを文書化したい場合は PR を提出できます。


Sentry

Sentry MCP サーバー (opens in a new tab)を追加して、Sentry プロジェクトと課題を操作します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sentry": {
      "type": "remote",
      "url": "https://mcp.sentry.dev/mcp",
      "oauth": {}
    }
  }
}

設定を追加した後、Sentry で認証します:

opencode mcp auth sentry

これによりブラウザウィンドウが開き、OAuth フローを完了して OpenCode を Sentry アカウントに接続します。

認証後、プロンプトで Sentry ツールを使用して課題、プロジェクト、エラーデータをクエリできます。

Show me the latest unresolved issues in my project. use sentry

Context7

Context7 MCP サーバー (opens in a new tab)を追加してドキュメントを検索します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp"
    }
  }
}

無料アカウントに登録している場合は、API キーを使用してより高いレート制限を取得できます。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "headers": {
        "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
      }
    }
  }
}

ここでは CONTEXT7_API_KEY 環境変数が設定されていることを前提としています。

プロンプトに use context7 を追加して Context7 MCP サーバーを使用します。

Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7

または、AGENTS.md に以下のような内容を追加できます。

AGENTS.md
When you need to search docs, use `context7` tools.

Grep by Vercel

Grep by Vercel (opens in a new tab) MCP サーバーを追加して GitHub のコードスニペットを検索します。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gh_grep": {
      "type": "remote",
      "url": "https://mcp.grep.app"
    }
  }
}

MCP サーバーを gh_grep と名付けたので、プロンプトに use the gh_grep tool を追加してエージェントに使用させることができます。

What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool

または、AGENTS.md に以下のような内容を追加できます。

AGENTS.md
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.