Udostępnij za pomocą


Samouczek: hostowanie serwera MCP w usłudze Azure Functions

W tym artykule pokazano, jak hostować zdalne serwery protokołu MCP ( Remote Model Context Protocol ) w usłudze Azure Functions. Dowiesz się również, jak używać wbudowanego uwierzytelniania w celu skonfigurowania autoryzacji punktu końcowego serwera i lepszego zabezpieczenia narzędzi sztucznej inteligencji.

Istnieją dwa sposoby hostowania zdalnego serwera MCP w usłudze Azure Functions:

Opcja serwera MCP Description Najlepsze dla...
Serwer rozszerzeń MCP Używa rozszerzenia MCP usługi Azure Functions do tworzenia niestandardowych serwerów MCP, gdzie wyzwalacz rozszerzenia umożliwia zdefiniowanie punktów końcowych narzędzia. Te serwery są obsługiwane we wszystkich językach usługi Functions i są opracowywane, wdrażane i zarządzane jako każda inna aplikacja funkcji. Gdy znasz już funkcje i jej model programowania oparty na powiązaniach.
Serwer hostowany samodzielnie Funkcje mogą hostować projekt serwera MCP utworzony przy użyciu standardowych zestawów SDK MCP. Po tym, jak już utworzyłeś serwer przy użyciu oficjalnych zestawów SDK MCP, i szukasz hostingu opartego na zdarzeniach, działającego w modelu bezserwerowym i skalowalnego na platformie Azure.

Uwaga / Notatka

Możliwość hostowania serwerów MCP usługi Azure Functions tworzonych przy użyciu oficjalnych zestawów SDK MCP jest obecnie dostępna w wersji zapoznawczej.

W tym samouczku omówiono obie opcje serwera MCP obsługiwane przez Functions. Wybierz kartę, która najlepiej odpowiada scenariuszowi.

W tym samouczku użyjesz programu Visual Studio Code do:

  • Utwórz projekt serwera MCP przy użyciu rozszerzenia MCP.
  • Uruchom i sprawdź serwer MCP lokalnie.
  • Utwórz aplikację funkcji na platformie Azure.
  • Wdróż projekt serwera MCP.
  • Włącz wbudowane uwierzytelnianie.

Ważne

Ten artykuł obsługuje obecnie tylko języki C#, Python i TypeScript. Aby ukończyć przewodnik wprowadzający, wybierz jeden z tych obsługiwanych języków na górze artykułu.

Ten artykuł obsługuje wersję 4 modelu programowania Node.js dla usługi Azure Functions.

Ten artykuł obsługuje wersję 2 modelu programowania w języku Python dla usługi Azure Functions.

Wymagania wstępne

Tworzenie projektu serwera MCP

