Demo 1 · Virtual MCP open federation
federationOne Streamable-HTTP session on the open :31606/mcp endpoint fans out to two MCP backends — mcp-server-everything and mcp-website-fetcher. The client connects once; tools/list returns a single merged catalog with tools namespaced by target (mcp-server-everything-3001_* + mcp-website-fetcher_*), and tools/call routes to the right upstream by that prefix. Add a labeled MCP Service and it appears on the same URL — no client change. No auth here; /mcp-secure (scenarios 1–5) adds Entra JWT + tool RBAC on top without breaking federation.
MCP client → /mcp :31606 → agentgateway (virtual server) → everything + website-fetcher
- Run the federation demo
./scripts/test-virtual-mcp.sh - initialize (no Authorization header)HTTP 200 + session id · serverInfo.name=agentgateway
- tools/list — tools from BOTH backendsprefixes from everything + website-fetcher in one list
- tools/call the echo toolroutes by target prefix, payload echoes back
./scripts/test-virtual-mcp.sh
initialize → HTTP 200 serverInfo.name=agentgateway tools/list → 14 tools · everything 13 + website-fetcher 1 • mcp-server-everything-3001_echo • mcp-website-fetcher_fetch tools/call mcp-server-everything-3001_echo → Echo: hello from virtual-mcp ✓ 14 tools · 2 backends · 1 session