Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du är värd för MCP-servrar ( Remote Model Context Protocol ) på Azure Functions. Du får också lära dig hur du använder inbyggd autentisering för att konfigurera serverslutpunktsauktorisering och skydda dina AI-verktyg bättre.
Det finns två sätt att vara värd för en fjärransluten MCP-server i Azure Functions:
| MCP-serveralternativ | Description | Bäst för... |
|---|---|---|
| MCP-tilläggsserver | Använder Azure Functions MCP-tillägget för att skapa anpassade MCP-servrar, där tilläggsutlösaren låter dig definiera verktygsslutpunkter. Dessa servrar stöds på alla Functions-språk och utvecklas, distribueras och hanteras som andra funktionsappar. | När du redan är bekant med Functions och dess bindningsbaserade programmeringsmodell. |
| Lokalt installerad server | Funktioner kan vara värd för ett MCP-serverprojekt som skapats med hjälp av standard-MCP-SDK:er. | När du redan har skapat servern med hjälp av de officiella MCP-SDK:erna och letar efter händelsedrivna, serverlösa och skalbara värdtjänster i Azure. |
Anmärkning
Möjligheten att ha Azure Functions som värd för MCP-servrar som du skapar med hjälp av officiella MCP-SDK:er finns för närvarande i förhandsversion.
Den här handledningen beskriver båda MCP-serveralternativen som Functions stöder. Välj den flik som passar bäst för ditt scenario.
I den här handledningen använder du Visual Studio Code för att:
- Skapa ett MCP-serverprojekt med hjälp av MCP-tillägget.
- Kör och verifiera MCP-servern lokalt.
- Skapa en funktionsapp i Azure.
- Distribuera MCP-serverprojektet.
- Aktivera inbyggd autentisering.
Viktigt!
Den här artikeln stöder för närvarande endast C#, Python och TypeScript. Slutför snabbstarten genom att välja något av de språk som stöds överst i artikeln.
Den här artikeln stöder version 4 av Node.js programmeringsmodellen för Azure Functions.
Den här artikeln stöder version 2 av Python-programmeringsmodellen för Azure Functions.
Förutsättningar
Visual Studio Code med följande tillägg:
Azure Functions-tillägget. Det här tillägget kräver Azure Functions Core Tools och försöker installera det när det inte är tillgängligt.
Azure CLI. Du kan också köra Azure CLI-kommandon i Azure Cloud Shell.
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto kostnadsfritt.
Skapa mcp-serverprojektet
Använd Visual Studio Code för att skapa ett MCP-serverprojekt lokalt på önskat språk.
I Visual Studio Code trycker du på F1 för att öppna kommandopaletten. Sök efter och kör kommandot
Azure Functions: Create New Project....Välj katalogplatsen för projektarbetsytan och välj Välj. Du bör antingen skapa en ny mapp eller välja en tom mapp för projektarbetsytan. Välj inte en projektmapp som redan är en del av en arbetsyta.
Ange följande information vid anvisningarna:
Omedelbar Urval Välj en projekttyp Välj C#.Välj en .NET-körning Välj .NET 8.0 LTS.Välj en mall för projektets första funktion Välj MCP Tool trigger.Ange ett funktionsnamn Skriv McpTrigger.Ange ett namnområde Skriv My.Functions.Auktoriseringsnivå Välj FUNCTION, som kräver åtkomstnyckel när du ansluter till den fjärranslutna MCP-servern.Välj hur du vill öppna projektet Välj Open in current window.
Ange följande information vid anvisningarna:
Omedelbar Urval Välj en projekttyp Välj TypeScript.Välj en mall för projektets första funktion Välj MCP Tool trigger.Ange ett funktionsnamn Skriv mcpToolTrigger.Auktoriseringsnivå Välj FUNCTION, som kräver åtkomstnyckel när du ansluter till den fjärranslutna MCP-servern.Välj hur du vill öppna projektet Välj Open in current window.
Ange följande information vid anvisningarna:
Omedelbar Urval Välj en projekttyp Välj Python.Välj en Python-tolk för att skapa en virtuell miljö Välj önskad Python-tolk. Om ett alternativ inte visas skriver du in den fullständiga sökvägen till din Python-binärfil. Välj en mall för projektets första funktion Välj MCP Tool trigger.Namnet på den funktion som du vill skapa Ange mcp_trigger.Auktoriseringsnivå Välj FUNCTION, som kräver åtkomstnyckel när du ansluter till den fjärranslutna MCP-servern.Välj hur du vill öppna projektet Välj Open in current window.
Med den här informationen genererar Visual Studio Code ett kodprojekt för en MCP-serverutlösare. Du kan visa de lokala projektfilerna i Utforskaren.
Starta MCP-servern lokalt
Funktionsappar behöver en lagringskomponent för att köras. Starta den lokala lagringsemulatorn innan du startar servern:
I local.setting.json, säkerställ att du har
"AzureWebJobsStorage": "UseDevelopmentStorage=true".I Visual Studio Code trycker du på F1 för att öppna kommandopaletten. I kommandopaletten söker du efter och väljer
Azurite: Start.Kontrollera det nedre fältet och kontrollera att Azurite-emuleringstjänster körs. I så fall kan du nu köra servern lokalt.
Om du vill börja köra lokalt trycker du på F5.
Funktionsappar behöver en lagringskomponent för att köras. Starta den lokala lagringsemulatorn innan du startar servern:
I local.setting.json ska du se till att du har
"AzureWebJobsStorage": "UseDevelopmentStorage=true".I Visual Studio Code trycker du på F1 för att öppna kommandopaletten. I kommandopaletten söker du efter och väljer
Azurite: Start.Kontrollera det nedre fältet och kontrollera att Azurite-emuleringstjänster körs. I så fall kan du nu köra servern lokalt.
Om du vill börja köra lokalt trycker du på F5.
Funktionsappar behöver en lagringskomponent för att köras. Starta den lokala lagringsemulatorn innan du startar servern:
I local.setting.json kontrollera att du har
"AzureWebJobsStorage": "UseDevelopmentStorage=true".I Visual Studio Code trycker du på F1 för att öppna kommandopaletten. I kommandopaletten söker du efter och väljer
Azurite: Start.Kontrollera det nedre fältet och kontrollera att Azurite-emuleringstjänster körs. I så fall kan du nu köra servern lokalt.
Om du vill börja köra lokalt trycker du på F5.
Testa servern
Leta upp
.vscodekatalogen och öppnamcp.json. Redigeraren bör lägga till serverns anslutningsinformation.Starta servern genom att välja knappen Start ovanför servernamnet.
När du ansluter till servern visas antalet tillgängliga verktyg ovanför servernamnet.
Öppna Visual Studio Code Copilot-chatten i agentläge och ställ sedan en fråga. Till exempel, "Hälsa med #din-lokala-server-namn". Den här frågan säkerställer att Copilot använder servern för att besvara frågan.
När Copilot begär att köra ett verktyg från den lokala MCP-servern väljer du Tillåt.
Koppla från servern när du är klar med testningen genom att välja Stoppa och
Cntrl+Csluta köra den lokalt.
Tips/Råd
I copilot-chattfönstret väljer du verktygsikonen längst ned för att se listan över servrar och verktyg som är tillgängliga för chatten. Kontrollera att den lokala MCP-servern kontrolleras vid testning.
Fjärr-MCP-serverauktorisering
Det finns två sätt att minska eller förhindra obehörig användning av dina fjärranslutna MCP-serverslutpunkter:
| Metod | Description |
|---|---|
| Inbyggd serverautentisering (förhandsversion) | Funktioner innehåller inbyggd App Service-autentisering och auktorisering som implementerar OAuth-kraven i MCP-auktoriseringsspecifikationsprotokollet . Klienter som försöker komma åt servern omdirigeras till en konfigurerad identitetsprovider, till exempel Microsoft Entra-ID, för autentisering innan de tillåts ansluta. Den här metoden ger den högsta säkerhetsnivån för dina verktygsslutpunkter. |
| Nyckelbaserad autentisering | Som standard implementerar Functions ett krav på åtkomstnyckel så att klienter som försöker använda MCP-serververktyg måste presentera ett värde för delad hemlighetsnyckel i begärandehuvudet. Åtkomstnycklar ger inte samma säkerhetsnivå som OAuth-baserad autentisering, men det blir svårare att komma åt offentliga verktyg. Använd en Anonymous åtkomstnivå för att inaktivera åtkomstnycklar på servern när du använder OAuth-baserad autentisering. |
Anmärkning
Den här guiden innehåller detaljerade konfigurationsinstruktioner för den inbyggda funktionen för serverauktorisering och autentisering, som även kan benämnas App Service-autentisering i andra artiklar. Du hittar en översikt över funktionen och viss användningsvägledning i artikeln Konfigurera inbyggd serverauktorisering (förhandsversion).
Inaktivera nyckelbaserad autentisering
Den inbyggda funktionen för serverauktorisering är en komponent som är separat från Azure Functions. När du använder serverautentisering är det bäst att först inaktivera nyckelbaserad autentisering genom att tillåta anonym åtkomst.
Om du vill inaktivera värdbaserad autentisering på MCP-servern anger du system.webhookAuthorizationLevel till Anonymous i host.json filen:
{
"version": "2.0",
"extensions": {
"mcp": {
...
"system": {
"webhookAuthorizationLevel": "Anonymous"
}
}
}
}
Skapa funktionsappen i Azure
Skapa en funktionsapp i Flex Consumption-planen i Azure som är värd för din MCP-server.
I Azure Portal går du till menyn eller startsidan och väljer Skapa en resurs.
Välj Kom igång och sedan Skapa under Funktionsapp.
Under Välj ett värdalternativ väljer du Flex Consumption Select (Flex Consumption>Select).
På sidan Grundläggande använder du inställningarna för funktionsappen enligt beskrivningen i följande tabell:
Inställning Föreslaget värde Description Subscription Din prenumeration Prenumerationen där du skapar din nya funktionsapp. Resursgrupp myResourceGroup Namn på den nya resursgrupp där du skapar funktionsappen. Funktionsappens namn Globalt unikt namn Namn som identifierar din nya funktionsapp. Giltiga tecken är a-z(skiftlägesokänsligt),0-9och-.Region Föredragen region Välj en region som är nära dig eller nära andra tjänster som dina funktioner kan komma åt. Regioner som inte stöds visas inte. Mer information finns i Visa regioner som stöds för närvarande. Körningsstack Önskat språk Välj en av de språkkörningsstackar som stöds. Redigering i portalen med Visual Studio Code för webben är för närvarande endast tillgängligt för Node.js, PowerShell och Python-appar. C#-klassbibliotek och Java-funktioner måste utvecklas lokalt. Version: Språkversion Välj en version av språkkörningsstacken som stöds. Instansstorlek Förinställning Avgör hur mycket instansminne som allokeras för varje instans av din app. Mer information finns i Instansstorlekar. På sidan Lagring godkänner du standardbeteendet för att skapa ett nytt standardlagringskonto för värd eller väljer att använda ett befintligt lagringskonto.
På sidan Övervakning kontrollerar du att Aktivera Application Insights har valts . Acceptera standardinställningen för att skapa en ny Application Insights-instans, eller välj att använda en befintlig instans. När du skapar en Application Insights-instans uppmanas du också att välja en Log Analytics-arbetsyta.
På sidan Autentisering ändrar du autentiseringstypen till Hanterad identitet för alla resurser. Med det här alternativet skapas även en användartilldelad hanterad identitet som din app använder för att komma åt dessa Azure-resurser med hjälp av Microsoft Entra-ID-autentisering. Hanterade identiteter med Microsoft Entra-ID ger den högsta säkerhetsnivån för att ansluta till Azure-resurser.
Acceptera standardalternativen på de återstående flikarna och välj sedan Granska + skapa för att granska den appkonfiguration som du har valt.
När du är nöjd väljer du Skapa för att etablera och distribuera funktionsappen och relaterade resurser.
Välj ikonen Meddelanden i det övre högra hörnet i portalen och håll utkik efter meddelandet Distributionen lyckades.
Välj Gå till resurs för att se den nya funktionsappen. Du kan också välja Fäst på instrumentbrädan. Genom att fästa gör du det enklare att återvända till den här appresursen från din instrumentpanel.
Distribuera MCP-serverprojektet
Viktigt!
Distribution till en befintlig funktionsapp skriver alltid över innehållet i appen i Azure.
I kommandopanelen anger du sedan och väljer Azure Functions: Distribuera till funktionsapp.
Välj den funktionsapp som du nyss skapade. När du uppmanas att skriva över tidigare distributioner väljer du Distribuera för att distribuera funktionskoden till den nya funktionsappresursen.
När distributionen är klar väljer du Visa utdata för att visa resultatet av skapandet och distributionen, inklusive de Azure-resurser som du skapade. Om du missar meddelandet väljer du klockikonen i det nedre högra hörnet för att se det igen.
Python-appar kräver också att du lägger till den här appinställningen:
PYTHONPATH=/home/site/wwwroot/.python_packages/lib/site-packages.
Nu kan du distribuera serverprojektet:
Viktigt!
Distribution till en befintlig funktionsapp skriver alltid över innehållet i appen i Azure.
I kommandopanelen anger du sedan och väljer Azure Functions: Distribuera till funktionsapp.
Välj den funktionsapp som du nyss skapade. När du uppmanas att skriva över tidigare distributioner väljer du Distribuera för att distribuera funktionskoden till den nya funktionsappresursen.
När distributionen är klar väljer du Visa utdata för att visa resultatet av skapandet och distributionen, inklusive de Azure-resurser som du skapade. Om du missar meddelandet väljer du klockikonen i det nedre högra hörnet för att se det igen.
När distributionen är klar bör du se ett meddelande i Visual Studio Code om att ansluta till servern. Välj knappen Anslut för att låta redigeraren konfigurera serveranslutningsinformation i mcp.json.
Aktivera inbyggd serverauktorisering och autentisering
Följande instruktion visar hur du aktiverar den inbyggda auktoriserings- och autentiseringsfunktionen i serverappen och konfigurerar Microsoft Entra-ID som identitetsprovider. När du är klar testar du genom att ansluta till servern i Visual Studio Code och ser att du uppmanas att autentisera innan du ansluter.
Konfigurera autentisering i serverappen
Öppna serverappen på Azure-portalen och välj Inställningar>Autentisering på den vänstra menyn.
Välj Lägg till identitetsprovidern>Microsoft som identitetsprovider.
För Välj en hyresgäst för ditt program och dess användare väljer du Arbetsstyrkekonfiguration (aktuell hyresgäst).
Under Appregistrering: använd följande inställningar:
Inställning Urval Typ av appregistrering Skapa ny appregistrering Namn Ange ett beskrivande namn för din app Förfallodatum för klienthemlighet Rekommenderas: 180 dagar Kontotyper som stöds Aktuell hyresgäst - Enskild hyresgäst Under Ytterligare kontroller:för Krav på klientprogram väljer du Tillåt begäranden från specifika klientprogram, väljer pennikonen, lägger till Visual Studio Code-klient-ID
aebc6443-996d-45c2-90f0-388ff96faa56och väljer OK. Lämna de andra avsnitten som de är.Under autentiseringsinställningar för App Service använder du följande inställningar:
Inställning Urval Begränsa åtkomst Kräv autentisering Oautentiserade begäranden HTTP 401 Obehörig: rekommenderas för API:er Tokenbutik Markera kryssrutan som tillåter tokenuppdatering Välj Lägg till. När inställningarna har spridits bör du se följande resultat:
Förauktorisera Visual Studio Code som klient
Välj namnet på Entra-appen bredvid Microsoft. Den här åtgärden tar dig till översikten över Entra-appresursen.
På den vänstra menyn hittar du Hantera –> Exponera ett API.
Under Auktoriserade klientprogram väljer du +Lägg till ett klientprogram.
Ange Visual Studio Code-klient-ID:
aebc6443-996d-45c2-90f0-388ff96faa56.Markera rutan framför räckvidden som ser ut som
api://abcd123-efg456-hijk-7890123/user_impersonation.Välj Lägg till program.
Konfigurera skyddade resursmetadata (förhandsversion)
I samma exponera en API-vy letar du reda på avsnittet Omfång och kopierar omfånget som gör att administratörer och användare kan godkänna Entra-appen. Det här värdet ser ut som
api://abcd123-efg456-hijk-7890123/user_impersonation.Kör samma kommando som tidigare för att lägga till inställningen
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>"I vyn Exponera ett API hittar du även URI: n för program-ID (ser ut som
api://abcd123-efg456-hijk-7890123) överst och sparar för senare steg.
Ansluta till servern
Öppna mcp.json i .vscode katalogen.
När du väljer Anslut i popup-fönstret efter distributionen fyller Visual Studio Code filen med serveranslutningsinformation.
Om du missar det steget kan du också öppna Utdata (Ctrl/Cmd+Shift+U) för att hitta anslutningsknappen inuti raden i slutet av distributionsloggarna.
Du kan också lägga till anslutningsinformation manuellt:
Hämta serverdomänen genom att köra följande kommando:
az functionapp show --name <FUNCTION_APP_NAME> --resource-group <RESOURCE_GROUP_NAME> --query "defaultHostName" --output tsvI Visual Studio Code öppnar du kommandopaletten, söker efter och kör kommandot MCP: Add Server... (Lägg till server... ) och följer sedan de här anvisningarna:
Omedelbar Förslag Typ av server som ska läggas till HTTP URL för MCP-servern https://<FUNCTION_APP_NAME>.azurewebsites.azurewebsites.net/runtime/webhooks/mcpServernamn remote-mcp-server Var ska servern installeras? Workspace Visual Studio Code öppnar inställningsfilen
mcp.jsonåt dig.
Följ anvisningarna i nästa avsnitt för att ansluta till servern beroende på hur du konfigurerade autentiseringen.
Med inbyggd autentisering och auktorisering
Starta fjärrservern genom att välja knappen Start ovanför servernamnet.
När du tillfrågas om autentisering med Microsoft väljer du Tillåt och loggar sedan in med din e-post (den som används för att logga in på Azure-portalen).
När du ansluter till servern visas antalet tillgängliga verktyg ovanför servernamnet.
Öppna Visual Studio Code Copilot-chatten i agentläge och ställ sedan en fråga. Till exempel
Greet with #your-remote-mcp-server-name.Stoppa servern när testningen är klar.
Information om vad som händer när Visual Studio Code försöker ansluta till den fjärranslutna MCP-servern finns i Protokollet för serverauktorisering.
Med åtkomstnyckel
Om du inte aktiverar inbyggd autentisering och auktorisering och i stället vill ansluta till MCP-servern med hjälp av en åtkomstnyckel, ska den mcp.json innehålla functions-åtkomstnyckeln i begärandehuvudena för en serverregistrering.
Visual Studio fyller automatiskt i åtkomstnyckeln när du startar servern.
Filen mcp.json bör se ut som i följande exempel:
{
"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
}
]
}
Om du vill hitta åtkomstnyckeln själv går du till funktionsappen på Azure-portalen. På den vänstra menyn hittar du Functions –> Appnycklar. Under avsnittet Systemnycklar hittar du den med namnet mcp_extension.
Tips/Råd
Om du vill se anslutningsloggar går du till servernamnet och väljer sedan Mer>visa utdata. Om du vill ha mer information om interaktionen mellan klienten (Visual Studio Code) och den fjärranslutna MCP-servern väljer du kugghjulsikonen och väljer Spåra.
Konfigurera Azure AI Foundry-agenten så att den använder dina verktyg
Du kan konfigurera en agent på Azure AI Foundry för att använda verktyg som exponeras av MCP-servrar som finns i Azure Functions.
I Foundry-portalen hittar du den agent som du vill konfigurera med MCP-servrar som finns på Functions.
Under Verktyg väljer du knappen Lägg till och väljer sedan + Lägg till ett nytt verktyg.
Välj fliken Anpassad och välj sedan McP (Model Context Protocol) och knappen Skapa .
Fyll i följande information:
- Namn: Namnet på servern
- Fjärrslutpunkt för MCP-server:
- MCP-tilläggsserver:
https://<server domain>/runtime/webhooks/mcp - Lokalt installerad server:
https://<server domain>/mcp
- MCP-tilläggsserver:
- Autentisering: Välj "Microsoft Entra"
- Typ: Välj "Projekthanterad identitet"
- Målgrupp: Det här är Entra App ID-URI:n från Konfigurera skyddade resursmetadata
Till exempel:
Välj Anslut.
Testa genom att ställa en fråga som kan besvaras med hjälp av ett serververktyg i chattfönstret.
Protokoll för serverauktorisering
I felsökningsutdata från Visual Studio Code ser du en serie begäranden och svar när MCP-klienten och servern interagerar. När du använder den inbyggda MCP-serverauktoriseringen visas följande händelsesekvens:
- Redigeraren skickar en initieringsbegäran till MCP-servern.
- MCP-servern svarar med ett fel som anger att auktorisering krävs. Svaret innehåller en pekare till programmets skyddade resursmetadata (PRM). Den inbyggda auktoriseringsfunktionen genererar prm för serverappen.
- Redigeraren hämtar prm och använder den för att identifiera auktoriseringsservern.
- Redigeraren försöker hämta auktoriseringsservermetadata (ASM) från en välkänd slutpunkt på auktoriseringsservern.
- Microsoft Entra-ID stöder inte ASM på den välkända slutpunkten, så redigeraren återgår till att använda OpenID Connect-metadataslutpunkten för att hämta ASM. Den försöker identifiera detta genom att infoga den välkända slutpunkten före annan sökvägsinformation.
- OpenID Connect-specifikationerna definierade faktiskt den välkända slutpunkten som att ligga efter sökvägsinformation, och det är där Microsoft Entra ID hostar den. Så redigeraren försöker igen med det formatet.
- Redigeraren hämtar framgångsrikt ASM. Den använder sedan den här informationen med ett eget klient-ID för att utföra en inloggning. I det här läget uppmanar redigeraren dig att logga in och samtycka till programmet.
- Förutsatt att du har loggat in och samtyckt slutför redigeraren autentiseringen. Den upprepar intialiseringsbegäran till MCP-servern, den här gången inklusive en auktoriseringstoken i begäran. Det här återförsöket visas inte på utdatanivån Felsöka, men du kan se det på utdatanivån Spårning.
- MCP-servern validerar token och svarar med ett lyckat svar på initieringsbegäran. McP-standardflödet fortsätter från den här punkten, vilket i slutändan resulterar i identifiering av MCP-verktyget som definierats i det här exemplet.
Felsökning
Om du får problem ber du GitHub Copilot om hjälp. Här följer några specifika tips för felsökning:
Inga andra idéer just nu. Kom ihåg att fråga Copilot-chatten om eventuella fel som inträffar.
Nästa steg
Lär dig hur du registrerar AZURE Functions-värdbaserade MCP-servrar i Azure API Center.