Użyj programu Visual Studio Code, aby lokalnie utworzyć projekt serwera MCP w preferowanym języku.

  1. W programie Visual Studio Code naciśnij F1 , aby otworzyć paletę poleceń. Wyszukaj i uruchom polecenie Azure Functions: Create New Project....

  2. Wybierz lokalizację katalogu dla obszaru roboczego projektu i wybierz pozycję Wybierz. Należy utworzyć nowy folder lub wybrać pusty folder dla obszaru roboczego projektu. Nie wybieraj folderu projektu, który jest już częścią obszaru roboczego.

  1. Podaj następujące informacje po wyświetleniu monitów:

    Podpowiedź Selekcja
    Wybieranie typu projektu Wybierz C#.
    Wybieranie środowiska uruchomieniowego platformy .NET Wybierz .NET 8.0 LTS.
    Wybieranie szablonu dla pierwszej funkcji projektu Wybierz MCP Tool trigger.
    Podaj nazwę funkcji Wpisz McpTrigger.
    Podaj przestrzeń nazw Wpisz My.Functions.
    Poziom autoryzacji Wybierz FUNCTIONpozycję , która wymaga klucza dostępu podczas nawiązywania połączenia z zdalnym serwerem MCP.
    Wybierz sposób otwierania projektu Wybierz Open in current window.
  1. Podaj następujące informacje po wyświetleniu monitów:

    Podpowiedź Selekcja
    Wybieranie typu projektu Wybierz TypeScript.
    Wybieranie szablonu dla pierwszej funkcji projektu Wybierz MCP Tool trigger.
    Podaj nazwę funkcji Wpisz mcpToolTrigger.
    Poziom autoryzacji Wybierz FUNCTIONpozycję , która wymaga klucza dostępu podczas nawiązywania połączenia z zdalnym serwerem MCP.
    Wybierz sposób otwierania projektu Wybierz Open in current window.
  1. Podaj następujące informacje po wyświetleniu monitów:

    Podpowiedź Selekcja
    Wybieranie typu projektu Wybierz Python.
    Wybieranie interpretera języka Python w celu utworzenia środowiska wirtualnego Wybierz preferowany interpreter języka Python. Jeśli opcja nie jest wyświetlana, wpisz pełną ścieżkę do pliku binarnego języka Python.
    Wybieranie szablonu dla pierwszej funkcji projektu Wybierz MCP Tool trigger.
    Nazwa funkcji, którą chcesz utworzyć Wprowadź mcp_trigger.
    Poziom autoryzacji Wybierz FUNCTIONpozycję , która wymaga klucza dostępu podczas nawiązywania połączenia z zdalnym serwerem MCP.
    Wybierz sposób otwierania projektu Wybierz Open in current window.

Korzystając z tych informacji, program Visual Studio Code generuje projekt kodu dla wyzwalacza serwera MCP. Pliki lokalnego projektu można wyświetlić w Eksploratorze.

Lokalne uruchamianie serwera MCP

Aplikacje funkcji potrzebują składnika magazynu do działania. Przed uruchomieniem serwera uruchom emulator magazynu lokalnego:

  1. W local.setting.json upewnij się, że masz "AzureWebJobsStorage": "UseDevelopmentStorage=true".

  2. W programie Visual Studio Code naciśnij F1 , aby otworzyć paletę poleceń. W palecie poleceń wyszukaj i wybierz pozycję Azurite: Start.

  3. Sprawdź dolny pasek i sprawdź, czy usługi emulacji Azurite są uruchomione. Jeśli tak, możesz teraz uruchomić serwer lokalnie.

  4. Aby rozpocząć uruchamianie lokalnie, naciśnij F5.

Aplikacje funkcji potrzebują składnika magazynu do działania. Przed uruchomieniem serwera uruchom emulator magazynu lokalnego:

  1. W local.setting.json upewnij się, że masz "AzureWebJobsStorage": "UseDevelopmentStorage=true".

  2. W programie Visual Studio Code naciśnij F1 , aby otworzyć paletę poleceń. W palecie poleceń wyszukaj i wybierz pozycję Azurite: Start.

  3. Sprawdź dolny pasek i sprawdź, czy usługi emulacji Azurite są uruchomione. Jeśli tak, możesz teraz uruchomić serwer lokalnie.

  4. Aby rozpocząć uruchamianie lokalnie, naciśnij F5.

Aplikacje funkcji wymagają składnika magazynu do działania. Przed uruchomieniem serwera uruchom emulator magazynu lokalnego:

  1. W local.setting.json upewnij się, że masz "AzureWebJobsStorage": "UseDevelopmentStorage=true".

  2. W programie Visual Studio Code naciśnij F1 , aby otworzyć paletę poleceń. W palecie poleceń wyszukaj i wybierz pozycję Azurite: Start.

  3. Sprawdź dolny pasek i sprawdź, czy usługi emulacji Azurite są uruchomione. Jeśli tak, możesz teraz uruchomić serwer lokalnie.

  4. Aby rozpocząć uruchamianie lokalnie, naciśnij F5.

