ext_ZavaSupportDemo
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ext_ZavaSupportDemoWhat's the status of ticket ZAVA-1001?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agent 365 BYO MCP – demo server
A deliberately small remote MCP server you can register with Microsoft Agent 365 to showcase the Bring-Your-Own MCP flow (developer registers → admin approves in M365 admin center → agent in Copilot Studio / VS Code invokes it → Defender advanced hunting shows the calls).
It exposes three tools over a fake in-memory "Zava IT support" dataset:
Tool | What it does | Why it's in the demo |
| Full-text search over 4 KB articles | Read-only tool, easy to prompt ("how do I reset VPN?") |
| Look up | Shows parameters + not-found handling |
| Creates a new ticket | A write action – nice for the governance / audit story |
Auth is an API key in the X-API-Key header → registered as Agent 365 auth type APIKey (Header).
Files
File | Purpose |
| Recommended flavour – FastMCP (official |
| Same tools, zero dependencies – hand-rolled JSON-RPC so you can see the wire protocol |
| Fake KB + tickets shared by both |
| Stdlib smoke-test client (initialize → tools/list → tools/call) |
| Ready-to-edit registration file for |
| For Azure Container Apps / App Service |
Related MCP server: zendesk-mcp
1. Run locally
# FastMCP flavour
pip install -r requirements.txt
MCP_API_KEY=demo-secret-123 python server.py # http://localhost:8000/mcp
# or, with no installs at all
MCP_API_KEY=demo-secret-123 python server_stdlib.py
# smoke test
python test_client.py http://localhost:8000/mcp demo-secret-123Set a real secret in MCP_API_KEY for anything beyond localhost.
2. Make it publicly reachable
Agent 365 requires a public HTTPS endpoint. Two easy options:
Quick (minutes): a Dev Tunnel in front of your laptop
devtunnel host -p 8000 --allow-anonymous
# → https://<id>.devtunnels.ms/mcp(ngrok http 8000 works the same way.)
Slightly more durable: Azure Container Apps
az group create -n rg-a365-mcp-demo -l eastus
az containerapp up -n zava-mcp-demo -g rg-a365-mcp-demo -l eastus \
--source . --ingress external --target-port 8000 \
--env-vars MCP_API_KEY=<your-secret>
# → https://zava-mcp-demo.<region>.azurecontainerapps.io/mcpVerify from outside: python test_client.py https://<host>/mcp <your-secret>
3. Register with Agent 365
Prereqs from the docs: Agent 365 CLI ≥ 1.1.165-preview, and the Agent 365 service principal
(appId ea9ffc3e-8a23-4a7d-836d-234d7c7565c1) provisioned in the tenant.
Edit serverUrl in a365-register.json, then:
a365 develop-mcp register-external-mcp-server -f a365-register.jsonEquivalent one-liner:
a365 develop-mcp register-external-mcp-server \
--server-name "ext_ZavaSupportDemo" \
--server-url "https://<host>/mcp" \
--publisher "Contoso Demo" \
--description "Demo MCP server: Zava IT support KB and tickets" \
--auth-type APIKey --api-key-location Header --api-key-name X-API-Key \
--tools "search_knowledge_base,get_support_ticket,create_support_ticket"Optional – score your tool descriptions before registering:
a365 develop-mcp evaluate --server-url http://localhost:8000/mcp --eval-engine none4. Approve as admin
M365 admin center → Agents > Tools > Requests → select ext_ZavaSupportDemo → Approve → grant
the Entra consent when prompted. Requires AI admin or Global admin. Allow up to ~30 min to appear in
Copilot Studio environments.
5. Use it
Copilot Studio → new agent → Tools > MCP Server → pick ext_ZavaSupportDemo. First invocation
prompts for a one-time connection – paste the API key. Then try:
"How do I reset my Zava VPN?" →
search_knowledge_base"What's the status of ticket ZAVA-1001?" →
get_support_ticket"Open a high-priority ticket: my laptop won't boot" →
create_support_ticket
6. Show the governance story
Block/unblock the server in the Registry tab and re-run a prompt – the gateway enforces it at runtime.
Defender XDR advanced hunting:
CloudAppEvents | where ActionType == "ExecuteToolByGateway" | where RawEventData contains "create_support_ticket"
Notes / preview caveats
Republishing a new version of a registered server and deleting a BYO server aren't supported yet – get your tool names/descriptions right first, or register under a new
serverName.Supported clients today: Copilot Studio, VS Code, Claude Code, GitHub Copilot CLI (not Foundry or M365 declarative agents).
The stdlib server answers with plain JSON (no SSE stream) and has no
GET /mcp– that's within spec for Streamable HTTP and fine for the gateway, but not something to copy into production.Wrapping GitHub etc.: you don't need to. Point Agent 365 at the vendor's remote MCP endpoint directly with auth type
ExternalOAuthand their OAuth app – the BYO flow is "remote server + auth type", not "your code".
This server cannot be deployed
Maintenance
Related MCP Connectors
Make your knowledge agent-ready. One MCP endpoint, 5 connectors, 3 search modes.
AI-native helpdesk hosted in Germany: tickets, replies, KPIs and knowledge base over MCP.
Let AI agents query data and act across all your business apps via MCP.
Build and manage AI-native customer support agents from Claude or any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn AI IT support agent that enables natural language interaction with IT helpdesk operations, including knowledge base search, ticket querying, password reset, and escalation, powered by LangGraph and MCP.-
- AlicenseNot gradedqualityDmaintenanceMCP server for Zendesk support workflows that enables ticket search, lookup, creation, commenting, status updates, and user listing through natural language. It uses OAuth authentication and supports both internal notes and public comments.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to analyze IT support tickets, categorize urgency, suggest responses, and retrieve statistics via MCP tools.-
- FlicenseNot gradedqualityCmaintenanceMCP server for an AI IT helpdesk that exposes 29 tools, 10 resources, and 6 prompts for ticket management, knowledge base search, employee lookup, reporting, and Slack notifications, with a multi-agent conversation pipeline.-