The data exists. Nobody assembles it.
Engineering output shouldn’t be measured by gut feeling. One dashboard assembles GitHub, ADO, and Cursor activity into a single view, with one shared tool registry for chat and MCP.
- engineering
- dashboard
- mcp
- ai-sdk
- nextjs
Author: John Ryan Cottam2 min read
Ask an engineering team how much they shipped last quarter. You will probably get a feeling, a ticket query, or someone’s best guess.
The actual data is sitting in GitHub, Azure DevOps, and Cursor. Commits. Pull requests. Cycle times. AI usage. It exists—just not in one place.
GitHub, Azure DevOps, and Cursor data intersect at one dashboard.
The dashboard pulls engineering activity into one view: commits and PRs, lines changed, review cycle time, and optional Cursor usage. Pick a date range and see what happened across the team.
Then ask it questions:
- Where are PRs waiting on review?
- What shipped last sprint?
- Are we paying for models nobody uses?
The answers come from the same data behind the dashboard, with the numbers attached.
One registry, three interfaces
The implementation is simpler than the product.
The dashboard pulls one year-to-date corpus from each source and caches it. The UI, chat, and MCP server all query that same snapshot.
The metrics live in one tool registry: get_team_summary, get_pr_stats, get_token_usage, and the rest. The chat route gives those tools to the AI SDK. The MCP route registers them with mcp-handler.
Add a metric once and it appears in both places. No duplicate definitions. No drift.
That shared registry is the part I would reuse first.
Activity is not impact
The dashboard measures activity proxies, not engineering quality.
Lines changed can mean a new feature, a deletion pass, or generated code. A high commit count can mean healthy slices or churn. None of it tells you whether customers are happier.
Use the data to answer narrow, inspectable questions:
- Did anything merge?
- Where is review latency growing?
- Which tools are people actually using?
Do not use it to crown a top performer.
The goal is not a scoreboard. It is a shared set of facts—so fewer engineering conversations begin and end with vibes.