Agente de dados como servidor de Protocolo de Contexto de Modelo (versão prévia)

O PROTOCOLO MCP (Model Context Protocol) é um padrão emergente no cenário de IA que permite que os sistemas de IA se conectem com ferramentas e dados fora de si. Ele define como um modelo de IA pode descobrir o que está disponível e interagir com ele de forma consistente. Em vez de criar integrações pontuais, o MCP oferece uma maneira padrão de conectar itens que funcionam em diferentes aplicativos e serviços. Essa abordagem torna muito mais fácil para os sistemas de IA ir além de seu conhecimento interno, mantendo as coisas consistentes. Também ajuda as equipes a se moverem mais rapidamente, já que elas não precisam reinventar as mesmas conexões todas as vezes.

O MCP tem duas partes principais: o cliente e o servidor.

Um cliente MCP é o aplicativo ou a experiência com a qual o usuário interage. É onde você faz perguntas ou dispara ações. O cliente acessa os servidores MCP para encontrar ferramentas e usá-las. Por exemplo, Visual Studio Code pode atuar como um cliente MCP quando se conecta a ferramentas externas para recuperar dados ou ajudá-lo a escrever e executar código.

Um servidor MCP expõe ferramentas, dados ou serviços para que os clientes possam usá-los. Ele informa ao cliente o que está disponível e como usá-lo. Por exemplo, um agente de dados Fabric pode atuar como um servidor MCP expondo dados corporativos e consultas que um sistema de IA pode usar.

Juntos, o cliente e o servidor facilitam a conexão de sistemas de IA com dados e ações reais, sem criar integrações personalizadas todas as vezes.

Importante

Esse recurso está na versão prévia.

Importante

Quando você consome um agente de dados Fabric como um servidor MCP, as respostas retornadas pelo agente de dados podem ser enviadas fora do limite de conformidade ou da região geográfica do Fabric e processadas ou armazenadas de acordo com os termos e políticas de tratamento de dados do cliente MCP que você usa.

Pré-requisitos

Como funciona

Um agente de dados Fabric publicado expõe uma única ferramenta MCP. Essa ferramenta representa o próprio agente de dados, de modo que um cliente MCP envia uma pergunta para a ferramenta e obtém uma resposta fundamentada nos dados aos quais o agente de dados tem acesso no Fabric OneLake.

Como o cliente decide quando chamar a ferramenta, a descrição do agente de dados é importante. Quando você publica um agente de dados, sua descrição se torna a descrição da ferramenta que o servidor MCP anuncia. Clientes e orquestradores leem essa descrição para decidir quando e como chamar o agente de dados, portanto, escreva uma descrição clara e específica que explique o que o agente sabe e os tipos de perguntas que ele pode responder.

Você pode usar o servidor MCP do agente de dados a partir de qualquer cliente MCP, não apenas de uma ferramenta ou editor específico. Desde que seu cliente fale MCP sobre HTTP transmitivel e possa anexar um token de portador de Fabric válido a suas solicitações, ele poderá se conectar. As seções a seguir mostram dois clientes: um script Python e Visual Studio Code. O mesmo ponto de extremidade e o mesmo token funcionam para qualquer outro cliente MCP que você compila ou adota.

Qualquer coisa que fale com o servidor MCP tem que falar MCP, portanto, por definição, ele atua como um cliente MCP. O termo "cliente MCP" não significa um produto específico ou SDK. Significa qualquer código que siga o protocolo. O ponto de extremidade não é uma API REST simples para a qual você pode enviar uma solicitação arbitrária. Uma conexão segue o fluxo de mensagens MCP: um initialize handshake, uma tools/list chamada para descobrir a ferramenta e uma solicitação tools/call para fazer uma pergunta. Um SDK, como o MCP Python SDK, manipula esse fluxo para você, mas você também pode implementá-lo por http sem formatação, desde que suas solicitações sigam o protocolo. Um cliente HTTP genérico que ignora o formato de handshake e mensagem não funcionará.

Observação

O servidor MCP do agente de dados não dá suporte ao registro dinâmico do cliente. Seu cliente não pode se registrar e obter credenciais automaticamente por meio do protocolo. Em vez disso, você adquire um token Fabric por meio de seu próprio fluxo de autenticação e o anexa a cada solicitação, conforme mostrado nos exemplos deste artigo.

Obter os detalhes do servidor MCP

Depois de publicar o agente de dados, abra suas Configurações e vá para a guia Protocolo de Contexto do Modelo . Esta guia mostra:

  • Nome do servidor MCP do agente de dados
  • URL do servidor MCP (copie esse valor; você a usa em todos os clientes)
  • Nome da ferramenta MCP do agente de dados
  • Descrição da ferramenta do servidor MCP

Você também pode baixar o arquivo mcp.json dessa guia para configurar clientes que leem esse formato, como Visual Studio Code.

Captura de tela mostrando a guia de configurações do servidor MCP do agente de dados.

Você também pode criar a URL por conta própria com a ID do workspace e a ID do agente de dados:

https://api.fabric.microsoft.com/v1/mcp/workspaces/{WorkspaceId}/dataagents/{DataAgentId}/agent
Espaço reservado Descrição
{WorkspaceId} O ID do workspace do Fabric que contém o agente de dados.
{DataAgentId} O identificador do agente de dados publicado.

Uma URL criada manualmente só funciona depois que você publica o agente de dados. Se o agente não for publicado, o endpoint retornará erro mesmo quando a URL estiver correta.

Authentication

