Four GitHub "superpowers" as an mcp-use MCP App — each a tool + React widget that renders inside Claude, ChatGPT, or any MCP Apps-compatible client. Write once, render everywhere.
| Tool | Ask it | Widget |
|---|---|---|
repo-scorecard |
"how healthy is vercel/next.js?" | Health ring + stat grid + contributors |
compare-repos |
"next.js vs remix?" | Side-by-side table, winner per metric |
commit-heatmap |
"how active is langchain?" | 52-week commit heatmap |
trending-mcp |
"hottest MCP servers this week?" | Ranked list with star deltas |
npm install
cp .env.example .env # then paste a GITHUB_TOKEN
npm run dev # server on :3000, Inspector at /inspectorOpen http://localhost:3000/inspector, list tools, and call e.g. repo-scorecard with { "repo": "vercel/next.js" }.
A token is strongly recommended — it lifts the REST rate limit from 60/hr → 5,000/hr.
- A fine-grained PAT with Public Repositories (read-only) is enough, or a classic PAT.
- Set it as
GITHUB_TOKEN(in.envlocally, in project settings when deployed).
github-mcp/
├── index.ts # MCPServer + all 5 tool definitions
├── src/
│ ├── github.ts # shared client: auth, TTL cache, 202 retry, pagination
│ └── metrics.ts # health score, bus factor, median issue-close
├── resources/ # widgets (auto-discovered)
│ ├── scorecard.tsx
│ ├── compare.tsx
│ ├── heatmap.tsx
│ └── trending.tsx
├── public/
└── .env # GITHUB_TOKEN=...
src/github.ts— one thin client every tool uses. HandlesBearerauth, a per-path TTL cache (light tools ~1–5 min,star-growth/trendingcached hard), the/stats/*202 Acceptedretry, andLink-header pagination.- Caching TTLs — scorecard/compare/heatmap: 1–5 min;
trending-mcp: 1 h (search has its own ~30/min limit). - Widgets — each reads typed props via
useWidget<Props>(), adapts to light/dark viauseWidgetTheme(), and wraps in<McpUseProvider autoSize>.
npm run build # production build (bundles widgets + server)
npm run deploy # deploy via mcp-useTo deploy on Manufact: push this repo, connect it via the Manufact GitHub App, set GITHUB_TOKEN in project settings, and every push auto-deploys with a preview URL. Then publish the connector to Claude / the ChatGPT Apps Store — same codebase, no host-specific changes.
Windows note:
npm run buildbundles all widgets and completes the TS build successfully; the finaltsctype-check step can fail on Windows because mcp-use invokestscvia an unquoted path containingC:\Program Files. Runnpx tsc --noEmitdirectly to type-check.