MCP Fleet Governance
Overview
The MCP Fleet Governance plane (WS-9) provides end-to-end lifecycle management for MCP toolboxes and servers across your Azure AI Foundry environment. It encompasses six components that work together to ensure every tool call is authenticated, authorized, version-controlled, and observable.
Architecture
| # | Component | Purpose |
|---|---|---|
| 1 | Toolbox Lifecycle Manager | Version create → test → promote → deprecate → cleanup with approval gates |
| 2 | Private Tool Catalog | Azure API Center-backed registry for MCP server discovery and governance |
| 3 | MCP Auth Provider | Unified auth abstraction for 5 Foundry MCP methods with token caching |
| 4 | MCP Server Hosting | Azure Functions + Container Apps templates with Bicep IaC |
| 5 | Toolbox Endpoint Resolver | Consumer vs. developer endpoint resolution with version pinning |
| 6 | MCP Fleet Dashboard | KQL-based observability: health, usage, rate limiting, error classification, latency |
Toolbox Lifecycle Management
The ToolboxLifecycleManager in trust-extensions/toolbox_lifecycle_manager.py manages the full lifecycle of Foundry Toolbox versions with CI/CD-friendly idempotent operations:
Version Stages
| Stage | Description | Transition |
|---|---|---|
created | New version parsed from toolbox YAML | → testing |
testing | Health checks running, tool validation in progress | → promoted |
promoted | Set as default version (atomic swap) | → deprecated |
deprecated | Marked for removal, traffic draining | → deleted |
deleted | Cleaned up, retention enforced | — |
Lifecycle Operations
create_version_from_yaml()— Idempotent version creation from toolbox confighealth_check()— Validates tool endpoints and auth before promotionpromote_to_default()— Atomic swap to make version the consumer defaultenforce_retention(max_versions=5)— Cleans old versions, respects retention policy
Supported Tool Types
The lifecycle manager handles 12 Foundry Toolbox tool types:
- MCP
- OpenAPI
- A2A
- Web Search
- AI Search
- Code Interpreter
- File Search
- Azure Functions
- SharePoint
- Fabric
- Image Generation
- Browser Automation
Per-Agent Toolbox Configuration
Each agent class has a dedicated toolbox configuration in toolbox-configs/ with role-appropriate tool access and approval policies:
| Agent Class | Approval Policy | Tool Types | Key MCP Servers |
|---|---|---|---|
| Knowledge | auto | Web Search, AI Search, MCP | SharePoint, Confluence |
| Operations | conditional | MCP | ServiceNow, Graph |
| Workflow | require | MCP | SAP, Workday, ServiceNow, Salesforce, Graph |
| Analyst | auto | AI Search, Code Interpreter | — |
| Policy | require | AI Search, Policy tools | — |
Tool-Level Approval Tiers
| Tier | Scope | Approval | Example |
|---|---|---|---|
| Tier 1 | Read operations | Auto-approved | get_purchase_order, search_contacts |
| Tier 2 | Write operations | Team lead approval (300s timeout via Teams webhook) | create_purchase_order, create_incident |
| Tier 3 | Financial / destructive | Always require approval | post_financial_document |
Zero Trust Controls
Three Zero Trust controls govern the MCP fleet:
| Control | Scope | Key Enforcement |
|---|---|---|
| ZT-07 | MCP Gateway | Agent-to-tool authorization, identity propagation, egress control, schema validation |
| ZT-12 | Foundry Toolbox | Tool registry governance, version management, AI Gateway integration, per-tool auth |
| ZT-15 | MCP Security | 5 auth methods, transport security (TLS + VNet), per-agent-class allowlists, APIM rate limits |
Per-Agent Session Limits (ZT-15)
| Agent Class | Max Tool Calls / Session | Tool Type Restrictions |
|---|---|---|
| Knowledge | 50 | Read-only tools |
| Analyst | 100 | Search + compute |
| Workflow | 25 | All types (with approval gates) |
| Policy | 20 | Policy evaluation tools only |
Toolbox Policy Enforcement
The toolbox-allowlist-policy.yaml in policy-packs/toolbox/ enforces per-tool authorization at runtime before every tool call:
| Tool Class | Approval | Enforcement |
|---|---|---|
read | Auto-approve | Deny in prod/staging Audit in dev |
write | Require approval | |
external | Always approve | |
compute | Require approval | |
internal | Auto-approve |
Violations set risk.policy_violated=true and log to the Decision Ledger.
Fleet Observability (KQL)
Two KQL query packs provide fleet-wide monitoring:
MCP Fleet Dashboard
observability/kql/mcp-fleet-dashboard.kql — 5 queries:
- Fleet Health Overview — status of all MCP servers
- Tool Usage Analytics — invocation counts and patterns
- Gateway Rate Limiting — throttled requests by agent and tool
- Error Classification — categorized failure analysis
- Latency Heatmap — P50/P95/P99 by tool and time window
MCP Gateway Analytics
observability/kql/mcp-gateway-analytics.kql — 6 queries:
- Gateway Traffic Overview — requests through APIM AI Gateway
- Per-Tool Rate Limiting — rate limit enforcement analytics
- Per-Agent Monopoly Prevention — tool usage concentration
- IP Filtering — blocked vs. allowed traffic
- Header Sanitization — stripped/modified headers
- Geo-Routing Distribution — multi-region traffic patterns
Data sources: AppRequests, AppTraces, ContainerAppConsoleLogs, AppServiceHTTPLogs, AzureDiagnostics (APIM).
Bicep Governance Module
The infra/bicep/modules/toolbox.bicep module configures Foundry Toolbox governance with APIM AI Gateway integration:
| Parameter | Default | Purpose |
|---|---|---|
enableVersionPinning | true | Pin toolbox versions for stability |
enablePrivateCatalog | true | Register tools in API Center catalog |
maxVersionsRetained | 10 | Retention limit for old versions |
deprecationNoticeDays | 30 | Days before deprecated versions are deleted |
defaultRateLimitRpm | 60 | Default rate limit per tool (requests/min) |
enableAiGatewayRouting | true | Route tool calls through APIM AI Gateway |
Next Steps
- Set up MCP Server Hosting — Azure Functions and Container Apps templates
- Review MCP Adapters — 7 pre-built adapters for enterprise systems
- Configure Trust & Governance — Decision Ledger, Certification Pipeline, Agent 365
- Explore Zero Trust Design — ZT-07, ZT-12, ZT-15 for MCP security