Referencia de la API de extensiones
Cherri Code 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 Cherri Code 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. Cherri Code 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 Cherri Code 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, Cherri Code 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. Cherri Code 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 Cherri Code 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");