Edge
Edge MCP documentation

The Edge MCP connector

Two tools that let a coding agent search the public skill catalog mid-task, read what the candidates claim to do, and load one of them for the current task only.

What it is

Edge ships as an npm package, @getedge/mcp, that your agent runs as a stdio MCP server. The package is a protocol connector and almost nothing else: it registers two tools, reads its configuration from the environment, and forwards each call as an HTTPS POST to https://getedge.cc/api/mcp. Searching and retrieval happen on Edge's hosted service, not on your machine.

Nothing is installed into your project by either tool. use_skill loads a skill's text for the current task and never calls the installer.

The two tools

Both are declared read-only, non-destructive, idempotent and open-world, so a host that respects MCP annotations knows neither one changes anything. The tool description asks the agent to run Edge alongside its local skills rather than only after a local miss, and to prefer a local skill when the fit is effectively tied. The full parameter and response reference is on the tools page.

What happens during one find_skill call

  1. The connector posts your query. The request body is the query text, plus your EDGE_KEY if one is configured. The connector aborts the call after 35 seconds.
  2. The backend runs the catalog search. It spawns the skills CLI as a child process with an argument array, never a shell string, and gives it 30 seconds. The CLI searches skills.sh and returns 20 results.
  3. The results are parsed into a pool of 20. Each entry yields an identifier, an install count where the CLI printed one, and a skills.sh URL. The CLI gives no descriptions, which is why the next step exists.
  4. Candidates are enriched with descriptions. Edge fetches each candidate's skills.sh page from its own server and reads the description out of the page's meta tag or its JSON-LD block. Eight fetches run at a time, each capped at 2.5 seconds, with a 4 second budget for the whole batch. Results are cached for 6 hours, up to 2000 entries. Free enriches the five it is about to present; Pro enriches all 20, because the reranker needs descriptions for the candidates buried deep in the pool.
  5. Ranking, if you are on Pro. Free keeps the catalog's own order. Pro sends the query and the candidate descriptions to a ranking service in one request, capped at 2.5 seconds, and reorders the pool by fit. See Free and Pro.
  6. Five candidates are rendered as text. A promoted candidate that missed the enrichment budget gets one more enrichment pass, so every presented candidate can describe itself. The result carries a request_id you pass back to use_skill.

Timeouts and budgets

These are the values in the code, not measured averages.

Connector aborts find_skill35 s
Connector aborts use_skill65 s
Backend allows the catalog search30 s
Backend allows the skill retrieval60 s
One description fetch2.5 s
Whole enrichment batch4 s, 8 at a time
Description cache6 h, 2000 entries
Ranking request, Pro only2.5 s
Candidates retrieved, then presented20, then 5
Request body accepted by the backend8 KB
CLI output kept2 MB, then truncated
Concurrent CLI children on the service5

Those steps can add up past the connector's own ceiling. If the catalog search alone runs near its full 30 seconds, enrichment and ranking can push the backend past the 35 seconds the connector waits, and the connector gives up first. What the agent sees in that case is the failure message below, not a partial result.

When Edge is busy or fails

The service spawns one CLI child per call and caps itself at five in flight. Past that it sheds immediately with Edge is busy, retry shortly and an HTTP 429, which tells the caller to retry instead of leaving everyone waiting out a 30 second timeout.

Every failure path, including a shed request, an aborted call and an unreachable service, comes back to the agent as a short error that says so and tells it to keep going:

Edge skill discovery failed: <reason>. Continue the task without Edge.

Discovery then falls back to whatever skills you have installed locally. A search that simply found nothing is not an error: it returns No candidate skills found for "<query>". Choosing none is valid.