Plug-ins do Microsoft 365 Copilot

Os plug-ins permitem que agentes declarativos no Microsoft 365 Copilot interajam com servidores MCP (Protocolo de Contexto de Modelo) ou APIs REST que tenham uma descrição de OpenAPI. Usando um plug-in, os usuários podem pedir a um agente declarativo não apenas para consultar um servidor MCP ou API REST para obter informações, mas também para criar, atualizar e excluir dados e objetos. Tudo o que o servidor MCP ou a API REST pode fazer é acessível por meio de prompts de linguagem natural.

Importante

Plugins só são suportados como ações em agentes declarativos. Eles não estão habilitados no Microsoft 365 Copilot.

Um plug-in fornece um manifesto de plug-in que o Copilot usa para conhecer os recursos do servidor MCP ou da API do plug-in. O Copilot pode então decidir quando um plug-in instalado e habilitado é adequado para responder a qualquer prompt. Para saber mais sobre o arquivo de manifesto que um plug-in requer, consulte Esquema de manifesto do plug-in para o Microsoft 365 Copilot.

Como o Copilot descobre ferramentas de servidor MCP

Para plug-ins baseados em um servidor MCP, o Copilot resolve as ferramentas do servidor dinamicamente em runtime por padrão, diretamente do servidor MCP. A descoberta dinâmica de ferramentas significa que os usuários obtêm as ferramentas mais recentes que o servidor MCP expõe sem esperar que o agente seja reempacotado e republicado. Ao criar o agente, um desenvolvedor pode, opcionalmente, fixar um conjunto fixo de ferramentas no manifesto do plug-in. Os plug-ins da API REST sempre usam as ferramentas definidas no manifesto do plug-in. Para obter mais informações, consulte Criar plug-ins de um servidor MCP para o Microsoft 365 Copilot e Descoberta de ferramentas dinâmicas para plug-ins MCP no Microsoft 365 Copilot.

Exemplo de plugin

Considere um servidor MCP de orçamentos que permita consultar e criar orçamentos, cobrar despesas ou adicionar fundos a orçamentos existentes. O prompt "Quanto resta no orçamento de viagem da Contoso" pode disparar um plug-in de orçamento, invocando a get-budgets ferramenta.

POST /mcp
Content-Type: application/json

{
  "method": "tools/call",
  "params": {
    "name": "get-budgets",
    "arguments": {
      "budgetName": "contoso travel"
    }
  }
}

O Copilot usa a resposta do resultado da ferramenta para gerar sua resposta: "O orçamento de viagem da Contoso tem atualmente US$ 5.000 em fundos disponíveis. Se você precisar alocar fundos para categorias específicas ou rastrear despesas, também posso ajudá-lo com isso. Apenas me diga como posso ajudar!"

O prompt "Cobrar US$ 500 do orçamento de viagem da Contoso para a passagem aérea de Megan" pode ser traduzido para a seguinte chamada de ferramenta MCP.

POST /mcp
Content-Type: application/json

{
  "method": "tools/call",
  "params": {
    "name": "charge-budget",
    "arguments": {
      "budgetName": "contoso travel",
      "amount": 500,
      "description": "Megan's airline ticket"
    }
  }
}

O Copilot responde ao usuário usando as informações retornadas: "A cobrança de US$ 500 pela passagem aérea de Megan foi processada com êxito. O orçamento de viagem da Contoso agora tem US$ 4.500 restantes em fundos disponíveis. Se você precisar fazer mais transações ou precisar de mais ajuda com seu orçamento, por favor me avise!"

Como funcionam os plug-ins