Testowanie serwera

  1. .vscode Znajdź katalog i otwórz plik mcp.json. Edytor powinien dodać informacje o połączeniu serwera.

  2. Uruchom serwer, wybierając przycisk Uruchom powyżej nazwy serwera.

  3. Po nawiązaniu połączenia z serwerem zobaczysz liczbę dostępnych narzędzi powyżej nazwy serwera.

  4. Otwórz czat Copilot programu Visual Studio Code w trybie agenta, a następnie zadaj pytanie. Na przykład "Przywitaj się z #your-local-server-name". To pytanie zapewnia, że Copilot używa serwera, aby pomóc w odpowiedzi na pytanie.

  5. Gdy copilot żąda uruchomienia narzędzia z lokalnego serwera MCP, wybierz pozycję Zezwalaj.

  6. Odłącz się od serwera po zakończeniu testowania, wybierając pozycję Zatrzymaj i Cntrl+C aby zatrzymać uruchamianie go lokalnie.

Wskazówka

W oknie czatu Copilot wybierz ikonę narzędzia w dolnej części, aby wyświetlić listę serwerów i narzędzi dostępnych dla czatu. Upewnij się, że lokalny serwer MCP jest sprawdzany podczas testowania.

Zdalna autoryzacja serwera MCP

Istnieją dwa sposoby zmniejszania lub zapobiegania nieautoryzowanemu używaniu zdalnych punktów końcowych serwera MCP:

Metoda Description
Wbudowane uwierzytelnianie serwera (wersja zapoznawcza) Funkcje obejmują wbudowane uwierzytelnianie i autoryzację usługi App Service , które implementuje wymagania OAuth protokołu specyfikacji autoryzacji MCP . Klienci próbujący uzyskać dostęp do serwera są przekierowywani do skonfigurowanego dostawcy tożsamości, takiego jak Microsoft Entra ID, na potrzeby uwierzytelniania przed zezwoleniem na nawiązanie połączenia. Ta metoda zapewnia najwyższy poziom zabezpieczeń punktów końcowych narzędzi.
Uwierzytelnianie oparte na kluczach Domyślnie usługa Functions implementuje wymaganie klucza dostępu, aby klienci próbujący korzystać z narzędzi serwera MCP musieli przedstawić wartość klucza tajnego współużytkowanego w nagłówku żądania. Nie zapewniając tego samego poziomu zabezpieczeń co uwierzytelnianie oparte na protokole OAuth, klucze dostępu utrudniają dostęp do narzędzi publicznych. Anonymous Użyj poziomu dostępu, aby wyłączyć klucze dostępu na serwerze podczas korzystania z uwierzytelniania opartego na protokole OAuth.

Uwaga / Notatka

Ten samouczek zawiera szczegółowe instrukcje dotyczące konfiguracji wbudowanej funkcji autoryzacji i uwierzytelniania serwera, która może być również nazywana uwierzytelnianiem usługi App Service w innych artykułach. Omówienie funkcji i wskazówki dotyczące użycia można znaleźć w artykule Konfigurowanie wbudowanej autoryzacji serwera (wersja zapoznawcza).

Wyłączanie uwierzytelniania opartego na kluczach

Wbudowana funkcja autoryzacji serwera jest składnikiem oddzielnym od usługi Azure Functions. W przypadku korzystania z uwierzytelniania serwera najlepiej najpierw wyłączyć uwierzytelnianie oparte na kluczach, zezwalając na dostęp anonimowy.

Aby wyłączyć uwierzytelnianie oparte na hoście na serwerze MCP, ustaw wartość system.webhookAuthorizationLevel na Anonymous w host.json pliku:

{
  "version": "2.0",
  "extensions": {
    "mcp": {
      ...
      "system": {
        "webhookAuthorizationLevel": "Anonymous"
      }
    }    
  }
}

Tworzenie aplikacji funkcji na platformie Azure

