Bootstrap, verify, and update CLI tools & MCP servers in Claude Code from recipes; audit scopes.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A Claude-Code-only MCP server that bootstraps your dev environment from one prompt β install, wire, and verify CLI tools and other MCP servers from curated recipes, and see where every MCP server lives across your scopes.

Named after the Lusitanian goddess of boundaries and crossings β erbina is the threshold a tool crosses to become part of your environment. Sibling to ataegina (goddess of rebirth), which is also erbina's proof-of-concept recipe #1.
The recipe contract is the core idea. One server, eleven tools, and a curated set of 500+ recipes spanning
cli-tools, scope-wiringmcp-servers, andprofiles that bundle them (see the Recipe gallery). Each is one YAML file held to a conformance bar β schema + linter policy + a 100%-covered offline suite, plus a weekly job that actually installs it on macOS, Linux, and Windows β and adding one is the point.
Setting up a coding-agent environment is death by a thousand cuts: you install a CLI, hand-edit a config, add an MCP server β then find out it's in the wrong scope and isn't showing up. Claude Code spreads MCP config across up to four files in two apps, with no single place that knows what's installed where (anthropics/claude-code#27458, #8288, #5963).
erbina makes setup a thing an agent does for you, and proves worked:
requires:
prerequisites, profiles that bundle a whole set) and cover the full
lifecycle: update β re-verify β rollback, uninstall, and a doctor
health-check over everything erbina installed.local / project / user
scopes, wires MCP-server recipes into the right one, and audits all three so
you finally have one place that answers "what's installed, and where?"erbina is a single Python file run by uv (it
declares its own dependencies inline β no venv to manage).
Then, in Claude Code, just ask: "use erbina to set up ataegina" β the agent inspects the recipe, shows you exactly what it will run, then bootstraps and verifies it.
Requirements: uv and Claude Code, on macOS, Linux, or Windows. Plus whatever a
recipe's install method needs β typically brew on macOS, winget on Windows, or
a language toolchain (cargo / go / pipx) or curl fallback elsewhere. Every
method is guarded, so only one that actually exists on your machine ever runs.
In an interactive session claude mcp add β¦ (above) handles the trust prompt for
you. A non-interactive claude -p run has no prompt to answer, so you load the
server with --mcp-config and pre-approve erbina's tools with --allowedTools
(their names are mcp__erbina__<tool>). Write an MCP config once:
--strict-mcp-config makes the run use only the servers in that file, so it
never picks up your global config. Omit --allowedTools and a headless call
can't call any tool β that's the one thing new CI users trip on.
| Tool | What it does |
|---|---|
list_recipes | List the curated recipes erbina can bootstrap β each with a category and search tags so you can tell at a glance what it's for. |
search_recipes | Find a recipe by keyword and/or filter (category, kind) instead of scanning the whole list β ranked by relevance. E.g. "a JSON tool" or category="kubernetes". |
list_categories | A domain map of the registry β every category with a recipe, how many, and example tools. See what erbina covers at a glance, then drill in with search_recipes(category=β¦). |
inspect_recipe | Show exactly what bootstrapping a recipe would run β the consent surface. Nothing executes. |
bootstrap | Run a recipe: detect β install β configure β verify, idempotently. dry_run=true returns the full plan without executing. |
check_updates | Read-only report of whether installed tools have newer versions available, for recipes that declare a version: block. Pinned tools are flagged and excluded. |
update | Upgrade an installed tool, then re-run verify as a safety net β on failure it rolls back (if the recipe supports it) or marks the tool broken. dry_run=true shows the command first. |
pin | Pin (or unpin) a tool so automatic updates skip it. update refuses a pinned tool unless force=true. |
audit_scopes | Read-only report of which MCP servers are configured in local / project / user scope, where each lives, and any name shadowed across scopes. |
find_dead_mcps | Health-check every configured MCP server and flag the ones that fail to connect β stale/dead servers, annotated with the scope to remove them from. Read-only. |
remove_mcp | Remove an MCP server by name (e.g. a dead one), auto-resolving its scope. dry_run=true shows the claude mcp remove command without running it. |
doctor | Health-check the CLI tools erbina has installed (its state manifest): re-run each one's detect + verify and report healthy / missing / broken. Read-only; the CLI-tool counterpart to find_dead_mcps. |
uninstall | Reverse a cli-tool install via the recipe's uninstall: block, confirm it's gone (re-run detect), and forget it in the state manifest. dry_run=true shows the command first. For MCP servers use remove_mcp. |
The server's instructions tell the agent to always inspect (or dry-run) and show you the commands before executing β erbina shells out to package managers with real privileges (it runs as a sibling process, not under Claude Code's Bash sandbox), so consent before execution is the safety model.
A recipe is four phases an agent executes. The proof-of-concept entry,
recipes/ataegina.yaml:
A kind: mcp-server recipe instead wires a server into a chosen scope β its
configure step is claude mcp add <name> --scope ${scope} -- β¦, where ${scope}
is substituted from the scope you pass to bootstrap. See
recipes/fetch.yaml. A kind: profile recipe installs
nothing itself β it just requires: a curated set, so one prompt bootstraps the
whole bundle.
Recipes can also declare optional blocks: requires: (prerequisites bootstrapped
first), version: + update: / rollback: (auto-updates, with latest: as a
command or the { github: owner/repo } shorthand), and uninstall: (teardown).
Because each install method's when: guard runs in the host shell, methods are
cross-platform β a winget method fires only on Windows, brew/cargo/curl
only where they apply. The full schema is in SCHEMA.md.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/erbina)<a href="https://allmcps.com/mcp/erbina"><img src="https://allmcps.com/api/badge/erbina?style=directory" alt="Erbina on AllMCPs" /></a>