Skip to main content

Uso de servidores MCP con el SDK de Copilot

Integre servidores MCP con SDK de Copilot para ampliar las funcionalidades de la aplicación con herramientas externas.

¿Quién puede utilizar esta característica?

SDK de GitHub Copilot está disponible con todos los Copilot planes.

Nota:

          SDK de Copilot actualmente está en Versión preliminar técnica. La funcionalidad y la disponibilidad están sujetas a cambios.
          SDK de Copilot puede integrarse con **servidores MCP** (Protocolo de contexto de modelo) para ampliar las funcionalidades del asistente con herramientas externas. Los servidores MCP se ejecutan como procesos independientes y exponen herramientas (funciones) que Copilot pueden invocar durante las conversaciones.

¿Qué es MCP?

          [El Protocolo de contexto de modelo (MCP)](https://modelcontextprotocol.io/) es un estándar abierto para conectar asistentes de IA a herramientas externas y orígenes de datos. Los servidores MCP pueden ejecutar código o scripts, consultar bases de datos, acceder a sistemas de archivos, llamar a API externas, etc.

Tipos de servidor

El SDK admite dos tipos de servidores MCP:

TipoDescripciónCaso de uso
          **Local/Stdio** | Se ejecuta como un subproceso, se comunica a través de stdin/stdout. | Herramientas locales, acceso a archivos, scripts personalizados |

| HTTP/SSE | Servidor remoto al que se accede a través de HTTP | Servicios compartidos, herramientas hospedadas en la nube |

Configuración

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-5",
    mcpServers: {
        // Local MCP server (stdio)
        "my-local-server": {
            type: "local",
            command: "node",
            args: ["./mcp-server.js"],
            env: { DEBUG: "true" },
            cwd: "./servers",
            tools: ["*"],  // "*" = all tools, [] = none, or list specific tools
            timeout: 30000,
        },
        // Remote MCP server (HTTP)
        "github": {
            type: "http",
            url: "https://api.githubcopilot.com/mcp/",
            headers: { "Authorization": "Bearer ${TOKEN}" },
            tools: ["*"],
        },
    },
});

Para obtener ejemplos en Python, Go y .NET, consulte el github/copilot-sdk repositorio.

Inicio rápido: servidor MCP del sistema de archivos

Este es un ejemplo de trabajo completo mediante el servidor MCP oficial @modelcontextprotocol/server-filesystem :

import { CopilotClient } from "@github/copilot-sdk";

async function main() {
    const client = new CopilotClient();

    // Create session with filesystem MCP server
    const session = await client.createSession({
        mcpServers: {
            filesystem: {
                type: "local",
                command: "npx",
                args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
                tools: ["*"],
            },
        },
    });

    console.log("Session created:", session.sessionId);

    // The model can now use filesystem tools
    const result = await session.sendAndWait({
        prompt: "List the files in the allowed directory",
    });

    console.log("Response:", result?.data?.content);

    await session.disconnect();
    await client.stop();
}

main();

Sugerencia

Puede usar cualquier servidor MCP desde el directorio de servidores MCP. Entre las opciones populares se incluyen @modelcontextprotocol/server-github, @modelcontextprotocol/server-sqlitey @modelcontextprotocol/server-puppeteer.

Opciones de configuración

Servidor local/stdio

PropiedadTipoObligatorioDescripción
type
          `"local"` o `"stdio"` | No | Tipo de servidor (el valor predeterminado es local) |

| command | string | Sí | Comando para ejecutar | | args | string[] | Sí | Argumentos de comandos | | env | object | No | Variables de entorno | | cwd | string | No | Directorio de trabajo | | tools | string[] | No | Herramientas para habilitar (["*"] para todos, [] para ninguno) | | timeout | number | No | Tiempo de espera en milisegundos |

Servidor remoto (HTTP/SSE)

PropiedadTipoObligatorioDescripción
type
          `"http"` o `"sse"` | Sí | Tipo de servidor |

| url | string | Sí | Dirección URL del servidor | | headers | object | No | Encabezados HTTP (por ejemplo, para la autenticación) | | tools | string[] | No | Herramientas para habilitar | | timeout | number | No | Tiempo de espera en milisegundos |

Solución de problemas

Herramientas que no se muestran o no se invocan

  1.        **Compruebe que el servidor MCP se inicia correctamente**: compruebe que el comando y los argumentos son correctos y asegúrese de que el proceso del servidor no se bloquea al iniciarse. Busque la salida de error en stderr.
    
  2.        **Comprobar la configuración de la herramienta**: asegúrese de que `tools` esté configurado en `["*"]` o que enumere las herramientas específicas que necesita. Una matriz `[]` vacía significa que no hay herramientas habilitadas.
    
  3.        **Comprobar la conectividad de los servidores remotos**: asegúrese de que la dirección URL sea accesible y compruebe que los encabezados de autenticación son correctos.
    

Problemas comunes

CuestiónSolución
"No se encontró el servidor MCP"Comprobación de que la ruta de acceso del comando es correcta y ejecutable
"Conexión rechazada" (HTTP)Compruebe la dirección URL y asegúrese de que el servidor se está ejecutando
Errores de tiempo de esperaAumenta el valor de timeout o comprueba el rendimiento del servidor
Las herramientas funcionan pero no son llamadasAsegúrese de que el mensaje requiere claramente la funcionalidad de la herramienta.

Lectura adicional

  •         [Especificación del protocolo de contexto de modelo](https://modelcontextprotocol.io/)
    
  •         [Directorio de servidores MCP](https://github.com/modelcontextprotocol/servers): servidores MCP de la comunidad
    
  •         [Servidor MCP de GitHub](https://github.com/github/github-mcp-server): servidor MCP oficial GitHub