Utwórz aplikację funkcji w planie Flex Consumption na platformie Azure, która hostuje serwer MCP.

  1. W witrynie Azure Portal z menu lub strony głównejwybierz pozycję Utwórz zasób.

  2. Wybierz pozycję Rozpocznij , a następnie pozycję Utwórz w obszarze Aplikacja funkcji.

  3. W obszarze Wybierz opcję hostingu wybierz pozycję Flex Consumption>Wybierz.

  4. Na stronie Podstawowe użyj ustawień aplikacji funkcjonalnych określonych w poniższej tabeli:

    Setting Sugerowana wartość Description
    Subscription Twoja subskrypcja Subskrypcja, w której tworzysz nową aplikację funkcji.
    Grupa zasobów myResourceGroup Nazwa nowej grupy zasobów, w której tworzysz aplikację funkcji.
    Nazwa aplikacji funkcji Nazwa unikatowa w skali globalnej Nazwa identyfikująca nową aplikację funkcjonalną. Prawidłowe znaki to a-z (bez uwzględniania wielkości liter), 0-9i -.
    Region Preferowany region Wybierz region, który znajduje się blisko Ciebie lub w pobliżu innych usług, do których mogą uzyskiwać dostęp funkcje. Nieobsługiwane regiony nie są wyświetlane. Aby uzyskać więcej informacji, zobacz Wyświetlanie aktualnie obsługiwanych regionów.
    Stos uruchomieniowy Preferowany język Wybierz jeden z obsługiwanych stosów środowiska uruchomieniowego języka. Edytowanie w portalu przy użyciu programu Visual Studio Code dla sieci Web jest obecnie dostępne tylko dla aplikacji Node.js, PowerShell i Python. Biblioteka klas języka C# i funkcje języka Java muszą być opracowywane lokalnie.
    wersja Wersja językowa Wybierz obsługiwaną wersję stosu środowiska uruchomieniowego języka.
    Rozmiar wystąpienia Default Określa ilość pamięci wystąpienia przydzielonej dla każdego wystąpienia aplikacji. Aby uzyskać więcej informacji, zobacz Rozmiary wystąpień.
  5. Na stronie Magazyn zaakceptuj domyślne zachowanie tworzenia nowego domyślnego konta magazynu hosta lub wybierz użycie istniejącego konta magazynu.

  1. Na stronie Monitorowanie upewnij się, że wybrano opcję Włącz usługę Application Insights . Zaakceptuj wartość domyślną, aby utworzyć nowe wystąpienie usługi Application Insights lub użyć istniejącego wystąpienia. Podczas tworzenia wystąpienia usługi Application Insights zostanie również wyświetlony monit o wybranie obszaru roboczego usługi Log Analytics.

  2. Na stronie Uwierzytelnianie zmień typ uwierzytelniania na Tożsamość zarządzana dla wszystkich zasobów. Dzięki tej opcji tworzona jest również tożsamość zarządzana przypisana przez użytkownika, której aplikacja używa do uzyskiwania dostępu do tych zasobów platformy Azure przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft. Tożsamości zarządzane z identyfikatorem Entra firmy Microsoft zapewniają najwyższy poziom zabezpieczeń na potrzeby nawiązywania połączenia z zasobami platformy Azure.

  3. Zaakceptuj opcje domyślne na pozostałych kartach, a następnie wybierz pozycję Przejrzyj i utwórz , aby przejrzeć wybraną konfigurację aplikacji.

  4. Kiedy będziesz usatysfakcjonowany, wybierz Utwórz, aby zaopatrzyć i wdrożyć aplikację funkcji oraz powiązane zasoby.

  5. Wybierz ikonę Powiadomienia w prawym górnym rogu portalu i poszukaj komunikatu Wdrożenie zakończyło się pomyślnie .

  6. Wybierz opcję Przejdź do zasobu, aby wyświetlić swoją nową aplikację funkcjonalną. Możesz również wybrać Przypnij do kokpitu. Przypinanie ułatwia powrót do tego zasobu aplikacji funkcjonalnej z poziomu pulpitu nawigacyjnego.

    Zrzut ekranu przedstawiający powiadomienie o wdrożeniu.