Toda solicitação ao endpoint MCP deve ser autenticada no Fabric. Seu cliente anexa um token Bearer no cabeçalho Authorization, e o token deve ter permissão para acessar o workspace de destino e o agente de dados. O token pode representar uma identidade de usuário ou uma entidade de serviço.

A forma como você obtém o token depende do seu cliente. Visual Studio Code solicita que você entre interativamente. Em um script Python, você adquire o token por meio de uma biblioteca como azure-identity e o adiciona aos cabeçalhos de solicitação por conta própria. Seja qual for o cliente, solicite o token para o escopo https://api.fabric.microsoft.com/.default.

Conectar a partir do Python

Este exemplo se conecta ao endpoint MCP do agente de dados a partir de um script Python independente, descobre a ferramenta, envia uma pergunta e imprime a resposta. Ele usa o MCP Python SDK e a azure-identity biblioteca.

Pré-requisitos para o cliente Python

  • Python 3.10 ou posterior.
  • Os pacotes mcp e azure-identity.
  • Uma maneira de entrar no Fabric. Este exemplo usa o CLI do Azure. Instale o CLI do Azure e, em seguida, execute az login e entre com uma conta que tenha acesso ao workspace e ao agente de dados.

Instale os pacotes:

pip install mcp azure-identity

Criar o cliente passo a passo

As seções a seguir criam o script uma peça de cada vez. Cada bloco continua o mesmo arquivo, para que você possa colá-los em ordem em um único .py arquivo e executá-lo.

Importe as bibliotecas e defina seus valores. Substitua o ID do espaço de trabalho, o ID do agente de dados e a pergunta pelos seus próprios valores. O mcp_url segue o formato de ponto de extremidade descrito anteriormente.

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"
)

Adquira um token e crie o cabeçalho de autenticação. AzureCliCredential reaproveita o login de az login. O auxiliar solicita um token para o escopo do Fabric e o retorna na forma de um cabeçalho Authorization que acompanha cada solicitação.

credential = AzureCliCredential()


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

Abra a conexão, descubra a ferramenta e faça a pergunta. Essa função abre uma conexão HTTP que pode ser transmitida com o cabeçalho de autenticação, executa o handshake mcp com initialize, lista as ferramentas e lê a única ferramenta que o agente de dados expõe. Ele encontra o nome do argumento da pergunta no esquema de entrada da ferramenta, para que você não precise defini-lo fixamente no código; em seguida, chama a ferramenta e extrai o texto da resposta.

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)

Execute-o e imprima a resposta. query_data_agent é uma coroutina, portanto asyncio.run , leva-a à conclusão e retorna o resultado.

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

Como o script lê a primeira ferramenta que o servidor anuncia e localiza o argumento de pergunta do esquema de entrada da ferramenta, ele continua funcionando mesmo se o nome da ferramenta ou o nome do argumento for alterado. Você não precisa codificar um dos dois valores.

Dica

AzureCliCredential lê o login que você criou com az login. Para executar sem supervisão, como em um serviço ou em uma tarefa, use uma credencial de principal de serviço, por exemplo ClientSecretCredential ou DefaultAzureCredential. O restante do código permanece o mesmo.

Conectar-se a partir do Visual Studio Code

Visual Studio Code pode atuar como um cliente MCP. As etapas a seguir adicionam o servidor MCP do agente de dados e permitem fazer perguntas no editor. Estas etapas são um exemplo; o ponto de extremidade e o token são os mesmos que qualquer outro cliente MCP usa.

Adicionar o servidor MCP

  1. Abra Visual Studio Code e selecione uma pasta na qual trabalhar.

  2. Crie uma pasta .vscode na pasta selecionada.

  3. Dentro do .vscode, crie um arquivo chamado mcp.json.

  4. Visual Studio Code mostra um botão Azul Adicionar Servidor na parte inferior direita da janela.

    Captura de tela mostrando o arquivo json do servidor MCP.

  5. Selecione Adicionar Servidor e, em seguida, selecione HTTP. Quando for solicitada uma URL, cole a URL do servidor MCP que você copiou anteriormente.

    Captura de tela mostrando a seleção de HTTP.

    Captura de tela mostrando onde inserir a URL do servidor MCP.

  6. Pressione Enter e forneça um nome para o servidor. Visual Studio Code usa esse nome para exibir o servidor.

  7. Visual Studio Code está tentando se autenticar. Selecione Permitir e entre com suas credenciais.

O servidor foi criado.

Captura de tela mostrando o arquivo MCP do agente de dados.

Habilitar o modo de agente

Depois de adicionar o servidor, habilite o modo de agente para que Visual Studio Code possa rotear suas perguntas para o agente de dados:

  1. Abra a paleta de comandos (Ctrl+Shift+P ou Cmd+Shift+P).

  2. Procure por Habilitar o Modo de Agente e selecione-o.

  3. Confirme as solicitações para ativar o modo.

    Captura de tela mostrando o agente de dados em Visual Studio Code no modo de agente.

Quando o modo de agente estiver ativo, selecione um orquestrador para lidar com suas perguntas. O orquestrador gerencia o fluxo entre suas perguntas no editor e o servidor MCP do agente de dados. Os orquestradores disponíveis na versão prévia incluem GPT-5, GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Pro e outros.

Faça perguntas

Com o modo de agente ativado e um orquestrador selecionado, faça perguntas diretamente do editor. O orquestrador roteia cada pergunta para o servidor MCP do agente de dados e o agente retorna uma resposta baseada nos dados aos quais tem acesso no OneLake. Você permanece no editor enquanto traz conhecimento organizacional para seus fluxos de trabalho de IA.