wangweiandCopilot 31bbf80aeb feat: surface MCP server status in System Status page
Add per-tool in-memory call counters to the MCP module and a
GET /api/v1/status/mcp endpoint that joins them with the live tool
registry and endpoint config, then render it as a new card on the
System Status page with a one-click client-config copy button.

- app/mcp/stats.py: lock-guarded MCPStatsTracker (the mcp SDK runs sync
  tool bodies via anyio.to_thread.run_sync, so this is genuinely
  multi-threaded, unlike the async REST routes)
- app/mcp/server.py: instrument search_regulations, add get_mcp_status()
- app/config/settings.py: optional MCP_PUBLIC_URL override, required
  because the Vite proxy and reverse proxies rewrite the Host header
- StatusPage.tsx: MCP Server card, joins the existing parallel fetch

Counters are process-local by design; token usage is already persisted
by ModelUsageTracker since MCP calls route through ask().

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-03 11:37:22 +08:00
@
2026-06-03 16:58:35 +08:00
@
2026-06-03 16:58:35 +08:00
2026-06-05 18:00:31 +08:00
2026-07-23 14:09:33 +08:00
2026-07-02 22:03:39 +08:00
@
2026-06-03 16:58:35 +08:00
@
2026-06-03 16:58:35 +08:00
@
2026-06-03 16:58:35 +08:00
@
2026-06-03 16:58:35 +08:00
@
2026-06-03 16:58:35 +08:00
2026-06-05 18:00:31 +08:00
2026-06-05 18:00:31 +08:00
2026-04-28 11:29:33 +08:00
2026-04-28 11:29:33 +08:00
2026-07-02 22:03:39 +08:00
2026-04-28 11:29:33 +08:00
2026-04-28 11:29:33 +08:00
2026-05-26 12:34:12 +08:00
S
Description
AIRegulation-DocAnalysis-Demo
12 MiB
Languages
Python 55.2%
HTML 22.7%
TypeScript 16.2%
CSS 2.8%
Shell 1.4%
Other 1.6%