Referencia de la API de extensiones
Cursor expone las API de extensiones en vscode.cursor para la configuración programática. Usa estas API desde extensiones de VS Code para registrar servidores MCP y rutas de plugins sin editar archivos de configuración.
Definiciones de tipos
Copia este bloque declare module en tu proyecto de extensión para comprobar los tipos:
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; /** * encabezados HTTP opcionales que se incluyen en cada solicitud a este servidor * (por ejemplo, para autenticación). */ headers?: Record<string, string>; }; } export type ExtMCPServerConfig = StdioServerConfig | RemoteServerConfig; /** * Registra un servidor MCP con el que Cursor pueda comunicarse. * Es compatible con HTTP(S) (SSE/streamable HTTP) y procesos stdio locales. */ export const registerServer: (config: ExtMCPServerConfig) => void; export const unregisterServer: (serverName: string) => void; } export namespace plugins { /** * Registra un directorio como origen de plugins. Cursor detecta y carga * cualquier plugin válido que haya en ese directorio. */ export const registerPath: (path: string) => void; export const unregisterPath: (path: string) => void; } }}Servidores MCP
Registra y gestiona servidores MCP en tiempo de ejecución. Resulta útil en entornos empresariales, para herramientas de incorporación y flujos de trabajo de configuración automatizada en los que no es práctico editar mcp.json.
vscode.cursor.mcp.registerServer
Registra un servidor MCP.
Firma:
vscode.cursor.mcp.registerServer(config: ExtMCPServerConfig): voidParámetros:
config: ExtMCPServerConfig: objeto de configuración del servidor
vscode.cursor.mcp.unregisterServer
Anula el registro de un servidor MCP registrado anteriormente.
Firma:
vscode.cursor.mcp.unregisterServer(serverName: string): voidParámetros:
serverName: string- El nombre del servidor cuyo registro se va a eliminar
Tipos de configuración
Servidor HTTP/SSE
Para servidores que se ejecutan mediante HTTP o Server-Sent Events:
interface RemoteServerConfig { name: string; server: { url: string; headers?: Record<string, string>; };}Propiedades:
name: Identificador único del servidorserver.url: URL del endpoint HTTPserver.headers(opcional): Encabezados HTTP para autenticación u otros fines
Servidor Stdio
Para servidores locales que se comunican mediante la entrada y salida estándar:
interface StdioServerConfig { name: string; server: { command: string; args: string[]; env: Record<string, string>; };}Propiedades:
name: Identificador único del servidorserver.command: Comando ejecutableserver.args: Argumentos de línea de comandosserver.env: Variables de entorno
Ejemplos de MCP
Servidor HTTP/SSE
Registra un servidor MCP remoto con autenticación:
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", }, },});Servidor stdio
Registra un servidor MCP local:
vscode.cursor.mcp.registerServer({ name: "my-local-server", server: { command: "python", args: ["-m", "my_mcp_server"], env: { API_KEY: "your-api-key", DEBUG: "true", }, },});Servidor de Node.js
Registra un servidor MCP basado en Node.js:
vscode.cursor.mcp.registerServer({ name: "nodejs-server", server: { command: "npx", args: ["-y", "@company/mcp-server"], env: { NODE_ENV: "production", CONFIG_PATH: "/path/to/config", }, },});Anular el registro de un servidor
vscode.cursor.mcp.unregisterServer("my-remote-server");Registro condicional
if (!isServerRegistered("my-server")) { vscode.cursor.mcp.registerServer({ name: "my-server", server: { url: "https://api.example.com/mcp", }, });}Rutas de plugins
Registra directorios de plugins adicionales en tiempo de ejecución. Las extensiones pueden usar esta API para indicar a Cursor las ubicaciones de los plugins sin que los usuarios tengan que copiar archivos manualmente en ~/.cursor/plugins/local/.
El manifiesto .cursor-plugin/plugin.json es opcional. Si no existe, Cursor usa el descubrimiento automático basado en carpetas y detecta componentes en las ubicaciones predeterminadas: rules/, skills/, agents/, commands/, mcp.json y hooks/hooks.json. Por ejemplo, para añadir skills, puedes registrar un directorio que contenga una subcarpeta skills/; no se necesita manifiesto.
my-extension/cursor-plugins/team-tools/├── skills/│ └── deploy-helper/│ └── SKILL.md└── rules/ └── coding-standards.mdcPara consultar el esquema completo del manifiesto y todos los formatos de componentes, consulta la guía de plugins y la referencia de plugins.
vscode.cursor.plugins.registerPath
Registra una ruta de directorio como origen de plugins. Cursor carga los plugins válidos que se encuentren en el directorio.
Firma:
vscode.cursor.plugins.registerPath(path: string): voidParámetros:
path: string- Ruta absoluta del sistema de archivos a un directorio que contiene plugins
vscode.cursor.plugins.unregisterPath
Elimina una ruta de plugin registrada anteriormente.
Firma:
vscode.cursor.plugins.unregisterPath(path: string): voidParámetros:
path: string- La ruta que se va a desregistrar
Ejemplos de rutas de plugins
Registrar un directorio de plugins integrado
Una extensión puede integrar plugins y registrarlos al activarse:
import * as vscode from "vscode";import * as path from "path";export function activate(context: vscode.ExtensionContext) { const pluginsDir = path.join(context.extensionPath, "cursor-plugins"); vscode.cursor.plugins.registerPath(pluginsDir); context.subscriptions.push({ dispose: () => vscode.cursor.plugins.unregisterPath(pluginsDir), });}Registrar una ruta relativa al espacio de trabajo
Configura Cursor para usar un directorio de plugins compartido en un monorepo:
const workspaceRoot = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;if (workspaceRoot) { vscode.cursor.plugins.registerPath( path.join(workspaceRoot, ".cursor-plugins") );}Anular el registro de una ruta de plugin
vscode.cursor.plugins.unregisterPath("/path/to/plugins");