Dataagent som modellkontextprotokollserver (förhandsversion)

Model Context Protocol (MCP) är en framväxande standard i AI-landskapet som gör att AI-system kan ansluta med verktyg och data utanför sig själva. Den definierar hur en AI-modell kan identifiera vad som är tillgängligt och interagera med den på ett konsekvent sätt. I stället för att skapa engångsintegreringar erbjuder MCP ett standardsätt för att ansluta saker som fungerar i olika appar och tjänster. Den här metoden gör det mycket enklare för AI-system att gå utöver sin inbyggda kunskap samtidigt som saker och ting hålls konsekventa. Det hjälper också team att röra sig snabbare, eftersom de inte behöver återuppfinna samma anslutningar varje gång.

MCP har två huvuddelar: klienten och servern.

En MCP-klient är den app eller upplevelse som användaren interagerar med. Det är där du ställer frågor eller utlöser åtgärder. Klienten kontaktar MCP-servrar för att hitta verktyg och använda dem. Till exempel kan Visual Studio Code fungera som en MCP-klient när den ansluter till externa verktyg för att hämta data eller hjälpa dig att skriva och köra kod.

En MCP-server exponerar verktyg, data eller tjänster så att klienter kan använda dem. Den talar om för klienten vad som är tillgängligt och hur den ska användas. Till exempel kan en Fabric dataagent fungera som en MCP-server genom att exponera företagsdata och frågor som ett AI-system kan använda.

Tillsammans gör klienten och servern det enkelt att ansluta AI-system med verkliga data och åtgärder, utan att skapa anpassade integreringar varje gång.

Viktigt!

Den här funktionen är i förhandsversion.

Viktigt!

När du använder en Fabric dataagent som en MCP-server kan svar som returneras av dataagenten skickas utanför Fabric efterlevnadsgräns eller geografiska region och bearbetas eller lagras enligt villkoren och datahanteringsprinciperna för den MCP-klient som du använder.

Förutsättningar

Så här fungerar det

En publicerad Fabric dataagent exponerar ett enda MCP-verktyg. Verktyget representerar själva dataagenten, så en MCP-klient skickar en fråga till verktyget och får tillbaka ett svar som baseras på de data som dataagenten har åtkomst till i Fabric OneLake.

Eftersom klienten bestämmer när verktyget ska anropas är beskrivningen av dataagenten viktig. När du publicerar en dataagent blir dess beskrivning den verktygsbeskrivning som MCP-servern annonserar. Klienter och orkestrerare läser den beskrivningen för att bestämma när och hur dataagenten ska anropas, så skriv en tydlig och specifik beskrivning som förklarar vad agenten vet och vilka typer av frågor den kan besvara.

Du kan använda dataagentens MCP-server från valfri MCP-klient, inte bara ett verktyg eller en redigerare. Så länge din klient talar MCP över streambar HTTP och kan bifoga en giltig Fabric-bärartoken till sina begäranden, kan den ansluta. Avsnitten som följer visar två klienter: ett Python skript och Visual Studio Code. Samma slutpunkt och samma token fungerar för alla andra MCP-klienter som du skapar eller antar.

Allt som pratar med MCP-servern måste tala MCP, så per definition fungerar det som en MCP-klient. Termen "MCP-klient" betyder inte en specifik produkt eller SDK. Det innebär all kod som följer protokollet. Slutpunkten är inte ett vanligt REST API som du kan skicka en godtycklig begäran till. En anslutning följer MCP-meddelandeflödet: en initialize handskakning, ett tools/list anrop för att identifiera verktyget och en tools/call begäran om att ställa en fråga. Ett SDK som MCP-Python SDK hanterar det flödet åt dig, men du kan också implementera det själv via vanlig HTTP så länge dina begäranden följer protokollet. En allmän HTTP-klient som hoppar över handskaknings- och meddelandeformatet fungerar inte.

Anmärkning

