MCP とは?

Model Context Protocol (MCP) は、Cursor が外部のツールやデータソースと接続できるようにする。

なんで MCP を使うの?

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

仕組み

MCP サーバーはプロトコルを通じて機能を公開し、Cursor を外部ツールやデータソースに接続する。 Cursor は 3 つのトランスポート方式をサポートしている:
TransportExecution environmentDeploymentUsersInputAuth
stdioローカルCursor が管理単一ユーザーシェルコマンド手動
SSEローカル/リモートサーバーとしてデプロイ複数ユーザーSSE エンドポイントの URLOAuth
Streamable HTTPローカル/リモートサーバーとしてデプロイ複数ユーザーHTTP エンドポイントの URLOAuth

プロトコル対応

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

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

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

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

mcp.json の使用

JSON ファイルでカスタム MCP サーバーを設定する:
{
  "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 リファレンス

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

設定場所

プロジェクト設定

プロジェクト専用のツール用に、プロジェクト直下に .cursor/mcp.json を作成してね。

グローバル設定

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

設定の補間(Interpolation)

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 でも利用できない。

ツールの承認

エージェントはデフォルトで MCP ツールを使う前に承認を求めるよ。引数を確認するには、ツール名の横にある矢印をクリックしてね。

自動実行

Agent が確認なしで MCP ツールを使えるように自動実行をオンにしよう。ターミナルコマンドみたいに動くよ。Yolo モードの詳しい話はここを見てね。

ツールのレスポンス

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 が実際にどう動くかの実践例は、開発ワークフローに Linear、Figma、ブラウザツールを統合する方法を紹介している Web Development ガイドをチェックしてね。

よくある質問