Model Context Protocol (MCP)
MCP とは?
Model Context Protocol (MCP) を使用すると、Cursor を外部ツールやデータソースに接続できます。MCP サーバーは、カスタマイズする ページからインストール・管理するか、mcp.json で設定できます。
MCP を使用する理由
MCP は Cursor を外部システムやデータに接続します。プロジェクトの構造を何度も説明する代わりに、ツールと直接連携できます。
stdout に出力するか、HTTP エンドポイントを提供できる任意の言語 (Python、JavaScript、Go など) で MCP サーバーを作成できます。
公式プラグインは Cursor Marketplace でブラウズできます。コミュニティ製プラグインと MCP サーバーは、cursor.directory をブラウズしてください。
仕組み
MCP サーバーはプロトコルを通じて機能を公開し、Cursor を外部ツールやデータソースに接続します。
Cursor は 3 種類のトランスポート方式をサポートしています。
| トランスポート | 実行環境 | デプロイ | ユーザー | 入力 | 認証 |
|---|---|---|---|---|---|
stdio | ローカル | Cursor が管理 | 単一ユーザー | シェルコマンド | 手動 |
SSE | ローカル/リモート | サーバーとしてデプロイ | 複数ユーザー | SSE エンドポイントの URL | OAuth |
Streamable HTTP | ローカル/リモート | サーバーとしてデプロイ | 複数ユーザー | HTTP エンドポイントの URL | OAuth |
プロトコルと拡張機能のサポート
Cursor は、以下の MCP プロトコルの機能と拡張機能をサポートしています。
| 機能 | サポート状況 | 説明 |
|---|---|---|
| ツール | 対応 | AI モデルが実行する関数 |
| プロンプト | 対応 | ユーザー向けのテンプレート化されたメッセージとワークフロー |
| リソース | 対応 | 読み取り・参照可能な構造化データソース |
| ルート | 対応 | URI またはファイルシステムの境界に関する、サーバーからの問い合わせ |
| 情報収集 | 対応 | ユーザーに追加情報を求める、サーバーからのリクエスト |
| Apps (拡張機能) | 対応 | MCP ツールから返されるインタラクティブな UI ビュー |
MCP アプリ
Cursor は MCP Apps 拡張機能をサポートしています。MCP ツールは、標準のツール出力に加えて、インタラクティブな UI を返すことができます。
MCP Apps はプログレッシブエンハンスメントに対応しています。ホストがアプリ UI をレンダリングできない場合でも、同じツールを通常の MCP レスポンスで利用できます。
MCP サーバーのインストール
ワンクリックインストール
公式プラグインは、Cursor Marketplace の カスタマイズする からワンクリックでインストールできます。カスタムサーバーは mcp.json で設定します。コミュニティ製プラグインと MCP サーバーは、cursor.directory で探してください。マーケットプレイスのエントリで「Add to Cursor」をクリックすると、インストールして OAuth 認証を行えます。
チーム管理者は、チームマーケットプレイス を通じて MCP サーバーを配布することもできます。チームで配布されたサーバーは、個人用およびワークスペースの MCP サーバーとともに カスタマイズする に表示されます。
mcp.json を使用する
JSON ファイルでカスタム MCP サーバーを設定します。
{ "mcpServers": { "server-name": { "command": "npx", "args": ["-y", "mcp-server"], "env": { "API_KEY": "value" } } }}{ "mcpServers": { "server-name": { "command": "python", "args": ["mcp-server.py"], "env": { "API_KEY": "value" } } }}// HTTP または SSE を使用する MCP サーバー(サーバー上で実行){ "mcpServers": { "server-name": { "url": "http://localhost:3000/mcp", "headers": { "API_KEY": "value" } } }}リモートサーバー向け静的 OAuth
OAuth を使用する MCP サーバーでは、動的クライアント登録の代わりに、mcp.json で静的 OAuth クライアント認証情報を指定できます。次の場合に使用します。
- MCP プロバイダーから固定の Client ID (および任意で Client Secret) が提供されている
- プロバイダーでリダイレクト URL の許可リスト登録が必要である (例: Figma、Linear)
- プロバイダーが OAuth 2.0 Dynamic Client Registration をサポートしていない
url を使用するリモートサーバーのエントリに auth オブジェクトを追加します。
{ "mcpServers": { "oauth-server": { "url": "https://api.example.com/mcp", "auth": { "CLIENT_ID": "your-oauth-client-id", "CLIENT_SECRET": "your-client-secret", "scopes": ["read", "write"] } } }}| フィールド | 必須 | 説明 |
|---|---|---|
| CLIENT_ID | 対応 | MCPプロバイダーの OAuth 2.0 クライアントID |
| CLIENT_SECRET | 非対応 | OAuth 2.0 クライアントシークレット (プロバイダーが機密クライアントを使用する場合) |
| scopes | 非対応 | リクエストする OAuth スコープ。省略した場合、Cursor は /.well-known/oauth-authorization-server を使用して scopes_supported を検出します |
固定リダイレクト URL
Cursor では、MCP サーバー用に固定の OAuth リダイレクト URL を使用します。ユーザーが認証する各サーフェスに対してコールバックを登録してください。
https://www.cursor.com/agents/mcp/oauth/callbackhttp://localhost:8787/callback- Web と Cursor エージェント:
https://www.cursor.com/agents/mcp/oauth/callback - デスクトップアプリ:
http://localhost:8787/callback
MCP プロバイダーの OAuth アプリを設定する際、ユーザーが Web とデスクトップの両方から認証する場合は、両方の URL を許可済みのリダイレクト URI として登録してください。サーバーは OAuth の state パラメーターによって識別されるため、これらのリダイレクト URL はすべての MCP サーバーで使用できます。
設定の補間との組み合わせ
auth の値では、他のフィールドと同じ補間を使用できます。
{ "mcpServers": { "oauth-server": { "url": "https://api.example.com/mcp", "auth": { "CLIENT_ID": "${env:MCP_CLIENT_ID}", "CLIENT_SECRET": "${env:MCP_CLIENT_SECRET}" } } }}Client ID と Client Secret はハードコードせず、環境変数を使用してください。
STDIO サーバー設定
STDIO サーバー (ローカルのコマンドラインサーバー) では、mcp.json で以下のフィールドを設定します。
| フィールド | 必須 | 説明 | 例 |
|---|---|---|---|
| type | 対応 | サーバー接続タイプ | "stdio" |
| command | 対応 | サーバーの実行可能ファイルを起動するコマンド。システムのパス上にあるか、フルパスを指定する必要があります。 | "npx", "node", "python", "docker" |
| args | 非対応 | コマンドに渡す引数の配列 | ["server.py", "--port", "3000"] |
| env | 非対応 | サーバーの環境変数 | {"API_KEY": "${env:api-key}"} |
| envFile | 非対応 | 追加の変数を読み込む環境ファイルのパス | ".env", "${workspaceFolder}/.env" |
envFile オプションは STDIO サーバーでのみ使用できます。リモートサーバー (HTTP/SSE) は envFile をサポートしていません。リモートサーバーでは、代わりにシェルプロファイルまたはシステム環境で設定した環境変数と設定の補間を使用してください。
拡張機能 API を使用する
MCP サーバーをプログラム経由で登録するために、Cursor では mcp.json ファイルを変更せずに動的に設定できる拡張機能 API を提供しています。これは、エンタープライズ環境や自動セットアップのワークフローで特に役立ちます。
拡張機能 API リファレンス
vscode.cursor.mcp.registerServer() を使用して
MCP サーバーをプログラム経由で登録する
設定ファイルの場所
プロジェクト設定
プロジェクト固有のツール用に、プロジェクト内に .cursor/mcp.json を作成します。
グローバル設定
どこでも利用できるツール用に、ホームディレクトリに ~/.cursor/mcp.json を作成します。
設定の補間
mcp.json の値で変数を使用できます。Cursor は次のフィールド内の変数を解決します:command、args、env、url、headers。
サポートされる構文:
${env:NAME}環境変数${userHome}ホームフォルダーへのパス${workspaceFolder}プロジェクトルート (.cursor/mcp.jsonを含むフォルダー)${workspaceFolderBasename}プロジェクトルート名${pathSeparator}および${/}OS のパス区切り文字
例
{ "mcpServers": { "local-server": { "command": "python", "args": ["${workspaceFolder}/tools/mcp_server.py"], "env": { "API_KEY": "${env:API_KEY}" } } }}{ "mcpServers": { "remote-server": { "url": "https://api.example.com/mcp", "headers": { "Authorization": "Bearer ${env:MY_SERVICE_TOKEN}" } } }}認証
MCP サーバーは認証に環境変数を使用します。API キーとトークンは config で渡します。
Cursor は、OAuth が必要なサーバーをサポートしています。
エンタープライズ管理者向けコントロール
MCPの配布とMCPポリシーは、それぞれ個別に設定します。チーム管理者は共有MCPサーバーを配布でき、エンタープライズ管理者はMCPポリシーを設定できます。
Team MCP の配布
共有の Team MCP サーバーは、Dashboard > Integrations & MCP で設定します。これらのサーバーは Cloud Agents で利用できます。
既存のスタンドアロン Team MCP サーバーを Agent Window、IDE、CLI で利用できるようにするには、Team MCP Servers の Add to Team Marketplace を選択します。Cursor は Cloud Agent のアクセスを中断することなく、サーバーを Default チームマーケットプレイスにリンクします。その後、チームメイトは カスタマイズする からインストールして設定できます。
MCP サーバーをマーケットプレイスにリンクしても、全員にインストールまたは有効化されるわけではありません。Dashboard > Plugins で Marketplace Access とプラグインのインストールモードを設定します。手順全体については、既存の Team MCP を移行するを参照してください。
MCP 許可リスト
エンタープライズ管理者は、Cursor ダッシュボードで、ユーザーが実行できる MCP サーバーを管理できます。Team Settings > MCP Configuration を開き、チームで実行可能なサーバーとツールを設定します。許可リストに追加すると、MCP 設定が承認されます。サーバーの配布やインストールは行われません。
MCP 許可リストで、承認済みのサーバーを定義します。
- コマンドエントリでは、コマンドパターンに基づいてローカルの
stdioMCP サーバーを承認します。 - URL エントリでは、URL エントリパターンに基づいてリモート HTTP/SSE MCP サーバーを承認します。
- ツール許可リストでは、承認済みサーバーのどのツールを自動実行できるかを制限します。ツール許可リストを空のままにすると、そのサーバーのすべてのツールが許可されます。
ネットワーク制御
リモート MCP URL は、設定された URL エントリパターンに一致するものに制限されます。
ローカルのコマンドベース MCP サーバーでは、サーバーごとにネットワークモードが適用されます。
- すべて許可: アウトバウンドネットワークアクセスを許可します。
- 許可リスト: リストにある送信先のみを許可します。
- すべて拒否: アウトバウンドネットワークアクセスをブロックします。
- サンドボックスなし: コマンドおよびネットワークのサンドボックス化を行わずに実行します。
ユーザー MCP 拡張機能
管理者は、管理者が定義したコマンドまたは URL パターンに一致しない独自の MCP サーバーを、ユーザーが設定できるようにできます。管理者定義のパターンに一致しないユーザー MCP については、ユーザー MCP ネットワーク拒否リストで、該当するネットワーク送信先をブロックできます。
チャットでMCPを使用する
Cursorは、必要に応じてAvailable Toolsに表示されているMCPツールを自動的に使用します。これにはPlan モードも含まれます。特定のツールを名前で指定するか、必要なことを説明してください。サイドバーのカスタマイズするからMCPサーバーを有効または無効にできます。
ツールの承認
デフォルトでは、CursorはMCPツールを使用する前に承認を求めます。ツール名の横にある矢印をクリックすると、引数を確認できます。
実行モード
MCP はターミナルコマンドと同じ実行モードに従います。たとえば、Auto-review モードでは、許可リストに含まれる MCP ツールはすぐに実行され、それ以外はすべて分類器によって処理されます。
ツールのレスポンス
Cursor では、チャットにレスポンスが表示され、引数とレスポンスは展開して確認できます。
コンテキストとしての画像
MCP サーバーは、スクリーンショットや図などの画像を返すことができます。Base64 エンコードした文字列として返してください。
const RED_CIRCLE_BASE64 = "/9j/4AAQSkZJRgABAgEASABIAAD/2w...";// ^ 可読性のためbase64全体を省略server.tool("generate_image", async (params) => { return { content: [ { type: "image", data: RED_CIRCLE_BASE64, mimeType: "image/jpeg", }, ], };});実装の詳細については、このサーバーの例を参照してください。Cursor は返された画像をチャットに添付します。モデルが画像に対応している場合、それらを解析します。
セキュリティに関する注意事項
MCP サーバーをインストールする際は、以下のセキュリティ対策を考慮してください。
- 提供元を確認: 信頼できる開発者やリポジトリからのみ MCP サーバーをインストールする
- 権限を確認: サーバーがアクセスするデータや API を確認する
- API キーを制限: 必要最小限の権限を持つ制限付き API キーを使用する
- コードを監査: 重要な連携では、サーバーのソースコードを確認する
MCP サーバーは外部サービスにアクセスし、ユーザーに代わってコードを実行できます。インストール前に、サーバーが何をするかを必ず理解してください。
実践例
MCP の実際の活用例:
- Xcode 連携 — Cursor を Xcode 26.3 以降に接続して、ビルド、テスト、SwiftUI プレビュー、Apple ドキュメント検索に活用
- Web 開発ガイド — Linear、Figma、ブラウザツールを開発ワークフローに連携
よくある質問
MCPサーバーは、CursorをGoogle Drive、Notionなどの外部ツールや サービスに接続し、ドキュメントや要件をコーディングワークフローに取り込みます。
MCPログを表示するには:
- Cursorで出力パネルを開きます (Cmd+Shift+UCtrl+Shift+U)
- ドロップダウンから「MCP Logs」を選択します
- 接続エラー、認証の問題、サーバーのクラッシュがないか確認します
ログには、サーバーの初期化、ツール呼び出し、エラーメッセージが表示されます。
はい。削除せずにサーバーのオンとオフを切り替えられます:
- サイドバーでカスタマイズするを開きます
- 変更したいMCPサーバーを見つけます
- トグルを使用して有効または無効にします
無効にしたサーバーは読み込まれず、チャットにも表示されません。トラブルシューティングやツールの煩雑さを減らすのに役立ちます。
MCPサーバーで障害が発生した場合:
- Cursorがチャットにエラーメッセージを表示します
- ツール呼び出しが失敗としてマークされます
- 操作を再試行するか、ログで詳細を確認できます
- 他のMCPサーバーは通常どおり動作し続けます
Cursorは、1つのサーバーの障害が他のサーバーに影響しないように分離します。
npmベースのサーバーの場合:
- カスタマイズするからサーバーを削除します
- npmキャッシュをクリアします:
npm cache clean --force - サーバーを再追加して最新バージョンを取得します
カスタムサーバーの場合は、ローカルファイルを更新してCursorを再起動します。
はい。ただし、セキュリティのベストプラクティスに従ってください:
- シークレットには環境変数を使用し、ハードコードしないでください
- 機密性の高いサーバーは
stdioトランスポートでローカル実行してください - API keyの権限は必要最小限に制限してください
- 機密システムに接続する前にサーバーコードを確認してください
- サーバーを隔離された環境で実行することを検討してください