Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Protokół MCP (Model Context Protocol) to protokół klient-serwer, który umożliwia modelom językowym i agentom wydajniejsze odnajdywanie zewnętrznych źródeł danych i narzędzi oraz korzystanie z nich.
Rozszerzenie MCP usługi Azure Functions umożliwia tworzenie zdalnych serwerów MCP za pomocą usługi Azure Functions. Te serwery mogą hostować funkcje wyzwalacza narzędzi MCP, które klienci MCP, tacy jak modele językowe i agenci, mogą wykonywać zapytania i uzyskiwać dostęp do określonych zadań.
| Action | Typ |
|---|---|
| Uruchamianie funkcji z żądania wywołania narzędzia MCP | Trigger |
Important
Rozszerzenie MCP nie obsługuje obecnie aplikacji programu PowerShell.
Prerequisites
- W przypadku korzystania z transportu SSE rozszerzenie MCP opiera się na usłudze Azure Queue Storage udostępnianym przez domyślne konto magazynu hosta (
AzureWebJobsStorage). W przypadku korzystania z połączeń opartych na tożsamościach upewnij się, że aplikacja funkcji ma co najmniej odpowiednik tych uprawnień opartych na rolach na koncie magazynu hosta: Czytelnik danych kolejek usługi Storage i Procesor komunikatów kolejki usługi Storage. - W przypadku uruchamiania lokalnego rozszerzenie MCP wymaga wersji 4.0.7030 narzędzi Azure Functions Core Tools lub nowszej.
- Wymaga wersji 2.1.0 lub nowszej
Microsoft.Azure.Functions.Workerpakietu. - Wymaga wersji 2.0.2 lub nowszej
Microsoft.Azure.Functions.Worker.Sdkpakietu.
Instalowanie rozszerzenia
Note
W przypadku języka C# rozszerzenie MCP usługi Azure Functions obsługuje tylko izolowany model procesu roboczego.
Dodaj rozszerzenie do projektu, instalując ten pakiet NuGet w preferowany sposób:
Microsoft.Azure.Functions.Worker.Extensions.Mcp
- Wymaga wersji 3.2.2 lub nowszej
azure-functions-java-libraryzależności. - Wymaga wersji 1.40.0 lub nowszej
azure-functions-maven-pluginzależności.
- Wymaga wersji 4.9.0 lub nowszej
@azure/functionszależności
- Wymaga wersji 1.24.0 lub nowszej
azure-functionspakietu.
Instalowanie pakietu
Aby móc używać tego rozszerzenia powiązania w aplikacji, upewnij się, że plik host.json w katalogu głównym projektu zawiera następujące extensionBundle odwołanie:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
W tym przykładzie version[4.0.0, 5.0.0) wartość polecenia nakazuje hostowi usługi Functions użycie wersji pakietu, która jest co najmniej 4.0.0 mniejsza niż 5.0.0, która zawiera wszystkie potencjalne wersje 4.x. Ta notacja skutecznie utrzymuje aplikację w najnowszej dostępnej wersji pomocniczej pakietu rozszerzenia v4.x.
Jeśli to możliwe, należy użyć najnowszej wersji głównej pakietu rozszerzeń i zezwolić środowisku uruchomieniowemu na automatyczne utrzymywanie najnowszej wersji pomocniczej. Zawartość najnowszego pakietu można wyświetlić na stronie wydania pakietów rozszerzeń. Aby uzyskać więcej informacji, zobacz Pakiety rozszerzeń usługi Azure Functions.
ustawienia pliku host.json
W tej sekcji opisano ustawienia konfiguracji dostępne dla tego powiązania w wersji 2.x lub nowszej. Ustawienia w pliku host.json mają zastosowanie do wszystkich funkcji w wystąpieniu aplikacji funkcji. Aby uzyskać więcej informacji na temat ustawień konfiguracji aplikacji funkcji, zobacz host.json dokumentacja usługi Azure Functions.
Możesz użyć extensions.mcp sekcji w sekcji , host.json aby zdefiniować informacje o serwerze MCP.
{
"version": "2.0",
"extensions": {
"mcp": {
"instructions": "Some test instructions on how to use the server",
"serverName": "TestServer",
"serverVersion": "2.0.0",
"encryptClientState": true,
"messageOptions": {
"useAbsoluteUriForEndpoint": false
},
"system": {
"webhookAuthorizationLevel": "System"
}
}
}
}
| Property | Description |
|---|---|
| instructions | Opisuje klientów, jak uzyskać dostęp do zdalnego serwera MCP. |
| serverName | Przyjazna nazwa zdalnego serwera MCP. |
| serverVersion | Bieżąca wersja zdalnego serwera MCP. |
| encryptClientState | Określa, czy stan klienta jest zaszyfrowany. Domyślnie ustawione na true. Ustawienie wartości false może być przydatne w przypadku debugowania i testowania scenariuszy, ale nie jest zalecane w środowisku produkcyjnym. |
| messageOptions | Obiekt options dla punktu końcowego komunikatu w transporcie SSE. |
| messageOptions.UseAbsoluteUriForEndpoint | Wartość domyślna to false. Dotyczy tylko transportu zdarzeń wysyłanych przez serwer (SSE); to ustawienie nie ma wpływu na transport HTTP z możliwością przesyłania strumieniowego. Jeśli ustawiono falsewartość , punkt końcowy komunikatu jest udostępniany jako względny identyfikator URI podczas początkowych połączeń za pośrednictwem transportu SSE. Jeśli ustawiono truewartość , punkt końcowy komunikatu jest zwracany jako bezwzględny identyfikator URI. Użycie względnego identyfikatora URI nie jest zalecane, chyba że masz określony powód, aby to zrobić. |
| system | Obiekt opcji konfiguracji na poziomie systemu. |
| system.webhookAuthorizationLevel | Definiuje poziom autoryzacji wymagany dla punktu końcowego elementu webhook. Wartość domyślna to "System". Dozwolone wartości to "System" i "Anonymous". Po ustawieniu wartości na "Anonimowy" klucz dostępu nie jest już wymagany dla żądań. Niezależnie od tego, czy klucz jest wymagany, czy nie, można użyć wbudowanej autoryzacji serwera MCP jako warstwy kontroli dostępu opartej na tożsamościach. |
Nawiązywanie połączenia z serwerem MCP
Aby nawiązać połączenie z serwerem MCP uwidoczniony przez aplikację funkcji, należy podać klienta MCP z odpowiednimi informacjami dotyczącymi punktu końcowego i transportu. W poniższej tabeli przedstawiono transporty obsługiwane przez rozszerzenie MCP usługi Azure Functions wraz z odpowiednim punktem końcowym połączenia.
| Transport | Endpoint |
|---|---|
| Przesyłanie strumieniowe HTTP | /runtime/webhooks/mcp |
| zdarzenia Server-Sent (SSE)1 | /runtime/webhooks/mcp/sse |
1 Nowsze wersje protokołu przestarzały transport Server-Sent Events. Jeśli klient nie wymaga tego specjalnie, należy zamiast tego użyć transportu HTTP z możliwością przesyłania strumieniowego.
W przypadku hostowanych na platformie Azure domyślnie punkty końcowe uwidocznione przez rozszerzenie również wymagają klucza systemowego o nazwie mcp_extension. Jeśli nie jest on podany w nagłówku x-functions-key HTTP lub w parametrze code ciągu zapytania, klient otrzyma 401 Unauthorized odpowiedź. To wymaganie można usunąć, ustawiając system.webhookAuthorizationLevel właściwość na host.json wartość Anonymous. Aby uzyskać więcej informacji, zobacz sekcję host.json settings (Ustawieniahost.json ).
Klucz można pobrać przy użyciu dowolnej z metod opisanych w temacie Uzyskiwanie kluczy dostępu funkcji. W poniższym przykładzie pokazano, jak uzyskać klucz za pomocą interfejsu wiersza polecenia platformy Azure:
az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv
Klienci MCP akceptują tę konfigurację na różne sposoby. Zapoznaj się z dokumentacją wybranego klienta. W poniższym przykładzie pokazano plik, mcp.json którego można użyć do skonfigurowania serwerów MCP dla narzędzia GitHub Copilot w programie Visual Studio Code. W przykładzie skonfigurowaliśmy dwa serwery przy użyciu transportu HTTP z możliwością przesyłania strumieniowego. Pierwszy z nich dotyczy testowania lokalnego za pomocą narzędzi Azure Functions Core Tools. Druga dotyczy aplikacji funkcji hostowanej na platformie Azure. Konfiguracja przyjmuje parametry wejściowe, dla których program Visual Studio Code wyświetla monit podczas pierwszego uruchomienia serwera zdalnego. Użycie danych wejściowych gwarantuje, że wpisy tajne, takie jak klucz systemowy, nie zostaną zapisane w pliku i zaewidencjonowane w kontroli źródła.
{
"inputs": [
{
"type": "promptString",
"id": "functions-mcp-extension-system-key",
"description": "Azure Functions MCP Extension System Key",
"password": true
},
{
"type": "promptString",
"id": "functionapp-host",
"description": "The host domain of the function app."
}
],
"servers": {
"local-mcp-function": {
"type": "http",
"url": "http://localhost:7071/runtime/webhooks/mcp"
},
"remote-mcp-function": {
"type": "http",
"url": "https://${input:functionapp-host}/runtime/webhooks/mcp",
"headers": {
"x-functions-key": "${input:functions-mcp-extension-system-key}"
}
}
}
}