MCP series: Je MCP-server verbinden met een Copilot-agent via Copilot Studio

Deze blogpost is de derde in een reeks over het bouwen van je MCP-server, het hosten ervan op Azure en tot slot het implementeren ervan in een M365 Copilot-agent.

In deel één bouwden we onze MCP-server en in deel twee deployden we hem naar Azure Container Apps. De server is live, beveiligd met een API-sleutel en klaar om verzoeken te ontvangen. Nu het leukste deel: hem laten praten met Microsoft 365 Copilot.

Er zijn twee manieren om een MCP-server te verbinden met een Copilot-agent. Dit artikel behandelt Copilot Studio, de no-code/low-code route die je het snelst op weg helpt. Als je de voorkeur geeft aan een volledig code-first aanpak met een declaratief agentmanifest en Microsoft 365 Agents Toolkit, dan komt dat aan bod in deel vier.

Wat bouwen we?

Aan het einde van dit artikel heb je een Copilot-agent: een aangepaste versie van Microsoft 365 Copilot met een specifieke persona, instructies en toegang tot je MCP-tools. Gebruikers kunnen ermee chatten in Microsoft Teams, SharePoint of rechtstreeks in de Microsoft 365 Copilot-app, en de agent roept je op Azure gehoste MCP-server aan om live projectgegevens op te halen en bij te werken.

De ervaring vanuit het perspectief van de gebruiker is volkomen natuurlijk. Ze typen gewoon wat ze nodig hebben, en de agent bepaalt welke tool hij moet aanroepen, roept hem aan en verwerkt het resultaat in een coherent antwoord. De onderliggende MCP-infrastructuur is volledig onzichtbaar.

Vereisten

Zorg voordat je begint dat je het volgende hebt:

  • Een Microsoft 365-tenant met Copilot-licenties (Microsoft 365 Copilot of Copilot Studio standalone)
  • Je MCP-server live op Azure vanuit deel twee, met een publiek HTTPS-endpoint
  • De API-sleutel die je hebt geconfigureerd in het beveiligingsgedeelte van deel twee
  • Toegang tot Copilot Studio. Meld je aan met je M365-werkaccount

Stap 1 - Een nieuwe agent aanmaken

Navigeer naar copilotstudio.microsoft.com en meld je aan met je werkaccount.

Klik op het startscherm op Maken in de linkernavigatie en kies vervolgens Nieuwe agent. Er verschijnt een pop-up om de naam van je agent in te voeren. Laten we Project Status Assistant kiezen voor onze agent.

Je wordt naar de agenteditor gebracht. Je kunt je agent beschrijven in gewone taal. Vul de Beschrijving in: Helpt teamleden de projectstatussen te controleren en bij te werken zonder hun chatinterface te verlaten.

Goede instructies schrijven

Het instructieveld is de systeemprompt voor je agent. Hier definieer je zijn persona, zijn bereik en hoe hij zich moet gedragen. Een goed geschreven instructieveld maakt het verschil tussen een agent die gepolijst aanvoelt en één die generiek overkomt.

Hier is een goed startpunt:

You are a project management assistant for our team. Your job is to help team members quickly check project statuses, find out who owns what, and update statuses when work progresses.

Always use the available tools to retrieve live data; never make up project names, statuses, or owners. If you don't find a project matching the user's description, ask for clarification or suggest they check the project ID format (e.g. PRJ-001).

When a user asks to update a project status, always confirm the project name, current status, and new status before making the change. After updating, confirm the change was successful.

Keep your responses concise and focused. If the user hasn't specified a project ID, try to infer it from context or ask politely.

Stap 2: De MCP-tool toevoegen

Navigeer naar het tabblad Tools en klik op + Een tool toevoegen.

Er opent een paneel met de vraag welk type tool je wilt toevoegen. Selecteer Model Context Protocol (MCP).

Je ziet het dialoogvenster Een Model Context Protocol-server toevoegen. Vul de volgende velden in:

  • Servernaam: My project server
  • Serverbeschrijving: Een korte beschrijving van wat deze MCP-server doet. Bijv. “This MCP server gets the projects”. Deze beschrijving helpt de agent begrijpen wanneer hij deze tool moet gebruiken.
  • Server-URL: De volledige URL naar je MCP-endpoint, bijv. https://mcp-project-server.mangowater-1d42cf6d.westeurope.azurecontainerapps.io/mcp
  • Authenticatie: Selecteer API-sleutel
    • Type: Header
    • Headernaam: x-api-key