MCP-servern för dataagenten stöder inte dynamisk klientregistrering. Klienten kan inte registrera sig själv och hämta autentiseringsuppgifter automatiskt via protokollet. I stället skaffar du en Fabric token via ditt eget autentiseringsflöde och bifogar den till varje begäran, enligt exemplen i den här artikeln.

Hämta MCP-serverinformationen

När du har publicerat dataagenten öppnar du dess inställningar och går till fliken Modellkontextprotokoll . Den här fliken visar:

  • McP-servernamn för dataagenten
  • MCP-server-URL (kopiera det här värdet, du använder det i varje klient)
  • MCP-verktygsnamn för dataagent
  • Beskrivning av MCP-serververktyget

Du kan också ladda ned filenmcp.json från den här fliken för att konfigurera klienter som läser formatet, till exempel Visual Studio Code.

Skärmbild som visar fliken MCP-serverinställningar för dataagenten.

Du kan också skapa URL:en själv från ditt arbetsyte-ID och dataagent-ID:

https://api.fabric.microsoft.com/v1/mcp/workspaces/{WorkspaceId}/dataagents/{DataAgentId}/agent
Placeholder Description
{WorkspaceId} ID:t för den Fabric arbetsyta som innehåller dataagenten.
{DataAgentId} ID:t för den publicerade dataagenten.

En manuellt skapad URL fungerar bara när du har publicerat dataagenten. Om agenten inte publiceras returnerar slutpunkten ett fel även när URL:en är korrekt.

Authentication

Varje begäran till MCP-slutpunkten måste autentiseras mot Fabric. Klienten bifogar en bearer-token i Authorization-headern, och tokenen måste ha behörighet att få åtkomst till målarbetsytan och dataagenten. Token kan representera antingen en användaridentitet eller ett huvudnamn för tjänsten.

Hur du hämtar token beror på din klient. Visual Studio Code uppmanar dig att logga in interaktivt. I ett Python skript hämtar du token via ett bibliotek som azure-identity och lägger själv till den i begäranderubrikerna. Oavsett vilken klient det gäller, begär tokenen för scopet https://api.fabric.microsoft.com/.default.

Ansluta från Python

Det här exemplet ansluter till MCP-slutpunkten för dataagenten från ett fristående Python skript, identifierar verktyget, skickar en fråga och skriver ut svaret. Den använder MCP-Python SDK och azure-identity biblioteket.

Förutsättningar för Python-klienten

  • Python 3.10 eller senare.
  • paketen mcp och azure-identity.
  • Ett sätt att logga in på Fabric. I det här exemplet används Azure CLI. Installera Azure CLI och kör az login och logga sedan in med ett konto som har åtkomst till arbetsytan och dataagenten.

Installera paketen:

pip install mcp azure-identity

Skapa klienten steg för steg

I följande avsnitt skapas skriptet en bit i taget. Varje block fortsätter samma fil, så du kan klistra in dem i ordning i en enda .py fil och köra den.

Importera biblioteken och ange dina värden. Ersätt arbetsytans ID, dataagent-ID och fråga med dina egna värden. Följer mcp_url det slutpunktsformat som beskrevs tidigare.

import asyncio

from azure.identity import AzureCliCredential
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

workspace_id = "<your-workspace-id>"
data_agent_id = "<your-data-agent-id>"
question = "<your question>"

mcp_url = (
    f"https://api.fabric.microsoft.com/v1/mcp/workspaces/{workspace_id}"
    f"/dataagents/{data_agent_id}/agent"
)

Hämta en token och skapa autentiseringshuvudet. AzureCliCredential återanvänder inloggningen från az login. Hjälpkomponenten begär en token för Fabric-omfånget och returnerar den i ett Authorization-huvud som varje begäran innehåller.

credential = AzureCliCredential()


def get_auth_headers():
    token = credential.get_token("https://api.fabric.microsoft.com/.default")
    return {"Authorization": f"Bearer {token.token}"}

