MCP とは?

Model Context Protocol (MCP) は、Cursor が外部のツールやデータソースに接続するための仕組みだよ。

なぜ MCP を使う?

MCP は Cursor を外部システムやデータに接続する。プロジェクト構成を毎回説明する代わりに、ツールと直接連携できる。 stdout に出力するか、HTTP エンドポイントを提供できる言語ならどれでも MCP サーバーを書ける — Python、JavaScript、Go など。

仕組み

MCP サーバーはプロトコル経由で機能を公開し、Cursor を外部ツールやデータソースに接続する。 Cursor は 3 種類のトランスポート方式をサポートしてる:
トランスポート実行環境デプロイユーザー入力認証
stdioローカルCursor が管理単一ユーザーシェルコマンド手動
SSEローカル/リモートサーバーとしてデプロイ複数ユーザーSSE エンドポイントの URLOAuth
Streamable HTTPローカル/リモートサーバーとしてデプロイ複数ユーザーHTTP エンドポイントの URLOAuth

プロトコル対応

Cursor は次の MCP プロトコル機能に対応してる:
機能対応状況説明
Tools対応AI モデルが実行する関数
Prompts対応ユーザー向けのテンプレートメッセージとワークフロー
Resources対応読み取り・参照可能な構造化データソース
Roots対応操作対象となる URI/ファイルシステム境界へのサーバー起点の照会
Elicitation対応ユーザーに追加情報を求めるサーバー起点のリクエスト

MCP サーバーのインストール方法

ワンクリックでインストール

コレクションから MCP サーバーをインストールして、OAuth で認証しよう。

mcp.json を使う

カスタム MCP サーバーを JSON ファイルで構成する:
{
  "mcpServers": {
    "server-name": {
      "command": "npx",
      "args": ["-y", "mcp-server"],
      "env": {
        "API_KEY": "value"
      }
    }
  }
}

STDIO サーバーの設定

STDIO サーバー(ローカルのコマンドラインサーバー)の場合、mcp.json で次のフィールドを設定してね:
FieldRequiredDescriptionExamples
typeYesサーバーの接続タイプ"stdio"
commandYesサーバー実行ファイルを起動するコマンド。システムの PATH にあるか、フルパスを指定してね。"npx", "node", "python", "docker"
argsNoコマンドに渡す引数の配列["server.py", "--port", "3000"]
envNoサーバー用の環境変数{"API_KEY": "${input:api-key}"}
envFileNo追加の環境変数を読み込むための環境ファイルのパス".env", "${workspaceFolder}/.env"

Extension API の使用

プログラムによる MCP サーバー登録のために、Cursor は mcp.json ファイルを変更せずに動的に設定できる拡張 API を提供している。これは特にエンタープライズ環境や自動セットアップのワークフローで有用。

MCP Extension API Reference

vscode.cursor.mcp.registerServer() を使ってプログラムから MCP サーバーを登録する方法を学ぼう

設定の場所

Project Configuration

プロジェクト専用のツールには、プロジェクト内に .cursor/mcp.json を作成しよう。

Global Configuration

どこでも使えるツールには、ホームディレクトリに ~/.cursor/mcp.json を作成しよう。

コンフィグの補間

mcp.json の値に変数を使える。Cursor は次のフィールドで変数を解決する: commandargsenvurlheaders サポートされる構文:
  • ${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 の使い方

Composer Agent は、必要に応じて Available Tools に表示されている MCP ツールを自動で使うよ。特定のツール名を指定するか、やりたいことをそのまま伝えてね。ツールの有効化・無効化は設定から切り替えられる。

ツールの切り替え

チャット画面からそのまま MCP ツールを有効/無効にできる。ツール一覧でツール名をクリックすると切り替わる。無効にしたツールはコンテキストに読み込まれず、Agent からも利用できない。

ツールの承認

デフォルトでは、Agent は MCP ツールを使う前に承認を求める。引数を確認するには、ツール名の横にある矢印をクリック。

自動実行

Agent が確認なしで 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",
      },
    ],
  };
});
実装の詳細はこのexample serverを参照してね。Cursor は返された画像をチャットに添付するよ。モデルが画像をサポートしていれば、それらを解析する。

セキュリティ上の考慮事項

MCP サーバーをインストールするときは、次のセキュリティ対策を意識してね:
  • 配布元の確認: 信頼できる開発者やリポジトリからの MCP サーバーだけをインストールする
  • 権限の確認: サーバーがアクセスするデータや API をチェックする
  • API キーの最小化: 必要最小限の権限に絞った制限付き API キーを使う
  • コードの監査: 重要な連携では、サーバーのソースコードをレビューする
MCP サーバーは外部サービスにアクセスしたり、きみの代わりにコードを実行できることを忘れないで。インストール前に、そのサーバーが何をするのか必ず理解しておこう。

実際の例

MCP を実際に活用する具体例は、開発ワークフローに Linear、Figma、ブラウザツールを統合する方法を紹介している Web Development ガイド を参照してね。

FAQ

MCP サーバーは、Cursor を Google Drive や Notion などの外部ツールやサービスに接続して、ドキュメントや要件をコーディングのワークフローに取り込めるようにするものだよ。
MCP のログを見るには: 1. Cursor で Output パネルを開く (Ctrl+Shift+U) 2. ドロップダウンから「MCP Logs」を選ぶ 3. 接続エラー、認証エラー、サーバークラッシュを確認する ログにはサーバーの初期化、ツール呼び出し、エラーメッセージが出るよ。
できる!削除せずにオン/オフを切り替えられるよ: 1. Settings を開く ( Ctrl+Shift+J) 2. Features → Model Context Protocol に進む 3. 任意のサーバーのトグルをクリックして有効/無効を切り替える 無効化したサーバーは読み込まれず、チャットにも出てこないよ。 トラブルシューティングやツールの整理に便利。
MCP サーバーが失敗した場合: - Cursor がチャットにエラーメッセージを表示する - ツール呼び出しは失敗としてマークされる - 操作を再試行するか、詳細はログを確認できる - 他の MCP サーバーは通常どおり動作を継続する Cursor はサーバーの障害を分離して、1つのサーバーが他に影響しないようにしてるよ。
npm ベースのサーバーの場合: 1. 設定からサーバーを削除 2. npm キャッシュをクリア: npm cache clean --force 3. 最新版を取得するためにサーバーを再追加 カスタムサーバーの場合は、ローカルファイルを更新して Cursor を再起動してね。
使えるけど、セキュリティのベストプラクティスに従ってね: - 秘密情報は環境変数を使い、ハードコードしない - 機密性の高いサーバーは stdio トランスポートでローカル実行する - API キーの権限は必要最小限に絞る - 機密システムに接続する前にサーバーコードをレビューする - サーバーを分離環境で実行することを検討する