MultiAgent Accelerator
The Multi-Agent Solution Accelerator is an AI-driven system that manages a group of AI agents to accomplish tasks based on user input. agents running on Azure and outside Azure, it provides a reference architecture.
Ask AI about MultiAgent Accelerator
Powered by Claude Β· Grounded in docs
I know everything about MultiAgent Accelerator. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Multi-Agent System with Microsoft Agent Framework on AKS or ACA
A production-ready multi-agent orchestration system built with Microsoft Agent Framework (MAF), Agent-to-Agent (A2A) Protocol, Model Context Protocol (MCP), and Azure Kubernetes Service (AKS) or Azure Container Apps (ACA).
ποΈ Architecture
βββββββββββββββββββββββ
β Streamlit UI β
β (LoadBalancer) β
ββββββββββββ¬βββββββββββ
β
β HTTP
β
ββββββββββββΌβββββββββββ
β Orchestrator β
β (LoadBalancer) β
β AKS (2 replicas) β
ββββββββββββ¬βββββββββββ
β
ββββββββββββββββΌβββββββββββββββ
β β β
A2A Simple β A2A Simple β A2A SDK β A2A SDK
β β (JSON-RPC) β (JSON-RPC)
ββββββββββββΌββββββ βββββββΌβββββββ ββββββΌββββββ ββββββΌββββββ
β Travel Agent β β Streamlit β β Burger β β Pizza β
β (AKS or ACA) β β(AKS or ACA)β β Agent β β Agent β
β LoadBalancer β β β β (GCP) β β (GCP) β
ββββββββββ¬ββββββββ ββββββββββββββ ββββββββββββ ββββββββββββ
β
MCP StreamableHTTP
β
ββββββββββ΄βββββββββ
β β
ββββββββΌββββββββ βββββββΌβββββββββ
β Currency MCP β β Activity MCP β
β (AKS or ACA) β β (AKS or ACA) β
β Port 8001 β β Port 8002 β
ββββββββββββββββ ββββββββββββββββ
Components
- Streamlit UI (AKS or ACA): User interface for multi-agent interaction
- Orchestrator (AKS or ACA): Routes tasks to appropriate agents using A2A protocol
- Travel Agent (AKS or ACA): Handles travel planning, currency conversion, restaurant recommendations
- Burger Agent (GCP Cloud Run): Processes burger orders - Source Code
- Pizza Agent (GCP Cloud Run): Processes pizza orders - Source Code
- Currency MCP (AKS or ACA): Real-time exchange rates via Frankfurter API
- Activity MCP (AKS or ACA): Travel itinerary and activity planning
Protocol Support
The orchestrator implements dual protocol support:
-
A2A Simple Format (Travel Agent):
{"task": "...", "user_id": "..."} -
A2A SDK JSON-RPC Format (GCP Agents - Burger & Pizza):
{ "id": "msg-123", "params": { "message": { "role": "user", "parts": [{"type": "text", "text": "..."}] } } }
π Project Structure
MultiAgent-AKS-MAF/
βββ agents/ # MAF-based agents
β βββ orchestrator/ # Main orchestrator (A2A + Service Bus)
β β βββ main.py
β β βββ requirements.txt
β β βββ Dockerfile
β β
β βββ travel_agent/ # Travel planning agent
β β βββ main.py
β β βββ requirements.txt
β β βββ Dockerfile
β β βββ .well-known/
β β βββ agent.json # AgentCard for A2A discovery
β β
β βββ external_agent/ # External A2A agent integration
β βββ README.md # Integration guide
β βββ .well-known/
β βββ agent.json # AgentCard template
β
βββ mcp_servers/ # Model Context Protocol servers
β βββ currency_mcp/ # Currency exchange tools
β β βββ server.py
β β βββ requirements.txt
β β βββ Dockerfile
β β
β βββ activity_mcp/ # Activity planning tools
β βββ server.py
β βββ requirements.txt
β βββ Dockerfile
β
βββ infrastructure/ # Azure infrastructure (Bicep)
β βββ bicep/
β βββ main-rg.bicep # Main resource group deployment
β βββ modules/ # Individual Azure resources
β
βββ k8s/ # Kubernetes manifests
β βββ orchestrator-deployment.yaml
β βββ travel-agent-deployment.yaml
β βββ currency-mcp-deployment.yaml
β βββ activity-mcp-deployment.yaml
β
βββ scripts/ # Deployment scripts
β βββ deploy-infrastructure.sh
β βββ build-and-push.sh
β βββ deploy-to-aks.sh
β
βββ _archived/ # Old code (for reference)
π Key Technologies
- Microsoft Agent Framework (MAF): Agent orchestration and communication
- Azure AI Foundry: GPT-4o, GPT-4o-mini models
- A2A Protocol: Agent-to-Agent communication standard (Simple + SDK formats)
- MCP (Model Context Protocol): Tool/plugin architecture
- Azure Service Bus: Message queue for external communication
- Azure Kubernetes Service (AKS) or Azure Container Apps (ACA): Container orchestration
- Google Cloud Run: Serverless container hosting (for food ordering agents)
- Azure Managed Identity: Secure authentication
β¨ Features
Orchestrator
- β Discovers agents via A2A AgentCard resolution
- β Dual Protocol Support: A2A Simple + A2A SDK (JSON-RPC 2.0)
- β Multi-cloud agent integration (AKS + GCP Cloud Run)
- β Routes tasks based on keywords and agent capabilities
- β Supports external A2A-compliant agents
Travel Agent (AKS or ACA)
- β Built with ChatAgent from MAF
- β Uses MCP tools for currency and activity planning
- β
Exposes AgentCard at
/.well-known/agent.json - β Supports Azure Managed Identity
- β Real-time currency conversion (30+ currencies)
- β Restaurant recommendations
- β Multi-day itinerary planning
Food Ordering Agents (GCP Cloud Run)
- β Burger Agent: Processes burger orders using A2A SDK format
- β Pizza Agent: Processes pizza orders using A2A SDK format
- β Source: Purchasing Concierge A2A Codelab
- β Deployed on Google Cloud Run
- β Integrated via A2A JSON-RPC 2.0 protocol
Streamlit Web UI (AKS or ACA)
- β User-friendly interface for multi-agent interaction
- β Quick test buttons for common tasks
- β Contextual follow-up questions
- β Clean response formatting with expandable raw JSON
- β Support for all agent types (travel, burger, pizza)
MCP Servers (AKS or ACA)
- β Currency MCP: Exchange rates via Frankfurter API
- β Activity MCP: Trip planning, recommendations
π§ Prerequisites
- Azure subscription
- Azure CLI (
az) - kubectl
- Docker
- Python 3.11+
π¦ Quick Start
1. Deploy Infrastructure
# Login to Azure
az login
# Deploy infrastructure
./scripts/deploy-infrastructure.sh
This creates:
- Azure OpenAI (with gpt-4o, gpt-4o-mini, gpt-35-turbo)
- Azure Service Bus
- Azure Key Vault
- AKS Cluster with Workload Identity
- Azure Container Registry
2. Deploy to AKS
Option A: GitHub Actions (Recommended) π
See GitHub Actions Deployment Guide for automated CI/CD setup.
Quick setup:
# Create service principal with federated credentials
# See .github/DEPLOYMENT_QUICKSTART.md for complete script
# Add GitHub Secrets (Settings β Secrets):
# - AZURE_CLIENT_ID
# - AZURE_TENANT_ID
# - AZURE_SUBSCRIPTION_ID
# Push to main branch β auto-deploys!
git push origin main
Option B: Manual Deployment
# Build and deploy all services
./scripts/deploy-to-aks.sh
This will:
- Build Docker images for all 3 services
- Push to Azure Container Registry
- Deploy to AKS with Workload Identity
- Configure session affinity for MCP servers
- Wait for pods and get external IP
π§ͺ Testing
Test the Complete System
Via Streamlit UI (Recommended):
Open browser: http://<STREAMLIT_UI_IP>
Quick Test Buttons:
- π Order Burgers β Routes to Burger Agent (GCP)
- π Order Pizza β Routes to Pizza Agent (GCP)
- π± Convert Currency β Routes to Travel Agent (AKS)
- βοΈ Plan Trip β Routes to Travel Agent (AKS)
Test Orchestrator Directly
Get the orchestrator IP: kubectl get svc orchestrator-service -n multiagent
# Travel Agent - Currency conversion
curl -X POST http://<ORCHESTRATOR_IP>/task \
-H "Content-Type: application/json" \
-d '{"task": "Convert 100 USD to EUR", "user_id": "test"}'
# Travel Agent - Trip planning
curl -X POST http://<ORCHESTRATOR_IP>/task \
-H "Content-Type: application/json" \
-d '{"task": "Plan a 3-day trip to Paris", "user_id": "test"}'
# Burger Agent (GCP)
curl -X POST http://<ORCHESTRATOR_IP>/task \
-H "Content-Type: application/json" \
-d '{"task": "I want 2 classic cheeseburgers", "user_id": "test"}'
# Pizza Agent (GCP)
curl -X POST http://<ORCHESTRATOR_IP>/task \
-H "Content-Type: application/json" \
-d '{"task": "Order 1 pepperoni pizza", "user_id": "test"}'
# Check discovered agents
curl http://<ORCHESTRATOR_IP>/agents
Test Locally
# Start Currency MCP
cd mcp_servers/currency_mcp
python server.py
# Test in another terminal
curl http://localhost:8001/health
Test Travel Agent
cd agents/travel_agent
python main.py
# Query the agent
curl -X POST http://localhost:8080/task \
-H "Content-Type: application/json" \
-d '{"task": "Convert 500 USD to EUR", "user_id": "local-test"}'
Test Orchestrator Agent Discovery
cd agents/orchestrator
# Set environment variable with agent endpoints
export AGENT_ENDPOINTS="http://travel-agent-service,https://burger-agent-286879789617.us-central1.run.app,https://pizza-agent-286879789617.us-central1.run.app"
python main.py
# Check discovered agents
curl http://localhost:8000/agents
π Security
- Managed Identity: All Azure resources use managed identities
- RBAC: Service Bus and Key Vault use role-based access
- No API Keys: Credentials stored in Key Vault
- Network Isolation: Private endpoints for Azure services
π Monitoring
- Application Insights: Telemetry and logging
- Azure Monitor: Infrastructure metrics
- Service Bus Metrics: Message queue monitoring
π οΈ Development
Adding a New Agent
- Create agent directory:
agents/my_agent/ - Implement using MAF
ChatAgent - Create
agent.jsonAgentCard - Build Docker image
- Create K8s deployment manifest
Adding MCP Tools
- Create MCP server:
mcp_servers/my_tools/ - Implement tools following MCP spec
- Register with Travel Agent
- Deploy to AKS
π Resources
- Microsoft Agent Framework
- A2A Protocol
- Model Context Protocol
- Azure AI Foundry
- GCP Food Ordering Agents (Burger & Pizza)
π― Live Demo
Get the service IPs using:
kubectl get svc -n multiagent
Services:
- Streamlit UI:
streamlit-service(LoadBalancer) - Orchestrator:
orchestrator-service(LoadBalancer) - Travel Agent:
travel-agent-service(LoadBalancer) - Burger Agent (GCP): External Cloud Run service
- Pizza Agent (GCP): External Cloud Run service
π License
MIT License - see LICENSE file for details
π€ Contributing
Contributions welcome! Please read CONTRIBUTING.md first.
π Acknowledgments
- Microsoft Agent Framework Team - Multi-agent orchestration framework
- A2A Protocol Contributors - Agent-to-Agent communication standard
- Model Context Protocol - Tool integration standard
- Frankfurter API - Free currency exchange data
- alphinside/purchasing-concierge-intro-a2a-codelab-starter - GCP food ordering agents
Built with β€οΈ using Microsoft Agent Framework + A2A Protocol