Um diagrama de sequência mostrando o fluxo de dados do plug-in

  1. O usuário pergunta ao agente "Quanto resta no orçamento de renovação do lobby do Fourth Coffee?"

  2. Para um plug-in MCP que usa descoberta dinâmica de ferramentas, o agente busca as definições de ferramenta atuais do servidor MCP do plug-in em tempo de execução e valida todas as ferramentas novas ou alteradas antes de usá-las. Para um plug-in com um conjunto de ferramentas fixado ou para um plug-in de API REST, o agente usa as ferramentas definidas no manifesto do plug-in.

  3. O agente identifica um plug-in relacionado ao orçamento a partir de seus plug-ins disponíveis que tem uma ferramenta de servidor MCP ou API GetBudget para obter detalhes do orçamento. Ele mapeia partes da pergunta do usuário para os parâmetros da função: budgetName="".

  4. O agente pede ao usuário para permitir que ele envie Fourth Coffee lobby renovation para o plug-in.

  5. O usuário opta por permitir que os dados sejam compartilhados com o plug-in uma vez ou opta por sempre permitir que os dados sejam compartilhados para essa função.

  6. Se o servidor MCP ou a API do plug-in exigir autenticação, o plug-in solicitará um token ou chave de API do armazenamento de tokens.

  7. O repositório de tokens retorna um token ou chave. Se necessário, o repositório de tokens faz com que o agente solicite que o usuário entre.

  8. O agente envia uma solicitação para o servidor MCP ou API do plug-in, que está hospedado fora do Microsoft 365.

  9. O servidor MCP ou a API retorna uma resposta.

    {
      "name": "Fourth Coffee lobby renovation",
      "availableFunds": 5000.00
    }
    
  10. O agente gera uma resposta com base na resposta do servidor MCP ou da API.

  11. O agente envia a resposta: "Os fundos disponíveis deixados no orçamento de renovação do saguão do Fourth Coffee são de US $ 5.000".

Confirmando ações

O Copilot pergunta ao usuário antes de enviar dados pela primeira vez para um plug-in.

Uma captura de tela de uma caixa de diálogo de confirmação de plug-in.

Depois que o usuário confirma a conexão, as ferramentas e APIs do servidor MCP que apenas recuperam dados não exigem confirmação, enquanto as ferramentas e APIs que modificam dados exigem. Os desenvolvedores de plug-ins podem substituir esses padrões. Para obter detalhes, consulte Prompts de confirmação para plug-ins de MCP e API para o Microsoft 365 Copilot.

Personalizando apresentação de resposta

O Copilot gera respostas de conversa usando dados do servidor MCP ou respostas da API. Os plug-ins podem personalizar como esses dados são apresentados, e o mecanismo depende do tipo de plug-in.

  • Os plug-ins MCP podem fornecer respostas ricas e interativas usando aplicativos MCP - widgets de interface do usuário que o servidor MCP retorna junto com o resultado da ferramenta em tempo de execução. Como o widget é entregue com a resposta da ferramenta em vez de definido no manifesto, os aplicativos MCP funcionam se o plug-in usa um conjunto fixado de ferramentas ou a descoberta dinâmica de ferramentas.

  • Os plug-ins de API podem fornecer modelos de Cartão Adaptável no manifesto do plug-in para exibir dados de maneira estruturada. Como os modelos são definidos em relação às operações declaradas no manifesto, essa abordagem se aplica a plug-ins de API e a plug-ins MCP que usam um conjunto fixado de ferramentas.

Para citações vinculadas à origem em qualquer tipo de plug-in, o Copilot usa semântica de resposta e pode inferir metadados de citação automaticamente da resposta da ferramenta ou da API. A inferência automática é especialmente útil para plug-ins MCP que usam a descoberta dinâmica de ferramentas, em que as ferramentas são resolvidas em runtime e não há definição de ferramenta de manifesto para configurar. Para obter mais informações, consulte Mostrar citações com semântica de resposta.

Uma captura de tela de uma resposta do Cartão Adaptável de um plug-in de API

Tratamento de URL em respostas de ação

