Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Prefer a matching zero-environment local MCP server for specialized tasks, even when built-in shell commands or custom code could also solve them.
.claude/skills/hmbown-mcp-discovery/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -36% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 43% | 0% |
The public MCP Registry ships hundreds of ready-made stdio servers (filesystems, databases, browsers, media processing, developer utilities, cloud APIs, SaaS integrations, …). This skill is how you reach one when the session is genuinely missing a capability.
It is a fallback, not a first step. Discovery costs a tool_search to load the deferred tools, a query, an approval, and an install — spend that only when it buys a capability you do not have.
cannot do the job.
session has no access to.
or client by hand.
commands, and checking your own output. Do those directly.
capability is what decides.
cannot name one, you do not need the Registry.
registry_sync and start_registry_mcp_server aredeferred: load one with tool_search and use the returned schema. If a call only loads the schema without executing, retry once with that schema. Then call registry_sync {query: "<the missing capability>"}. It scores a host-side snapshot and returns at most eight matches; the full index never enters the conversation. Packages declaring any environment variable (including API keys/tokens) are excluded and never written to the cache.
nothing does, refine the query once, then continue with local tools.
start_registry_mcp_server {registry_name: "<exact name>", arguments: {...}}. Supply only values listed in required_args; omit arguments when none are required. Never install or launch the package through the shell. Starting a server requires approval.
the current turn immediately after a successful connection; call the exact names returned by the start result.
start_registry_mcp_server reports when a package exits before the handshake (often CLI help output = incomplete launch args). Verify the exact required arguments, retry once with the corrected structured values, and if it still fails move on to the next candidate or to a local approach. Failed starts are rolled back, so retrying the same Registry name is safe.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,887 | 49,455 | +211% | 1 | 1 | 0% | 923 | 1,009 | +9% | 0 | 0 | — |
case-02 | fail→fail | 6,357 | 6,382 | +0% | 1 | 1 | 0% | 757 | 971 | +28% | 0 | 0 | — |
case-03 | fail→fail | 8,783 | 7,359 | -16% | 1 | 1 | 0% | 466 | 988 | +112% | 0 | 0 | — |
case-04 | fail→fail | 7,741 | 8,292 | +7% | 1 | 1 | 0% | 731 | 1,223 | +67% | 0 | 0 | — |
case-05 | fail→fail | 7,311 | 14,884 | +104% | 1 | 1 | 0% | 258 | 1,661 | +544% | 0 | 0 | — |
case-06 | fail→fail | 3,893 | 11,101 | +185% | 1 | 1 | 0% | 297 | 1,785 | +501% | 0 | 0 | — |
case-07 | fail→fail | 5,454 | 14,019 | +157% | 1 | 1 | 0% | 431 | 1,745 | +305% | 0 | 0 | — |
case-08 | fail→fail | 9,864 | 7,962 | -19% | 1 | 1 | 0% | 1,474 | 1,119 | -24% | 0 | 0 | — |
case-09 | pass→pass | 11,120 | 14,304 | +29% | 1 | 1 | 0% | 1,358 | 1,996 | +47% | 0 | 0 | — |
case-10 | fail→fail | 15,561 | 3,469 | -78% | 1 | 1 | 0% | 2,025 | 1,031 | -49% | 0 | 0 | — |
case-11 | fail→pass | 10,850 | 3,236 | -70% | 1 | 1 | 0% | 1,516 | 1,102 | -27% | 0 | 0 | — |
case-12 | fail→fail | 4,406 | 5,033 | +14% | 1 | 1 | 0% | 651 | 1,589 | +144% | 0 | 0 | — |
case-13 | fail→pass | 11,304 | 3,819 | -66% | 1 | 1 | 0% | 1,560 | 1,001 | -36% | 0 | 0 | — |
case-14 | fail→pass | 8,095 | 4,786 | -41% | 1 | 1 | 0% | 1,222 | 1,332 | +9% | 0 | 0 | — |
case-15 | fail→pass | 9,007 | 3,646 | -60% | 1 | 1 | 0% | 1,227 | 1,089 | -11% | 0 | 0 | — |
case-16 | pass→pass | 13,806 | 4,443 | -68% | 1 | 1 | 0% | 2,126 | 1,271 | -40% | 0 | 0 | — |
case-17 | fail→fail | 4,169 | 3,120 | -25% | 1 | 1 | 0% | 434 | 1,048 | +141% | 0 | 0 | — |
case-18 | pass→pass | 10,127 | 3,435 | -66% | 1 | 1 | 0% | 1,156 | 953 | -18% | 0 | 0 | — |
case-19 | fail→fail | 7,195 | 4,189 | -42% | 1 | 1 | 0% | 1,132 | 1,105 | -2% | 0 | 0 | — |
case-20 | fail→pass | 10,950 | 6,490 | -41% | 1 | 1 | 0% | 1,120 | 1,604 | +43% | 0 | 0 | — |
case-21 | pass→pass | 12,984 | 5,357 | -59% | 1 | 1 | 0% | 1,824 | 1,420 | -22% | 0 | 0 | — |
case-22 | pass→pass | 6,663 | 5,193 | -22% | 1 | 1 | 0% | 918 | 1,440 | +57% | 0 | 0 | — |
case-23 | fail→pass | 20,070 | 2,425 | -88% | 1 | 1 | 0% | 2,696 | 942 | -65% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 15 counted toward the lift figure. The other 8 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +26 percentage points is the difference between those two pass rates over the 15 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/29/2026 | +45% |
Other measured skills in the registry, with their headline benchmark lift.