Wdrażanie projektu serwera MCP

Ważne

Wdrażanie w istniejącej aplikacji funkcji zawsze zastępuje zawartość tej aplikacji na platformie Azure.

  1. W palecie poleceń wprowadź i wybierz pozycję Azure Functions: Deploy to Function App (Azure Functions: Wdróż w aplikacji funkcji).

  2. Wybierz właśnie utworzoną aplikację funkcji. Po wyświetleniu monitu o zastąpienie poprzednich wdrożeń wybierz pozycję Wdróż , aby wdrożyć kod funkcji w nowym zasobie aplikacji funkcji.

  3. Po zakończeniu wdrażania wybierz pozycję Wyświetl dane wyjściowe , aby wyświetlić wyniki tworzenia i wdrażania, w tym utworzone zasoby platformy Azure. Jeśli przegapisz powiadomienie, wybierz ikonę dzwonka w prawym dolnym rogu, aby zobaczyć je ponownie.

    Zrzut ekranu przedstawiający okno Wyświetl dane wyjściowe.

  1. Aplikacje języka Python wymagają również dodania tego ustawienia aplikacji:

    PYTHONPATH=/home/site/wwwroot/.python_packages/lib/site-packages.

Teraz możesz wdrożyć projekt serwera:

Ważne

Wdrażanie w istniejącej aplikacji funkcji zawsze zastępuje zawartość tej aplikacji na platformie Azure.

  1. W palecie poleceń wprowadź i wybierz pozycję Azure Functions: Deploy to Function App (Azure Functions: Wdróż w aplikacji funkcji).

  2. Wybierz właśnie utworzoną aplikację funkcji. Po wyświetleniu monitu o zastąpienie poprzednich wdrożeń wybierz pozycję Wdróż , aby wdrożyć kod funkcji w nowym zasobie aplikacji funkcji.

  3. Po zakończeniu wdrażania wybierz pozycję Wyświetl dane wyjściowe , aby wyświetlić wyniki tworzenia i wdrażania, w tym utworzone zasoby platformy Azure. Jeśli przegapisz powiadomienie, wybierz ikonę dzwonka w prawym dolnym rogu, aby zobaczyć je ponownie.

    Zrzut ekranu przedstawiający okno Wyświetl dane wyjściowe.


Po zakończeniu wdrażania powinno zostać wyświetlone powiadomienie w programie Visual Studio Code dotyczące nawiązywania połączenia z serwerem. Wybierz przycisk Połącz , aby edytor skonfigurował informacje o połączeniu serwera w programie mcp.json.

Włączanie wbudowanej autoryzacji i uwierzytelniania serwera

W poniższej instrukcji pokazano, jak włączyć wbudowaną funkcję autoryzacji i uwierzytelniania w aplikacji serwera oraz skonfigurować identyfikator Entra firmy Microsoft jako dostawcę tożsamości. Po zakończeniu testu należy nawiązać połączenie z serwerem w programie Visual Studio Code i zobaczyć, że przed nawiązaniem połączenia zostanie wyświetlony monit o uwierzytelnienie.

