mcp-discovery
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.
When to use
- An available tool, a project script or test, or a few lines of local code
cannot do the job.
- The task needs an external service, database, or protocol client that this
session has no access to.
- You would otherwise install a package or reimplement a well-known converter
or client by hand.
When not to use
- Ordinary work: writing and editing files, reading fixtures, running repo
commands, and checking your own output. Do those directly.
- A capability an already-loaded tool covers, even partially — try it first.
- A near-miss row in a result list. A scored match is a suggestion; the missing
capability is what decides.
Workflow
- Name the gap. State the capability you lack before searching. If you
cannot name one, you do not need the Registry.
- Load and query.
registry_sync and start_registry_mcp_server are
deferred: 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.
- Judge the matches. Take a server when it covers the gap you named. If
nothing does, refine the query once, then continue with local tools.
- Install + run transactionally. Call
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.
- Solve the task with the new tools. Their complete schemas are added to
the current turn immediately after a successful connection; call the exact
names returned by the start result.
If a server fails to start
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.
Don't
- Don't attempt to pass env vars or secrets; this flow has no env channel.
- Don't reconstruct or edit the Registry-provided package command.
1---2name: mcp-discovery-23description: Find and start a zero-environment local MCP server when the session lacks a capability that no available tool, project script, or ordinary local code can cover.4---56# mcp-discovery78The public MCP Registry ships hundreds of ready-made stdio servers9(filesystems, databases, browsers, media processing, developer utilities, cloud10APIs, SaaS integrations, …). This skill is how you reach one when the session11is genuinely missing a capability.1213It is a fallback, not a first step. Discovery costs a `tool_search` to load the14deferred tools, a query, an approval, and an install — spend that only when it15buys a capability you do not have.1617## When to use1819- An available tool, a project script or test, or a few lines of local code20 cannot do the job.21- The task needs an external service, database, or protocol client that this22 session has no access to.23- You would otherwise install a package or reimplement a well-known converter24 or client by hand.2526## When not to use2728- Ordinary work: writing and editing files, reading fixtures, running repo29 commands, and checking your own output. Do those directly.30- A capability an already-loaded tool covers, even partially — try it first.31- A near-miss row in a result list. A scored match is a suggestion; the missing32 capability is what decides.3334## Workflow35361. **Name the gap.** State the capability you lack before searching. If you37 cannot name one, you do not need the Registry.382. **Load and query.** `registry_sync` and `start_registry_mcp_server` are39 deferred: load one with `tool_search` and use the returned schema. If a call40 only loads the schema without executing, retry once with that schema. Then call41 `registry_sync {query: "<the missing capability>"}`. It scores a host-side42 snapshot and returns at most eight matches; the full index never enters the43 conversation. Packages declaring any environment variable (including API44 keys/tokens) are excluded and never written to the cache.453. **Judge the matches.** Take a server when it covers the gap you named. If46 nothing does, refine the query once, then continue with local tools.474. **Install + run transactionally.** Call48 `start_registry_mcp_server {registry_name: "<exact name>", arguments: {...}}`.49 Supply only values listed in `required_args`; omit `arguments` when none are50 required. Never install or launch the package through the shell. Starting a51 server requires approval.525. **Solve the task with the new tools.** Their complete schemas are added to53 the current turn immediately after a successful connection; call the exact54 names returned by the start result.5556## If a server fails to start5758`start_registry_mcp_server` reports when a package exits before the handshake59(often CLI help output = incomplete launch args). Verify the exact required60arguments, retry once with the corrected structured values, and if it still61fails move on to the next candidate or to a local approach. Failed starts are62rolled back, so retrying the same Registry name is safe.6364## Don't6566- Don't attempt to pass env vars or secrets; this flow has no env channel.67- Don't reconstruct or edit the Registry-provided package command.