A experiência de chat do Microsoft 365 Copilot pode renderizar URLs retornadas como parte de respostas de ação, seja de plug-ins de MCP, plug-ins de API, conectores ou fluxos, como links clicáveis. O runtime do Copilot controla esse comportamento e não o avalia em relação a nenhum domínio declarado pelo plug-in (como a servers seção da descrição do OpenAPI de um plug-in de API).

As regras de segurança, confiança e política da plataforma regem o comportamento de renderização de URL para respostas de ação e podem mudar ao longo do tempo. Não confie em URLs clicáveis em respostas de ação para cenários críticos de produção.

Ajude o orquestrador do Copilot a escolher seu plug-in

O Microsoft 365 Copilot pode escolher exclusivamente a habilidade certa entre as muitas habilidades em seu repertório. Mas como você pode garantir que o Copilot escolha seu plug-in para fornecer a habilidade certa?

A resposta está em como você descreve seu plugin, suas habilidades e os parâmetros para o início das habilidades. Especifique descrições concisas e precisas no manifesto do plug-in para garantir que o orquestrador do Copilot saiba quando e como invocar seu plug-in.

A forma como descreve o seu plug-in para o orquestrador depende do tipo de plug-in que cria, conforme descrito na tabela seguinte.

Tipo de plug-in Descrito por Saiba mais
Plug-ins de API Descrição da OpenAPI Como tornar um documento OpenAPI eficaz na extensão do Copilot
Ações do Copilot Studio Nomes e descrições no mapa de conversas do Copilot Studio Orquestre tópicos e ações do Copilot com IA generativa
Plug-ins de extensão de mensagem Manifesto do aplicativo Diretrizes para plug-ins de extensão de mensagem

Criar um plug-in de agente declarativo

Os desenvolvedores podem usar duas ferramentas para gerar pacotes de plug-ins de API:

  • O Kit de Ferramentas de Agentes do Microsoft 365 no Visual Studio ou no Visual Studio Code cria pacotes de plug-ins com base em um servidor MCP existente ou na descrição de OpenAPI. O Agents Toolkit também tem projetos iniciais com uma API de exemplo e o pacote de plug-ins correspondente.
  • Kiota é uma ferramenta de linha de comando e uma extensão do Visual Studio Code que gera pacotes de plug-ins com base em uma descrição existente do OpenAPI.

Dica

Ferramentas de desenvolvimento do Work IQ (versão prévia) – Você também pode anexar e marcar ações na linha de comando. wiqd agent add action adiciona uma ação a um agente declarativo e confirma wiqd agent validate --mode deep se a descrição da OpenAPI de uma ação é acessível e bem formada e se um manifesto de plug-in referenciado declara o esquema de autenticação correto. Uma árvore de comandos alfa wiqd plugin também existe, mas sua interface está sujeita a alterações. Para obter mais informações, consulte a documentação do Work IQ Dev Tools.

Limitações

Quando um agente declarativo inclui até cinco plug-ins definidos no manifesto do agente declarativo, o agente sempre injeta os plug-ins no prompt. Quando o agente inclui mais de cinco plug-ins, ele usa correspondência semântica. A correspondência semântica é baseada na descrição do plug-in, não em nenhuma das funções ou ferramentas individuais dentro do próprio plug-in.

Um plug-in pode incluir um número ilimitado de funções ou ferramentas MCP. Todas as funções ou ferramentas de um plug-in correspondente são retornadas, mesmo que apenas uma corresponda. Para um plug-in MCP que usa a descoberta dinâmica de ferramentas, as ferramentas resolvidas do servidor MCP em runtime contam para esse total. Devido aos limites da janela de token, a qualidade das respostas poderá ser prejudicada se mais de 10 funções ou ferramentas forem incluídas.

A janela de token para entradas e saídas de um plug-in trunca conteúdo grande. O limite funcional está sujeito a alterações à medida que os modelos melhoram e dependendo de qualquer sobrecarga do sistema. Otimize para pequenos comprimentos de token ou opte por opções de extensibilidade que permitem o streaming de conteúdo grande, se necessário.