Konfigurowanie uwierzytelniania w aplikacji serwera

  1. Otwórz aplikację serwera w portalu Azure i wybierz pozycję Ustawienia>Uwierzytelnianie z menu po lewej stronie.

  2. Wybierz Dodaj dostawcę tożsamości>Microsoft jako dostawcę tożsamości.

  3. W obszarze Wybierz najemcę dla aplikacji i jej użytkowników wybierz pozycję Ustawienia pracowników (obecny najemca).

  4. W obszarze Rejestracja aplikacji: użyj następujących ustawień:

    Setting Selekcja
    Typ rejestracji aplikacji Tworzenie nowej rejestracji aplikacji
    Nazwa Wprowadź opisową nazwę aplikacji
    Wygaśnięcie tajemnicy klienta Zalecane: 180 dni
    Obsługiwane typy kont Obecny najemca - pojedynczy najemca
  5. W obszarze Dodatkowe kontrole: w obszarze Wymaganie aplikacji klienckiej wybierz pozycję Zezwalaj na żądania z określonych aplikacji klienckich, wybierz ikonę ołówka, dodaj identyfikator aebc6443-996d-45c2-90f0-388ff96faa56klienta programu Visual Studio Code i wybierz przycisk OK. Pozostaw pozostałe sekcje tak, jak są.

  6. W obszarze Ustawienia uwierzytelniania usługi App Service użyj następujących ustawień:

    Setting Selekcja
    Ograniczanie dostępu Wymaganie uwierzytelniania
    Nieuwierzytelnione żądania HTTP 401 Brak autoryzacji: zalecane w przypadku interfejsów API
    Magazyn tokenów Zaznacz pole wyboru, które umożliwia odświeżanie tokenu
  7. Wybierz Dodaj. Po propagacji ustawień powinien zostać wyświetlony następujący wynik:

    Zrzut ekranu przedstawiający wybrane ustawienia uwierzytelniania usługi App Service z wybraną pozycją

Preautoryzowanie programu Visual Studio Code jako klienta

  1. Wybierz nazwę aplikacji Entra obok pozycji Microsoft. Ta akcja powoduje przejście do obszaru Przegląd zasobu aplikacji Entra.

  2. W menu po lewej stronie znajdź pozycję Zarządzaj —> uwidaczniaj interfejs API.

  3. W obszarze Autoryzowane aplikacje klienckie wybierz pozycję +Dodaj aplikację kliencką.

  4. Wprowadź identyfikator klienta programu Visual Studio Code: aebc6443-996d-45c2-90f0-388ff96faa56.

  5. Zaznacz pole przed zakresem, które wygląda następująco: api://abcd123-efg456-hijk-7890123/user_impersonation.

  6. Wybierz Dodaj aplikację.

