skyzhao1223/wheel-hub
Searches GitHub for existing open-source solutions and evaluates repositories by scoring them on popularity, momentum, maintenance, and trust, with verdicts to adopt, adapt, inspect, or avoid.
⚙️ wheel-hub
Stop reinventing the wheel. Search, score and adopt the best open-source solutions — before you write a line of code.
wheel-hub is an MCP server + CLI that makes both AI coding agents and humans check the open-source ecosystem first: given a feature or problem, it finds existing solutions and scores them on popularity, momentum, maintenance and trust, then tells you whether to adopt, adapt, inspect or avoid.
Why
Every developer (and every AI agent) rebuilds auth, schedulers, scrapers and admin panels from scratch — not because better wheels don't exist, but because nobody looks for them first. wheel-hub makes "look first" the default.
Related MCP server: reuse-before-generate
Install
MCP server (for Claude Code, opencode, Cursor, …)
npx @wheel-hub/mcpClaude Code example:
claude mcp add wheel-hub --env GITHUB_TOKEN=ghp_xxx -- npx @wheel-hub/mcpGeneric JSON config example (works in most MCP clients):
{
"mcpServers": {
"wheel-hub": {
"command": "npx",
"args": ["@wheel-hub/mcp"],
"env": { "GITHUB_TOKEN": "ghp_xxx" }
}
}
}Note: MCP clients only forward a whitelist of environment variables to servers. Always pass
GITHUB_TOKENexplicitly through the client'senvconfig, or the server will run unauthenticated at 60 requests/hour and hit rate limits quickly.
Then just ask your agent: "before you implement, use wheel-hub to check what exists for background job scheduling".
CLI (for humans)
# one-off
npx @wheel-hub/cli find "SSO login" --lang typescript
npx @wheel-hub/cli evaluate ollama/ollama
# or install for the `wheel-hub` command
npm i -g @wheel-hub/cli
wheel-hub find "SSO login"Tools
Tool | Description |
| Search GitHub for solutions to a problem |
| Score one repo (0–100) with a verdict and reasons |
| Find alternatives + evaluate each — run this before writing new code |
Scoring model
Composite score (0–100) weighted across four dimensions:
Popularity (30%) — star mass on a log scale
Momentum (25%) — stars/day growth + recency of pushes
Maintenance (30%) — commit freshness + issue backlog ratio
Trust (15%) — license permissiveness, archived status
Verdicts: ≥75 adopt · ≥55 adapt · ≥35 inspect · <35 / archived avoid
Configuration
GITHUB_TOKEN (optional) — raises the GitHub API rate limit from 60 to 5,000 requests/hour. Strongly recommended for real use; see the MCP config above for how to pass it.
Packages
Package | Description |
GitHub aggregation + scoring engine | |
MCP server for AI agents | |
Terminal CLI |
Roadmap
License fallback for
NOASSERTIONrepos: parse the license file itself (e.g. the kernel's COPYING declares GPL-2.0 but GitHub classifies it as "Other")Awesome-list mining as a secondary signal source
Star-history curves via OSSInsight data
wheel-hub watch— get notified when your stack's dependencies go staleScore persistence + weekly digest
License
MIT
Available Tools
3 toolscompare_alternativesA
Search for alternatives to a feature/tool and evaluate each one. Use before writing new code to avoid reinventing the wheel. Returns a ranked verdict table.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Number of candidates to evaluate (default 5) | |
| query | Yes | Feature or capability to find alternatives for | |
| language | No | Preferred programming language |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden alone. It discloses the output shape ('ranked verdict table') and implies an evaluation step over multiple candidates, but says nothing about read-only safety, latency/cost of evaluating candidates, or how many sources it queries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler, front-loaded on what it does before the when-to-use hint and the return note. It could be marginally tighter, but essentially every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully states the return format (ranked verdict table), and the simple 3-parameter surface is fully covered by the schema. The remaining gap is behavioral – nothing about whether it is read-only or slow – but for this tool class that is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (query, top, language) are already documented with defaults. The description adds no syntax, format, or constraint detail beyond the schema, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description combines a specific action (search for alternatives + evaluate each) with a clear resource (a feature/tool), which an agent can grasp immediately. It doesn't explicitly distinguish itself from siblings like search_oss, but the 'evaluate each one' plus 'ranked verdict table' framing sets it apart from a plain search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage trigger: 'Use before writing new code to avoid reinventing the wheel.' That tells the agent when to reach for it. It stops short of naming alternatives or exclusion conditions (e.g., when to prefer search_oss or evaluate_repo), so it isn't a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_repoA
Score a single GitHub repository (0-100) on popularity, momentum, maintenance and trust, with an adopt/adapt/inspect/avoid verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Repository in 'owner/name' format or a GitHub URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses the scoring model (popularity, momentum, maintenance, trust), the numeric range, and the verdict taxonomy, but says nothing about auth requirements, rate limits, latency, or how a repo that cannot be fetched is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the verb and resource, followed by the scoring dimensions and output categories. Every clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description steps in to describe the return payload - a 0-100 score across four named dimensions plus a four-level verdict - which is what an agent needs to interpret results. Error handling for malformed or missing repos is the only notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, repo, is fully documented in the schema ('owner/name' format or GitHub URL), which matches the description's scope but adds no syntax or format detail beyond it. Baseline 3 applies when the schema already covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (score) and resource (a single GitHub repository), plus the output scale (0-100), the scoring dimensions, and the verdict categories. 'Single' quietly distinguishes it from compare_alternatives, but the description never names the siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: scoring one repo suggests this is for evaluating an individual candidate rather than searching (search_oss) or comparing options (compare_alternatives). No explicit when-to-use, when-not-to-use, or named alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ossA
Search GitHub for high-quality open-source solutions before implementing a feature. Returns ranked candidates with stars and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 10) | |
| query | Yes | What to look for, e.g. 'background job scheduler', 'SSO login' | |
| language | No | Filter by programming language | |
| min_stars | No | Minimum star count (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose return shape ("ranked candidates with stars and descriptions") and an implicit quality filter. It omits operational context that matters for a GitHub-backed search: authentication expectations, rate limits, and whether results are cached or live. Adequate but incomplete for a zero-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core purpose is front-loaded ahead of the return-shape detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter search tool with a fully documented schema and no output schema, the description covers purpose, trigger, and the shape of results. It stops short of the context an agent would want in the absence of annotations and sibling routing hints — no rate-limit or auth note, and no signal about handing results to evaluate_repo or compare_alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (query, language, min_stars, limit) are already self-documenting, which sets the baseline at 3. The description's phrase "high-quality" loosely gestures at the min_stars default but adds no format, default, or interaction detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs a specific verb ("Search") with a specific resource and scope ("GitHub for high-quality open-source solutions") and states the agent-facing goal ("before implementing a feature"). It is unambiguous on its own, though it never contrasts itself with evaluate_repo or compare_alternatives, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Before implementing a feature" gives a clear situational trigger for reaching for this tool rather than writing code from scratch. There are no exclusions or named alternatives, however, so the agent is not told when to skip this in favor of evaluate_repo or compare_alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
compare_alternatives - First observed
evaluate_repo - First observed
search_oss
TDQS
Scored across 3 tools
evaluate_repo clearly targets a single known repo, but search_oss and compare_alternatives heavily overlap — both search GitHub for solutions before coding and return ranked candidates/verdicts. An agent could easily pick the wrong one since the boundary (finding a solution vs. finding alternatives to something) is subtle.
All three follow a verb_ prefix pattern (evaluate_repo, search_oss, compare_alternatives), which is predictable. Minor inconsistency in the noun suffixes (repo vs. oss vs. alternatives) keeps it from being fully uniform.
Three tools is a little thin but well-scoped for a narrow 'avoid reinventing the wheel' purpose. Each tool earns its place in the discover-then-evaluate flow.
The surface covers the core lifecycle: search for candidates, compare alternatives, and score a specific repo. Minor gaps like fetching detailed repo metadata or readme content exist, but core workflows are covered.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Agent-first search of MCP servers, APIs, CLIs and skills, with best picks and transparent scores.
Finds real, maintained open-source repos that fit your project. MCP grounding for coding agents.
Related MCP Servers
- AlicenseBqualityCmaintenanceMCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.12MIT
- AlicenseBqualityBmaintenanceStop your AI agent from rebuilding what already exists. MCP server that checks GitHub, npm and Python repos for maintained alternatives before you scaffold.290 npm6MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server that gives AI agents access to developer tooling — GitHub (read-only), documentation search, and web research — via stdio transport.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that helps coding agents research and prepare GitHub contributions by gathering repository guidance, related work, code context, and validation evidence into a local SQLite corpus, without ever writing to GitHub.113 npm26MIT