Cursor 확장 API는 mcp.json 파일을 직접 건드리지 않고 MCP 서버를 등록하고 관리할 수 있는 프로그래밍 방식의 접근을 제공해. 특히 엔터프라이즈 환경, 온보딩 도구, 또는 MCP 서버를 동적으로 구성해야 하는 MDM 시스템에서 유용해.

개요

MCP Extension API로 다음을 할 수 있어:
  • MCP 서버를 프로그래밍 방식으로 등록하기
  • HTTP/SSE와 stdio 전송 방식을 모두 지원하기
  • mcp.json과 동일한 구성 스키마 사용하기
  • 서버 등록을 동적으로 관리하기
이 API는 다음이 필요한 조직에 유용해:
  • MCP 구성을 프로그래밍 방식으로 배포하기
  • 온보딩 워크플로우에 MCP 설정 통합하기
  • 엔터프라이즈 도구로 MCP 서버 관리하기
  • mcp.json을 수동으로 수정하지 않기

API Reference

vscode.cursor.mcp.registerServer

Cursor가 통신할 MCP 서버를 등록해. Signature:
vscode.cursor.mcp.registerServer(config: ExtMCPServerConfig): void
Parameters:
  • config: ExtMCPServerConfig - 서버 설정 객체

vscode.cursor.mcp.unregisterServer

이전에 등록한 MCP 서버를 등록 해제해. Signature:
vscode.cursor.mcp.unregisterServer(serverName: string): void
Parameters:
  • 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 your-token-here',
      'X-API-Key': 'your-api-key'
    }
  }
});

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'
    }
  });
}