Konfigurowanie metadanych chronionych zasobów (wersja zapoznawcza)

  1. W tym samym widoku uwidaczniaj interfejs API znajdź sekcjęZakresy i skopiuj zakres, który umożliwia administratorom i użytkownikom wyrażanie zgody na aplikację Entra. Ta wartość wygląda następująco: api://abcd123-efg456-hijk-7890123/user_impersonation.

  2. Uruchom to samo polecenie co poprzednio, aby dodać ustawienie WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES:

    az functionapp config appsettings set --name <function-app-name> --resource-group <resource-group-name> --settings "WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES=<scope>"
    
  3. Ponadto w widoku Uwidacznij interfejs API znajdź URI identyfikatora aplikacji (wygląda jak api://abcd123-efg456-hijk-7890123) u góry i zapisz na późniejszy etap.

Nawiązywanie połączenia z serwerem

Otwórz mcp.json wewnątrz .vscode katalogu.

Po wybraniu pozycji Połącz w oknie podręcznym po wdrożeniu program Visual Studio Code wypełni plik informacjami o połączeniu z serwerem.

Jeśli przegapisz ten krok, możesz również otworzyć pozycję Dane wyjściowe (Ctrl/Cmd+Shift+U), aby znaleźć przycisk połączenia wbudowanego na końcu dzienników wdrażania.

Możesz również ręcznie dodać informacje o połączeniu:

  1. Pobierz domenę serwera, uruchamiając następujące polecenie:

    az functionapp show --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --query "defaultHostName" --output tsv
    
  2. W programie Visual Studio Code otwórz paletę poleceń, wyszukaj i uruchom polecenie MCP: Dodaj serwer... , a następnie postępuj zgodnie z następującymi monitami:

    Podpowiedź Sugestia
    Typ serwera do dodania HTTP
    Adres URL serwera MCP https://<FUNCTION_APP_NAME>.azurewebsites.azurewebsites.net/runtime/webhooks/mcp
    Nazwa serwera remote-mcp-server
    Gdzie zainstalować serwer Workspace
  3. Visual Studio Code otwiera plik ustawień mcp.json dla Ciebie.

Postępuj zgodnie z instrukcjami w następnej sekcji, aby nawiązać połączenie z serwerem w zależności od konfiguracji uwierzytelniania.

Z wbudowanym uwierzytelnianiem i autoryzacją

  1. Uruchom serwer zdalny, wybierając przycisk Uruchom nad nazwą serwera.

  2. Po wyświetleniu monitu o uwierzytelnienie w firmie Microsoft wybierz pozycję Zezwalaj, a następnie zaloguj się przy użyciu poczty e-mail (użytej do zalogowania się w witrynie Azure Portal).

  3. Po pomyślnym nawiązaniu połączenia z serwerem zostanie wyświetlona liczba narzędzi dostępnych powyżej nazwy serwera.

  4. Otwórz czat Copilot programu Visual Studio Code w trybie agenta, a następnie zadaj pytanie. Na przykład Greet with #your-remote-mcp-server-name.

  5. Zatrzymaj serwer po zakończeniu testowania.

Aby dowiedzieć się szczegółowo, co się stanie, gdy program Visual Studio Code próbuje nawiązać połączenie z zdalnym serwerem MCP, zobacz Protokół autoryzacji serwera.

Z kluczem dostępu

Jeśli nie włączysz wbudowanego uwierzytelniania i autoryzacji i zamiast tego chcesz nawiązać połączenie z serwerem MCP przy użyciu klucza dostępu, element mcp.json powinien zawierać klucz dostępu usługi Functions w nagłówkach żądania rejestracji serwera.

Program Visual Studio automatycznie wypełnia klucz dostępu podczas uruchamiania serwera.

Plik mcp.json powinien wyglądać podobnie do następującego przykładu:

{
	"servers": {
		"remote-mcp-server": {
			"type": "http",
			"url": "https://${input:functionapp-domain}/runtime/webhooks/mcp",
			"headers": {
				"x-functions-key": "${input:functions-key}"
			}
		}
	},
	"inputs": [
		{
			"type": "promptString",
			"id": "functions-key",
			"description": "Functions App Key",
			"password": true
		},
		{
			"type": "promptString",
			"id": "functionapp-domain",
			"description": "The domain of the function app.",
			"password": false
		}
	]
}

Jeśli chcesz znaleźć klucz dostępu samodzielnie, przejdź do aplikacji Function w portalu Azure. W menu po lewej stronie znajdź pozycję Funkcje —> klucze aplikacji. W sekcji Klucze systemowe znajdź ten o nazwie mcp_extension.

Wskazówka

Aby wyświetlić dzienniki połączeń, przejdź do nazwy serwera, a następnie wybierz pozycję Więcej>pokaż dane wyjściowe. Aby uzyskać więcej informacji na temat interakcji między klientem (Visual Studio Code) a zdalnym serwerem MCP, kliknij ikonę koła zębatego i wybierz pozycję Śledzenie.

Zrzut ekranu przedstawiający ustawienia serwera MCP z wybranym poziomem dziennika _Trace_.

Konfigurowanie agenta usługi Azure AI Foundry do korzystania z narzędzi

Agenta usługi Azure AI Foundry można skonfigurować do używania narzędzi udostępnianych przez serwery MCP hostowane w usłudze Azure Functions.

  1. W portalu Foundry znajdź agenta, który chcesz skonfigurować za pomocą serwerów MCP hostowanych w usłudze Functions.

  2. W obszarze Narzędzia wybierz przycisk Dodaj , a następnie wybierz pozycję + Dodaj nowe narzędzie.

  3. Wybierz kartę Niestandardowe , a następnie wybierz pozycję Model Context Protocol (MCP) i przycisk Utwórz .

  4. Wprowadź następujące informacje:

    • Nazwa: nazwa serwera
    • Zdalny punkt końcowy serwera MCP:
      • Serwer rozszerzenia MCP: https://<server domain>/runtime/webhooks/mcp
      • Serwer hostowany samodzielnie: https://<server domain>/mcp
    • Uwierzytelnianie: Wybierz pozycję "Microsoft Entra"
    • Typ: Wybierz "Tożsamość zarządzana przez projekt"
    • Odbiorcy: To jest URI identyfikatora aplikacji Entra w sekcji 'Konfigurowanie metadanych chronionych zasobów'

    Przykład:

    Diagram przedstawiający konfigurację agenta usługi Foundry na potrzeby nawiązywania połączenia z serwerem MCP.

  5. Wybierz i podłącz.

  6. Przetestuj, zadając pytanie, na które można odpowiedzieć za pomocą narzędzia serwera w oknie czatu.

Protokół autoryzacji serwera

W danych wyjściowych debugowania z programu Visual Studio Code zobaczysz serię żądań i odpowiedzi, gdy klient i serwer MCP wchodzą w interakcję. W przypadku korzystania z wbudowanej autoryzacji serwera MCP zobaczysz następującą sekwencję zdarzeń:

  1. Edytor wysyła żądanie inicjowania do serwera MCP.
  2. Serwer MCP odpowiada z błędem wskazującym, że autoryzacja jest wymagana. Odpowiedź zawiera wskaźnik do metadanych chronionych zasobów (PRM) dla aplikacji. Wbudowana funkcja autoryzacji generuje PRM dla aplikacji serwera.
  3. Edytor pobiera PRM i używa go do identyfikacji serwera autoryzacji.
  4. Edytor próbuje uzyskać metadane serwera autoryzacji (ASM) z dobrze znanego punktu końcowego na serwerze autoryzacji.
  5. Identyfikator Entra firmy Microsoft nie obsługuje usługi ASM w dobrze znanym punkcie końcowym, więc edytor wraca do korzystania z punktu końcowego metadanych OpenID Connect w celu uzyskania usługi ASM. Próbuje to odnaleźć, wstawiając dobrze znany punkt końcowy przed wszelkimi innymi informacjami o ścieżce.
  6. Specyfikacje openID Connect faktycznie zdefiniowały dobrze znany punkt końcowy jako punkt końcowy po informacjach o ścieżce i w tym miejscu hostuje go identyfikator Entra firmy Microsoft. Dlatego edytor spróbuje ponownie z tym formatem.
  7. Edytor pomyślnie pobierze usługę ASM. Następnie użyje tych informacji z własnym identyfikatorem klienta do przeprowadzenia logowania. W tym momencie edytor monituje o zalogowanie się i wyrażenie zgody na aplikację.
  8. Zakładając, że pomyślnie się zalogujesz i wyrazisz zgodę, edytor ukończy uwierzytelnianie. Powtarza żądanie inicjowania na serwerze MCP, tym razem z tokenem autoryzacji w żądaniu. To ponowne podejście nie jest widoczne na poziomie wyników debugowania, ale można je zobaczyć na poziomie wyników śledzenia.
  9. Serwer MCP weryfikuje token i odpowiada z pomyślną odpowiedzią na żądanie inicjowania. Standardowy przepływ MCP kontynuuje się od tego momentu, ostatecznie prowadząc do odkrycia narzędzia MCP zdefiniowanego w tym przykładzie.

Rozwiązywanie problemów

Jeśli napotkasz problemy, poproś GitHub Copilot o pomoc. Poniżej przedstawiono kilka konkretnych pomysłów dotyczących rozwiązywania problemów:

W tej chwili nie ma innych pomysłów. Pamiętaj, aby zapytać czat Copilot o wszelkie błędy, które mogą wystąpić.

Dalsze kroki

Dowiedz się, jak zarejestrować serwery MCP hostowane w usłudze Azure Functions w Centrum interfejsu API platformy Azure.