MCP (モデル コンテキスト プロトコル) は、外部ツールやデータ ソースを言語モデル (ファイル システム、ドキュメント、タスク トラッカー、バグ トラッカー、または独自のサービス) に接続する方法を記述するオープン プロトコルです。各ツールをエージェントに組み込む代わりに、個別の MCP サーバーをセットアップすると、エージェントは標準スキームに従ってそのサーバーと通信します。
OpenCode は、子プロセスによって起動されるローカル サーバーと、HTTP 経由でアクセスできるリモート サーバーの両方で、すぐに使える MCP をサポートします。重要な点は、MCP レイヤー全体がモデル プロバイダー側ではなく、OpenCode 自体の側で実装されるということです。したがって、DeepSeek はリクエスト内の通常の機能として MCP ツールを受け取り、プロトコル自体について何も知る必要はありません。
この記事では、ローカル サーバーとリモート サーバーを追加する方法、認証を取得する方法、トークンに溺れないようにする方法、および DeepSeek モデルを使用する際の考慮事項について説明します。
必要なもの
機能するには次の 3 つのものが必要です。
- OpenCode がインストールされています。 エージェントがまだ構成されていない場合、DeepSeek のインストールと接続の手順については別のメモで説明しました。
- Node.js および npx。 npm パッケージとして配布されるローカル MCP サーバーに必要です。
- アクセス キー。 認証が必要なリモート サーバーのみ。 Context7 のようなパブリック サーバーはキーなしで動作しますが、制限は低くなります。
仕組み
サーバーは、OpenCode 設定の mcp ブロックに記述されます。各サーバーには、リクエスト内で指定できる一意の名前があります。サーバー ツールはこの名前プレフィックスを使用して登録されるため、異なるサーバー間で競合が発生することはありません。
接続後は、ファイルの読み取り、コードの編集、コマンドの実行など、組み込みツールとともに MCP ツールをモデルで使用できるようになります。 DeepSeek の観点からは、これらはエージェントが呼び出すことができる通常の関数です。そのため、バンドルはモデル API 側で MCP サポートなしで機能します。
ローカルサーバー
このメカニズムを理解する最も簡単な方法は、テスト サーバー @modelcontextprotocol/server-everything を使用することです。これをプロジェクト ルートの opencode.json ファイルに追加してみましょう。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"]
}
}
}
コマンド フィールドは、サーバー起動コマンドと配列形式のその引数です。 OpenCode を再起動すると、ツールがセッションに表示され、明示的に要求できるようになります。
используй инструмент mcp_everything, чтобы сложить 3 и 4
ローカル サーバーには、さらにいくつかの便利なフィールドがあります。 environment はプロセス環境変数を設定し、cwd – 作業ディレクトリ、timeout – リクエストのタイムアウトをミリ秒単位で設定します。enabled では、サーバーを構成から削除せずに一時的に無効にすることができます。
リモートサーバー
リモート サーバーの方が便利です。ローカルで何も実行する必要がなく、URL 経由でアクセスできます。良い例は Context7 で、最新のライブラリ ドキュメントを検索します。キーなしで接続します。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}
無料の Context7 アカウントをお持ちの場合、重要なのは制限を上げることです。ヘッダーは headers ブロックを通じて送信され、キー自体を環境変数に保持すると便利です。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}
{env:NAME} 構造は、設定をロードするときに環境変数の値を置き換えるため、キーがリポジトリに保存されることはありません。エージェントを開始する前に、変数をターミナルでエクスポートする必要があります。
もう 1 つの便利なパブリック サーバーは Vercel の Grep です。GitHub でコード例を検索してください。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}
OAuth による認証
一部のリモート サーバーでは OAuth が必要です。 OpenCode は、このシナリオ自体を実行できます。つまり、401 応答を認識し、承認をトリガーし、トークンを保存します。 Sentry の場合は、サーバーを指定するだけです。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}
この後、認証を手動で開始できます。ブラウザが開きます。
opencode mcp auth sentry
サービスコマンドは日常業務にも役立ちます。 opencode mcp リスト はサーバーと認証ステータスを表示し、opencode mcp ログアウト は保存されたトークンを削除し、opencode mcp デバッグ は特定のサーバーのネットワーク接続と OAuth 検出をチェックします。トークンはローカルのファイル ~/.local/share/opencode/mcp-auth.json に保存されます。
サーバーが OAuth ではなく通常の API キーを使用する場合は、自動認証を無効にする必要があります。無効にしないと、OpenCode は不要な場所に OAuth を渡そうとします。
{
"$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}"
}
}
}
}
ツール管理
MCP ツールはコンテキストを消費します。各サーバーはその機能の説明をリクエストに追加します。したがって、ほとんど必要のないサーバーは停止しておいた方がよいでしょう。これは、ツール ブロックを使用してグローバルに実行できます。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["npx", "-y", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["npx", "-y", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp*": false
}
}
my-mcp* テンプレートは、名前がこのプレフィックスで始まるすべてのツールを無効にします。多数のサーバーがある場合は、それらをグローバルに無効にして、特定のエージェントに対してローカルで有効にする方が合理的です。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}
ディープシークの機能
DeepSeek との接続が機能するのは、モデルが関数の呼び出しをサポートしており、そのための MCP ツールが通常の関数のように見えるためです。 DeepSeek 自体は MCP サーバーに接続しませんし、接続すべきではありません。接続は OpenCode によって処理されます。
注意すべきこと:
- モデルの選択。 日常的な編集や小規模な編集には、ディープシークフラッシュ で十分です。多くのコンテキストを頭の中に入れてツールを慎重に選択する必要があるタスクの場合は、deepseek-v4-pro を使用することをお勧めします。
- コンテキスト サイズ: GitHub MCP のような重いサーバーは大量のトークンを追加するため、大規模なプロジェクトと組み合わせると、簡単に制限に達します。特定のタスクの期間のみ有効にします。
- コスト ツール スキーマはリクエストごとに送信されるため、含まれるサーバーの数が増えるほど、各反復のコストが高くなります。プロバイダに直接支払うため、追加のサーバーが請求書に表示されます。
- エージェント用のヒント。 モデルの創意工夫に依存せず、リクエスト内でサーバーに直接名前を付けるか、AGENTS.md にルールを記述する方が安全です。
エージェント自体が必要なソースにアクセスするための AGENTS.md のルールの例:
Когда нужно посмотреть документацию библиотеки, используй инструменты context7.
実践的なレシピ
日常的な作業には通常、2 つのサーバーで十分です。ドキュメント用の Context7 と、特定のタスク用の 1 つの狭いサーバー (たとえば、エラー分析用の Sentry またはコード例の検索用の Grep) です。それ以外はオフにしておき、必要に応じてオンにするのが良いでしょう。
私の手順は次のとおりです。サーバーを opencode.json に追加し、OpenCode を再起動し、opencode mcp list でリストを確認してから、サーバーを明示的に言及するテスト質問をします。ツールが呼び出されない場合は、opencode mcp デバッグ とタイムアウトに注目します。遅いサーバーでは、割り当てられた 30 秒以内に応答する時間がない可能性があります。
注意すべきこと
実践的なポイントをいくつか。 MCP サーバーは信頼できるコードです。ローカル サーバーはユーザーの権限でユーザーのマシン上で実行され、ユーザーはリクエスト データをリモート サーバーに送信します。したがって、インターネットからランダム サーバーをインストールする場合は、サードパーティの CLI と同じ注意を払って行う必要があります。
キーとトークンを環境変数に保持し、リポジトリにコミットしないでください。 OpenCode は OAuth トークンをローカルに保存しますが、共有マシン上でもこれを考慮する価値があります。アクセスが必要なくなった場合、opencode mcp logout によってトークンが削除されます。
そしてもう 1 つ、すべてを一度にオンにしないでください。 MCP はコンテキストにツールを追加します。コンテキストはお金と応答の質です。本当に必要なサーバーは 2 台か 3 台で、念のため 10 台接続するよりもはるかにうまく機能します。
リンク
https://opencode.ai/docs/mcp-servers/
https://opencode.ai/docs/config/
https://modelcontextprotocol.io/
https://github.com/upstash/context7
https://mcp.sentry.dev
https://mcp.grep.app
https://github.com/anomalyco/opencode
ソース
https://opencode.ai/docs/mcp-servers/
https://modelcontextprotocol.io/
https://api-docs.deepseek.com/
https://api-docs.deepseek.com/quick_start/agent_integrations/opencode
Leave a Reply