Hinweis
Copilot SDK ist zurzeit in Technische Preview. Funktionalität und Verfügbarkeit können geändert werden.
Die Copilot SDK Integration in MCP-Server (Model Context Protocol) ermöglicht die Erweiterung der Funktionen des Assistenten mit externen Tools. MCP-Server werden als separate Prozesse ausgeführt und stellen Tools (Funktionen) zur Verfügung, die Copilot während Unterhaltungen aufgerufen werden können.
Was ist MCP?
[Model Context Protocol (MCP)](https://modelcontextprotocol.io/) ist ein offener Standard zum Verbinden von KI-Assistenten mit externen Tools und Datenquellen. MCP-Server können Code oder Skripte ausführen, Datenbanken abfragen, auf Dateisysteme zugreifen, externe APIs aufrufen und mehr.
Servertypen
Das SDK unterstützt zwei Arten von MCP-Servern:
| Typ | Beschreibung | Anwendungsfall |
|---|
**Local/Stdio** | Wird als Teilprozess ausgeführt, kommuniziert über stdin/stdout | Lokale Tools, Dateizugriff, benutzerdefinierte Skripts |
| HTTP/SSE | Remoteserver, auf den über HTTP zugegriffen wird | Gemeinsame Dienste, in der Cloud gehostete Tools |
Konfiguration
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: ["*"],
},
},
});
Beispiele in Python, Go und .NET finden Sie im github/copilot-sdk Repository.
Schnellstart: Dateisystem-MCP-Server
Hier ist ein vollständiges Arbeitsbeispiel mit dem offiziellen @modelcontextprotocol/server-filesystem MCP-Server:
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();
Tipp
Sie können jeden MCP-Server aus dem MCP-Serververzeichnis verwenden. Zu den beliebten Optionen gehören @modelcontextprotocol/server-github, @modelcontextprotocol/server-sqliteund @modelcontextprotocol/server-puppeteer.
Konfigurationsoptionen
Lokaler/Stdio-Server
| Eigentum | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
type |
`"local"` oder `"stdio"` | No | Servertyp (Standardmäßig lokal) |
| command | string | Ja | Auszuführende Befehl |
| args | string[] | Ja | Befehlsargumente |
| env | object | No | Umgebungsvariablen |
| cwd | string | No | Arbeitsverzeichnis |
| tools | string[] | No | Zu aktivierende Tools (["*"] für alle, [] für keine) |
| timeout | number | No | Timeout in Millisekunden |
Remoteserver (HTTP/SSE)
| Eigentum | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
type |
`"http"` oder `"sse"` | Ja | Servertyp |
| url | string | Ja | Server-URL |
| headers | object | No | HTTP-Header (z. B. für Authentifizierung) |
| tools | string[] | No | Zu aktivierende Tools |
| timeout | number | No | Timeout in Millisekunden |
Problembehandlung
Tools werden nicht angezeigt oder nicht aufgerufen
-
**Überprüfen Sie, ob der MCP-Server ordnungsgemäß gestartet wird. Überprüfen** Sie, ob der Befehl und die Argumente korrekt sind, und stellen Sie sicher, dass der Serverprozess beim Start nicht abstürzt. Suchen Sie in stderr nach der Fehlerausgabe. -
**Überprüfen Sie die Toolkonfiguration**. Stellen Sie sicher, dass `tools` sie auf `["*"]` die benötigten Tools festgelegt ist oder auflistet. Ein leeres Array `[]` bedeutet, dass keine Tools aktiviert sind. -
**Überprüfen Sie die Konnektivität für Remoteserver**– Stellen Sie sicher, dass auf die URL zugegriffen werden kann, und überprüfen Sie, ob Authentifizierungsheader korrekt sind.
Häufig auftretende Probleme
| Thema | Lösung |
|---|---|
| "MCP-Server nicht gefunden" | Überprüfen, ob der Befehlspfad korrekt und ausführbar ist |
| "Verbindung verweigert" (HTTP) | Überprüfen Sie die URL, und stellen Sie sicher, dass der Server ausgeführt wird. |
| Timeout-Fehler | Erhöhen Sie den timeout Wert oder überprüfen Sie die Serverleistung. |
| Tools funktionieren, werden aber nicht aufgerufen | Stellen Sie sicher, dass Ihre Eingabeaufforderung die Funktionalität des Tools eindeutig erfordert. |
Weiterführende Lektüre
-
[Modellkontextprotokollspezifikation](https://modelcontextprotocol.io/) -
[MCP-Serververzeichnis](https://github.com/modelcontextprotocol/servers) – Community-MCP-Server -
[GitHub MCP Server](https://github.com/github/github-mcp-server) – offizieller GitHub MCP-Server