Den här guiden beskriver hur du konfigurerar GitHub Copilot SDK för att använda MCP-verktyg (Azure Model Context Protocol) för att interagera med Azure-resurser.
Azure MCP tillhandahåller en uppsättning verktyg som gör det möjligt för AI-assistenter att interagera direkt med Azure-resurser. När du är integrerad med Copilot SDK kan du skapa program som använder naturligt språk för att hantera Azure-prenumerationer, resursgrupper, lagringskonton med mera.
Förutsättningar
Logga in på Azure MCP Server för lokal utveckling
Azure MCP Server autentiserar till Microsoft Entra-ID med hjälp av Azure Identity-biblioteket för .NET. Servern stöder två autentiseringslägen:
-
Koordinatorläge: Använder operativsystemets interna autentisering (till exempel Windows Web Account Manager) med
InteractiveBrowserCredential.
-
Kedjeläge för autentiseringsuppgifter: Provar flera autentiseringsmetoder i följd: miljövariabler, Visual Studio Code, Visual Studio, Azure CLI, Azure PowerShell, Azure Developer CLI och interaktiv webbläsarautentisering.
Logga in med någon av följande metoder:
- Öppna kommandopaletten (
Ctrl+Shift+P eller Cmd+Shift+P på Mac).
- Kör Azure: Logga in och följ anvisningarna.
- Gå till Inställningar för filkonto>.
- Välj Lägg till ett konto och följ anvisningarna.
När du har loggat in kan Azure MCP Server autentisera och köra åtgärder på Azure-tjänster baserat på dina behörigheter.
Konfigurationsexempel för Azure MCP Server
Oavsett vilken programmerings-SDK du använder måste Azure MCP-servern konfigureras i appkontexten för att verktyg ska vara tillgängliga. Den grundläggande konfigurationen liknar följande:
{
"mcp_servers": {
"azure-mcp": {
"type": "local",
"command": "npx",
"args": ["-y", "@azure/mcp@latest", "server", "start"],
"tools": ["*"]
}
}
}
Parametern tools: ["*"] är viktig – den aktiverar alla verktyg från MCP-servern för sessionen.
Integreringsexempel
I följande exempel visas hur du integrerar SDK:t på olika språk.
Anmärkning
För snabbare start kan du installera Azure MCP Server globalt med hjälp av npm install -g @azure/mcp@latest.
Installation
Installera Python SDK-paketet med pip.
pip install github-copilot-sdk
Exempelkod
Följande kod visar ett fullständigt flöde:
import asyncio
from copilot import CopilotClient
from copilot.generated.session_events import SessionEventType
async def main():
# Initialize the Copilot client
client = CopilotClient({
"cli_args": [
"--allow-all-tools",
"--allow-all-paths",
]
})
await client.start()
# Configure Azure MCP server in session config
azure_mcp_config = {
"azure-mcp": {
"type": "local",
"command": "npx",
"args": ["-y", "@azure/mcp@latest", "server", "start"],
"tools": ["*"], # Enable all Azure MCP tools
}
}
# Create session with MCP servers
session = await client.create_session({
"model": "gpt-4.1", # Default model; BYOK can override
"streaming": True,
"mcp_servers": azure_mcp_config,
})
# Handle events
def handle_event(event):
if event.type == SessionEventType.ASSISTANT_MESSAGE_DELTA:
if hasattr(event.data, 'delta_content') and event.data.delta_content:
print(event.data.delta_content, end="", flush=True)
elif event.type == SessionEventType.TOOL_EXECUTION_START:
tool_name = getattr(event.data, 'tool_name', 'unknown')
print(f"\n[TOOL: {tool_name}]")
session.on(handle_event)
# Send prompt
await session.send_and_wait({
"prompt": "List all resource groups in my Azure subscription"
})
await client.stop()
if __name__ == "__main__":
asyncio.run(main())
Föregående kod:
- Initierar Copilot-klienten.
- Konfigurerar Azure MCP-servern med .
npx
- Skapar en session med GPT-4.1-modellen och strömning aktiverat.
- Hanterar händelser för att skriva ut assistentens svar och loggar för verktygsutförande.
- Skickar en uppmaning om att lista Azure-resursgrupper.
Installation
Installera Node.js SDK-paketet med npm.
npm install @github/copilot-sdk
Följande kod visar ett fullständigt flöde:
import { CopilotClient } from '@github/copilot-sdk';
import type { MCPLocalServerConfig } from '@github/copilot-sdk';
async function main() {
// Initialize the Copilot client
const client = new CopilotClient({
cliArgs: [
'--allow-all-tools',
'--allow-all-paths',
]
});
await client.start();
// Configure Azure MCP server in session config
const azureMcpConfig: Record<string, MCPLocalServerConfig> = {
'azure-mcp': {
type: 'local',
command: 'npx',
args: ['-y', '@azure/mcp@latest', 'server', 'start'],
tools: ['*'], // Enable all Azure MCP tools
}
};
// Create session with MCP servers
const session = await client.createSession({
model: 'gpt-4.1', // Default model; BYOK can override
streaming: true,
mcpServers: azureMcpConfig,
});
// Handle events
session.on((event) => {
if (event.type === 'assistant.message_delta') {
if (event.data?.deltaContent) {
process.stdout.write(event.data.deltaContent);
}
} else if (event.type === 'tool.execution_start') {
const toolName = event.data?.toolName || 'unknown';
console.log(`\n[TOOL: ${toolName}]`);
}
});
// Send prompt
await session.sendAndWait({
prompt: 'List all resource groups in my Azure subscription 16caa5c4-46f1-4bfd-8c1b-a99f1efc8845'
});
await client.stop();
}
main().catch(console.error);
Föregående kod:
- Initierar Copilot-klienten.
- Konfigurerar Azure MCP-servern med .
npx
- Skapar en session med GPT-4.1-modellen och strömning aktiverat.
- Hanterar händelser för utskriftsassistentens svar och verktygsutförandeloggar.
- Skickar en uppmaning om att lista Azure-resursgrupper.
Installation
Lägg till innehållet i NuGet-paketet i projektet.
dotnet add package GitHub.Copilot.SDK
Exempelkod
Följande C#-kod visar ett fullständigt flöde:
using GitHub.Copilot.SDK;
// Initialize the Copilot client
await using var client = new CopilotClient(new CopilotClientOptions
{
CliArgs = new[] { "--allow-all-tools", "--allow-all-paths" }
});
await client.StartAsync();
// Configure Azure MCP server in session config
var mcpServers = new Dictionary<string, object>
{
["azure-mcp"] = new McpLocalServerConfig
{
Type = "local",
Command = "npx",
Args = ["-y", "@azure/mcp@latest", "server", "start"],
Tools = ["*"] // Enable all Azure MCP tools
}
};
// Create session with MCP servers
await using var session = await client.CreateSessionAsync(new SessionConfig
{
Model = "gpt-4.1", // Default model; BYOK can override
Streaming = true,
McpServers = mcpServers
});
// Handle events
session.On(evt =>
{
if (evt is AssistantMessageDeltaEvent delta)
{
if (!string.IsNullOrEmpty(delta.Data.DeltaContent))
{
Console.Write(delta.Data.DeltaContent);
}
}
else if (evt is ToolExecutionStartEvent toolStart)
{
Console.WriteLine($"\n[TOOL: {toolStart.Data.ToolName}]");
}
});
// Send prompt
await session.SendAndWaitAsync(new MessageOptions
{
Prompt = "List all resource groups in my Azure subscription"
});
Föregående kod:
- Initierar Copilot-klienten.
- Konfigurerar Azure MCP-servern med .
npx
- Skapar en session med GPT-4.1-modellen och strömning aktiverat.
- Hanterar händelser för utskriftsassistentens svar och verktygskörningsloggar.
- Skickar en uppmaning om att lista Azure-resursgrupper.
Installation
Hämta Go SDK-paketet med .go get
go get github.com/github/copilot-sdk/go
Exempelkod
Följande kod visar ett fullständigt flöde:
package main
import (
"context"
"fmt"
"log"
copilot "github.com/github/copilot-sdk/go"
)
func main() {
ctx := context.Background()
// Initialize the Copilot client
client, err := copilot.NewClient(copilot.ClientOptions{
CLIArgs: []string{
"--allow-all-tools",
"--allow-all-paths",
},
})
if err != nil {
log.Fatal(err)
}
if err := client.Start(ctx); err != nil {
log.Fatal(err)
}
defer client.Stop(ctx)
// Configure Azure MCP server in session config
azureMcpConfig := map[string]copilot.MCPServerConfig{
"azure-mcp": {
Type: "local",
Command: "npx",
Args: []string{"-y", "@azure/mcp@latest", "server", "start"},
Tools: []string{"*"}, // Enable all Azure MCP tools
},
}
// Create session with MCP servers
session, err := client.CreateSession(ctx, copilot.SessionConfig{
Model: "gpt-4.1", // Default model; BYOK can override
Streaming: true,
MCPServers: azureMcpConfig,
})
if err != nil {
log.Fatal(err)
}
// Handle events
session.OnEvent(func(event copilot.SessionEvent) {
switch event.Type {
case copilot.AssistantMessageDelta:
if event.Data.DeltaContent != "" {
fmt.Print(event.Data.DeltaContent)
}
case copilot.ToolExecutionStart:
fmt.Printf("\n[TOOL: %s]\n", event.Data.ToolName)
}
})
// Send prompt
err = session.SendAndWait(ctx, copilot.Message{
Prompt: "List all resource groups in my Azure subscription",
})
if err != nil {
log.Fatal(err)
}
}
Föregående kod:
- Initierar Copilot-klienten.
- Konfigurerar Azure MCP-servern med .
npx
- Skapar en session med GPT-4.1-modellen och strömning aktiverat.
- Hanterar händelser för utskriftsassistentens svar och verktygskörningsloggar.
- Skickar en uppmaning om att lista Azure-resursgrupper.