Skip to main content
Cursor Extension API を使うと、mcp.json を直接編集せずに MCP サーバーの登録と管理をプログラムで行える。これは、エンタープライズ環境、オンボーディングツール、MDM システムなど、MCP サーバーを動的に構成する必要があるケースで特に有用。

概要

MCP Extension API でできること:
  • MCP サーバーをプログラムで登録する
  • HTTP/SSE と stdio の両方のトランスポートに対応する
  • mcp.json と同一の設定スキーマを使う
  • サーバー登録を動的に管理する
この API は次のようなニーズがある組織に便利:
  • MCP 構成をプログラムでデプロイする
  • MCP のセットアップをオンボーディングのワークフローに組み込む
  • エンタープライズツール経由で MCP サーバーを管理する
  • mcp.json の手動編集を避ける

API リファレンス

vscode.cursor.mcp.registerServer

Cursor が通信できる MCP サーバーを登録する。 シグネチャ:
vscode.cursor.mcp.registerServer(config: ExtMCPServerConfig): void
パラメータ:
  • config: ExtMCPServerConfig - サーバーの構成オブジェクト

vscode.cursor.mcp.unregisterServer

以前に登録した MCP サーバーを登録解除する。 シグネチャ:
vscode.cursor.mcp.unregisterServer(serverName: string): void
パラメータ:
  • serverName: string - 登録解除するサーバー名

型定義

型チェックには次の TypeScript 定義を使って:
declare module 'vscode' {
  export namespace cursor {
    export namespace mcp {
      export interface StdioServerConfig {
        name: string;
        server: {
          command: string;
          args: string[];
          env: Record<string, string>;
        }
      }

      export interface RemoteServerConfig {
        name: string;
        server: {
          url: string;
          /**
           * このサーバーへのすべてのリクエストに含める任意の HTTP ヘッダー(例: 認証用)。
           * キーはヘッダー名、値はヘッダー値。
           */
          headers?: Record<string, string>;
        }
      }

      export type ExtMCPServerConfig = StdioServerConfig | RemoteServerConfig;
      
      /**
       * Cursor 拡張機能が通信できる MCP サーバーを登録する。
       *
       * サーバーは HTTP(S)(SSE/ストリーミング HTTP)**または**ローカルの
       * stdio プロセスとして公開できる。
       */
      export const registerServer: (config: ExtMCPServerConfig) => void;
      export const unregisterServer: (serverName: string) => void;
    }
  }
}

設定の種類

HTTP/SSE サーバーの設定

HTTP または Server‑Sent Events で動作するサーバー向け:
interface RemoteServerConfig {
  name: string;
  server: {
    url: string;
    headers?: Record<string, string>;
  }
}
プロパティ:
  • name: サーバーの一意の識別子
  • server.url: HTTP エンドポイントのURL
  • server.headers(任意): 認証などに使用するHTTPヘッダー

Stdio サーバー設定

標準入出力で通信するローカルサーバー向け:
interface StdioServerConfig {
  name: string;
  server: {
    command: string;
    args: string[];
    env: Record<string, string>;
  }
}
プロパティ:
  • name: サーバーの一意の識別子
  • server.command: 実行コマンド
  • server.args: コマンドライン引数
  • server.env: 環境変数

HTTP/SSE サーバー

認証ありのリモート MCP サーバーを登録する:
vscode.cursor.mcp.registerServer({
  name: 'my-remote-server',
  server: {
    url: 'https://api.example.com/mcp',
    headers: {
      'Authorization': 'Bearer ここにトークンを入力',
      'X-API-Key': 'ここにAPIキーを入力'
    }
  }
});

Stdio サーバー

ローカルの MCP サーバーを登録する:
vscode.cursor.mcp.registerServer({
  name: 'my-local-server',
  server: {
    command: 'python',
    args: ['-m', 'my_mcp_server'],
    env: {
      'API_KEY': 'your-api-key',
      'DEBUG': 'true'
    }
  }
});

Node.js サーバー

Node.js ベースの MCP サーバーを登録する:
vscode.cursor.mcp.registerServer({
  name: 'nodejs-server',
  server: {
    command: 'npx',
    args: ['-y', '@company/mcp-server'],
    env: {
      'NODE_ENV': 'production',
      'CONFIG_PATH': '/path/to/config'
    }
  }
});

サーバーの管理

サーバーの登録解除

// 以前に登録したサーバーを登録解除する
vscode.cursor.mcp.unregisterServer('my-remote-server');

条件付きの登録

// 未登録の場合のみ登録する
if (!isServerRegistered('my-server')) {
  vscode.cursor.mcp.registerServer({
    name: 'my-server',
    server: {
      url: 'https://api.example.com/mcp'
    }
  });
}