Klik vervolgens op Maken.

Note

Je vult hier enkel de naam van de header in, niet de waarde. De eigenlijke API-sleutelwaarde wordt afzonderlijk opgeslagen als een verbinding, waardoor hij buiten de tooldefinitie zelf blijft.


Stap 3: Verbinding maken met je API-sleutel

Na het klikken op Maken bevestigt Copilot Studio dat de aangepaste connector is aangemaakt en toont de tool met de status Niet verbonden.

Klik op het Niet verbonden-dropdown en selecteer Nieuwe verbinding. Er verschijnt een dialoogvenster met de vraag om de API-sleutelwaarde op te geven, hier voer je het eigenlijke geheim in:

Voer je API-sleutel in (dezelfde waarde die je hebt opgeslagen in het geheim van je Azure Container App in deel twee) en klik op Maken. De status verandert naar Verbonden.

Deze tweestapsaanpak, de headernaam definiëren in de tool en de waarde afzonderlijk opslaan als verbinding, betekent dat de sleutel per gebruiker of per omgeving wordt beheerd zonder hardgecodeerd te zijn in de agentdefinitie zelf.

Stap 4: De ontdekte tools bekijken

Zodra verbonden, voert Copilot Studio de MCP-handshake uit met je server en ontdekt automatisch alle beschikbare tools. Je ziet je drie tools vermeld onder de connector:

  • getProjectStatus: Haalt de huidige status en eigenaar van een project op via zijn ID
  • updateProjectStatus: Werkt de status van een project bij
  • listProjects: Geeft een lijst terug van alle projecten met hun huidige status

Deze automatische ontdekking is een van de belangrijkste voordelen van MCP. Je hoeft je tools niet handmatig te beschrijven aan Copilot Studio. Het leest de tooldefinities, beschrijvingen en invoerschema’s rechtstreeks van je server. Dit betekent ook dat wanneer je een nieuwe tool aan je MCP-server toevoegt en opnieuw deployt, Copilot Studio hem automatisch oppikt bij de volgende synchronisatie.

Dit is waarom de toolbeschrijvingen die je schrijft in server.js zo belangrijk zijn. Het model gebruikt ze om te beslissen wanneer elke tool wordt aangeroepen. Als ze vaag of gelijkaardig zijn, zal de agent moeite hebben om de juiste te kiezen.

Stap 5: Testen in de Playground

Voordat je publiceert, test je je agent in de ingebouwde playground aan de rechterkant van de editor.

Projecten oplijsten:

“What projects are currently active?”

De agent zou listProjects moeten aanroepen, de respons van je op Azure gehoste MCP-server ophalen en hem opmaken tot een leesbaar antwoord.

Een specifiek project opvragen:

“What’s the status of PRJ-002?”

Dit zou getProjectStatus moeten triggeren met projectId: "PRJ-002" en de projectdetails teruggeven.

Een project bijwerken:

“Mark PRJ-001 as completed.”

De agent zou moeten bevestigen wat hij op het punt staat te doen voordat hij de wijziging aanbrengt, dan updateProjectStatus aanroepen en terugrapporteren.

Als een toolaanroep mislukt of de agent geen tool aanroept wanneer je dat verwacht, controleer dan het Activiteiten-paneel naast de chat. Het toont precies welke tools werden aangeroepen, welke parameters werden doorgegeven en wat de server teruggaf, onmisbaar voor het debuggen.


Stap 6: De agent publiceren

Zodra je tevreden bent met het gedrag, klik je op Publiceren in de rechterbovenhoek. Copilot Studio valideert de configuratie en publiceert de agent, de eerste publicatie duurt gewoonlijk een minuut of twee.

Na het publiceren beheer je de beschikbaarheid via Kanalen:

Microsoft Teams: gebruikers kunnen je agent rechtstreeks vinden en ermee chatten in Teams, als persoonlijke app of gepubliceerd in de Teams-appcatalogus van je organisatie.

SharePoint: sluit de agent in op een SharePoint-pagina via het Copilot Studio-webonderdeel.

Microsoft 365 Copilot: maakt je agent selecteerbaar in de hoofdervaring van Microsoft 365 Copilot (vereist de juiste Copilot Studio-licentie).

Voor een snelle test kies je Microsoft Teams en klik je op Openen in Teams. Dit opent een rechtstreekse chat met je agent in Teams zonder beheerdersgoedkeuring te vereisen.