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:
| Tipo | Descripción | Caso 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
| Propiedad | Tipo | Obligatorio | Descripció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)
| Propiedad | Tipo | Obligatorio | Descripció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
-
**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. -
**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. -
**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ón | Solució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 espera | Aumenta el valor de timeout o comprueba el rendimiento del servidor |
| Las herramientas funcionan pero no son llamadas | Asegú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