Öppna anslutningen, identifiera verktyget och ställ frågan. Den här funktionen öppnar en strömmande HTTP-anslutning med autentiseringshuvudet, kör MCP-handskakningen med initialize, listar verktygen och läser det enda verktyg som dataagenten exponerar. Den hittar namnet på frågeargumentet från verktygets indataschema, så att du inte hårdkodar det och anropar sedan verktyget och samlar in texten från svaret.

async def query_data_agent(question):
    headers = get_auth_headers()

    async with streamablehttp_client(mcp_url, headers=headers) as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # The data agent exposes a single tool. Discover it, then call it.
            tools = await session.list_tools()
            tool = tools.tools[0]
            question_arg = next(iter(tool.inputSchema["properties"]))

            result = await session.call_tool(tool.name, {question_arg: question})

            answers = [block.text for block in result.content if block.type == "text"]
            return "\n".join(answers)

Kör den och skriv ut svaret. query_data_agent är en korutin, så asyncio.run kör den till slut och returnerar resultatet.

answer = asyncio.run(query_data_agent(question))
print(answer)

Eftersom skriptet läser det första verktyget som servern annonserar och hittar frågeargumentet från verktygets indataschema, fortsätter det att fungera även om verktygsnamnet eller argumentnamnet ändras. Du behöver inte hårdkoda något av värdena.

Tip

AzureCliCredential läser inloggningen som du skapade med az login. Om du vill köra obevakad, till exempel i en tjänst eller ett jobb, använder du en autentiseringsuppgift för tjänstens huvudnamn i stället, till exempel ClientSecretCredential eller DefaultAzureCredential. Resten av koden förblir densamma.

Ansluta från Visual Studio Code

Visual Studio Code kan fungera som en MCP-klient. Följande steg lägger till MCP-servern för dataagenten och ställer frågor från redigeraren. De här stegen är ett exempel. slutpunkten och token är samma som andra MCP-klienter använder.

Lägg till MCP-servern

  1. Öppna Visual Studio Code och välj en mapp att arbeta i.

  2. Skapa en .vscode-mapp i den valda mappen.

  3. I .vscode skapar du en fil med namnet mcp.json.

  4. Visual Studio Code visar en blå knappen Lägg till server längst ned till höger i fönstret.

    Skärmbild som visar MCP-serverns json-fil.

  5. Välj Lägg till server och välj sedan HTTP. När du uppmanas att ange en URL klistrar du in den MCP-server-URL som du kopierade tidigare.

    Skärmbild som visar valet av HTTP.

    Skärmbild som visar var du anger URL:en för MCP-servern.

  6. Tryck på Retur och ange ett namn för servern. Visual Studio Code använder det här namnet för att visa servern.

  7. Visual Studio Code försöker autentisera. Välj Tillåt och logga in med dina autentiseringsuppgifter.

Servern skapas.

Skärmbild som visar MCP-filen för dataagenten.

Aktivera agentläge

När du har lagt till servern aktiverar du agentläget så att Visual Studio Code kan dirigera dina frågor till dataagenten:

  1. Öppna kommandopaletten (Ctrl+Skift+P eller Cmd+Skift+P).

  2. Sök efter Aktivera agentläge och välj det.

  3. Bekräfta eventuella uppmaningar om att aktivera läget.

    Skärmbild som visar dataagenten i Visual Studio Code i agentläge.

När agentläget är aktivt väljer du en orkestrerare för att hantera dina frågor. Dirigeraren hanterar flödet mellan dina frågor i redigeraren och dataagentens MCP-server. Tillgängliga orkestratorer i förhandsversionen inkluderar GPT-5, GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Pro och andra.

Ställ frågor

När agentläget är aktiverat och en orkestrerare har valts ställer du frågor direkt från redigeraren. Orchestrator dirigerar varje fråga till MCP-servern för dataagenten och agenten returnerar ett svar som baseras på de data som den har åtkomst till i OneLake. Du stannar kvar i redigeringsprogrammet medan du tar med organisationskunskaper i dina AI-arbetsflöden.