モデルコンテキストプロトコル (MCP)
MCP とは?
Model Context Protocol (MCP) を使用すると、Cursor を外部ツールやデータソースに接続できます。MCP サーバーは、カスタマイズする ページからインストール・管理するか、mcp.json で設定できます。
なぜ MCP を使用するのですか?
MCP は Cursor を外部システムやデータに接続します。プロジェクト構造を繰り返し��明する代わりに、ツールと直接連携できます。
MCP サーバーは、stdout に出力するか HTTP エンドポイントを提供できる任意の言語で作成できます。たとえば、Python、JavaScript、Go などです。
公式プラグインは Cursor Marketplace でブラウズできます。コミュニティ製プラグインと MCP サーバーは cursor.directory でブラウズできます。
仕組み
MCP サーバーは、プロトコルを通じて機能を提供し、Cursor を外部ツールやデータソースに接続します。
Cursor は 3 つのトランスポート方式をサポートします。
| トランスポート | 実行環境 | デプロイ | ユーザー | 入力 | 認証 |
|---|---|---|---|---|---|
stdio | ローカル | Cursor が管理 | 単一ユーザー | シェルコマンド | 手動 |
SSE | ローカル/リモート | サーバーとしてデプロイ | 複数ユーザー | SSE エンドポイントの URL | OAuth |
Streamable HTTP | ローカル/リモート | サーバーとしてデプロイ | 複数ユーザー | HTTP エンドポイントの URL | OAuth |
プロトコルと拡張機能のサポート
Cursor は以下の MCP プロトコルの機能と拡張機能をサポートしています:
| 機能 | サポート | 説明 |
|---|---|---|
| ツール | サポート済み | AI モデルが実行できる関数 |
| プロンプト | サポート済み | ユーザー向けのテンプレート化されたメッセージやワークフロー |
| Resources | サポート済み | 読み取りや参照ができる構造化データソース |
| Roots | サポート済み | URI またはファイルシステムの境界に関する、サーバー主導の問い合わせ |
| Elicitation | サポート済み | ユーザーに追加情報を求める、サーバー主導のリクエスト |
| Apps (extension) | サポート済み | 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" } } }}// MCP server using HTTP or SSE - runs on a server{ "mcpServers": { "server-name": { "url": "http://localhost:3000/mcp", "headers": { "API_KEY": "value" } } }}リモートサーバー向けの静的 OAuth
OAuth を使用する MCP サーバーでは、動的クライアント登録の代わりに、mcp.json で静的 OAuth クライアント認証情報を指定できます。次の場合に使用します。
- MCP プロバイダーから固定のクライアント ID (必要に応じてクライアント シークレットも) が提供される
- プロバイダーでリダイレクト 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 クライアントシークレット (プロバイダーが confidential client を使用する場合) |
| 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 - デスクトップ app:
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 をサポートしていません。リモート サーバーでは、代わりにシェル プロファイルまたはシステム環境で設定した環境変数とともに 設定の補間 を使用してください。
Extension API の使用
MCP サーバーをプログラム経由で登録するために、Cursor では mcp.json ファイルを変更せずに動的な設定を行える Extension API を提供しています。これは特に、エンタープライズ環境や自動化されたセットアップ ワークフローで役立ちます。
Extension 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 キーとトークンは設定を通じて渡します。
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 許可リスト
エンタープライズ管理者は、ユーザーが実行できる MCP サーバーを Cursor ダッシュボードで制御できます。チームが実行できるサーバーとツールを設定するには、Team Settings > MCP Configuration を開きます。許可リストに追加すると、MCP 設定が承認されます。サーバーが配布またはインストールされるわけではありません。
MCP 許可リストを使って、許可するサーバーを定義します。
- コマンドエントリ では、コマンドパターンに基づいてローカルの
stdioMCP サーバーを許可します。 - URL エントリ では、URL エントリパターンに基づいてリモートの HTTP/SSE MCP サーバーを許可します。
- ツール許可リスト では、許可されたサーバーからどのツールを自動実行できるかを制限します。ツール許可リストを空のままにすると、そのサーバーのすべてのツールが許可されます。
ネットワーク制御
リモートMCPのURLは、設定されたURLエントリパターンで制限されます。
ローカルのコマンドベースMCPサーバーは、サーバーごとのネットワークモードに従います。
- すべて許可: アウトバウンドのネットワークアクセスを許可します。
- 許可リスト: リストにある宛先のみを許可します。
- すべて拒否: アウトバウンドのネットワークアクセスをブロックします。
- サンドボックスなし: コマンドまたはネットワークのサンドボックス化を行わずに実行します。
ユーザー MCP 拡張機能
管理者は、管理者が定義したコマンドまたは URL パターンの対象外でも、ユーザーが自身の MCP サーバーを設定できるようにできます。管理者定義のパターンに一致しないユーザー MCP については、User MCP Network Denylist で一致するネットワーク接続先をブロックできます。
チャットで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の権限は必要最小限に制限してください
- 機密システムに接続する前にサーバーコードを確認してください
- サーバーを隔離された環境で実行することを検討してください