Add MCP server activity card to AI Governance dashboard
Related issue: https://gitlab.com/gitlab-org/gitlab/-/work_items/618957
What
Adds an MCP servers card to the AI Governance dashboard: a list of registered MCP servers with their per-group authorization status (Active / Blocked), and a "View MCP registry" link.
Data
100% real, from the existing aiCatalogMcpServers registry API (name, description, blockStatus). blockStatus is scoped to the current group/project. No mock data, no new backend, no new API or migration.
Why no usage numbers
The prototype showed per-server usage counts. There is no per-server usage data in production: MCP usage events (Ai::UsageEvent) carry tool_name/session_id but no server identity, and the registry does not link servers to tools, so counts cannot be derived. This card ships the real, available slice now (servers + status); the usage numbers depend on producer-side work tracked in #618957.
Screenshot
The data is seeded from the production data - https://gitlab.com/groups/compliance-group-testing-and-demos/-/settings/gitlab_duo/governance?tab=mcp-registry
Notes
- The card has its own feature flag,
ai_governance_mcp_server_activity(wip, default off), nested inside theai_governance_dashboardflag. This lets us decide independently whether the card ships in beta (per Nate's request in #618957). Both flags must be on for the card to render. - Visibility also follows the existing
ai_catalog_mcp_serversavailability (flag + Duo + beta features), same gate as the MCP registry page. - Frontend plus a feature-flag definition and the two governance controllers pushing the flag to the frontend.
Review feedback addressed
- The MCP card now renders as the last card on the dashboard.
- Removed the "Showing N agents in the last 7 days" summary line above the KPI tiles. This is not tied to this card's flag, so it applies whenever the dashboard renders; the agent-class filter control itself stays.
- Rebased onto current master.

