Cursor 扩展 API 允许以编程方式注册和管理 MCP 服务器,而无需直接修改 mcp.json 文件。对于需要动态配置 MCP 服务器的企业环境、上手/导入工具或 MDM 系统,这尤其实用。

概览

MCP Extension API 让你可以:
  • 以编程方式注册 MCP 服务器
  • 同时支持 HTTP/SSE 和 stdio 传输方式
  • 使用与 mcp.json 相同的配置模式
  • 动态管理服务器注册
这个 API 适用于需要:
  • 以编程方式部署 MCP 配置
  • 将 MCP 设置集成到入职流程中
  • 通过企业工具管理 MCP 服务器
  • 避免手动修改 mcp.json

API 参考

vscode.cursor.mcp.registerServer

注册一个 MCP 服务器,让 Cursor 能与其通信。 函数签名:
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;
      
      /**
       * 注册一个 MCP 服务器,以便 Cursor 扩展可以与其通信。
       *
       * 服务器可以通过 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 端点地址
  • 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': '你的 API 密钥',
      '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'
    }
  });
}