MCP server for managing binary application installations from GitHub releases, with catalog browsing, installation, updates, and template scaffolding
binzaar demonstrates solid tool design with consistent naming (verb_noun pattern), comprehensive descriptions (avg 150+ chars), and well-structured schemas. All 14 tools have explicit input schemas with typed parameters and descriptions. Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are present but not formalized as toolAnnotations in the MCP protocol. Output schemas are not documented in the visible code. Error handling descriptions are present but lack recovery guidance. Composition is strong, tools chain well (e.g., search_apps → app_details → install_app). No security issues detected in parameter handling.
Repository info, the latest non-prerelease release with its assets, and current install state.
Add a tracked install's MCP server to a project's .mcp.json (created or edited in place), leaving other server entries untouched. Errors when the app advertises no MCP server.
Return the current store configuration (manifest URL and install directory).
Resolve the release, match the host arch, verify SHA-256, download and record the install. On zero or ambiguous asset match the error lists the available assets.
List the catalog's app entries, fetched live from the configured manifest.
List tracked installs, alphabetical by slug.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Repository info, the latest non-prerelease release with its assets') but formal output schema definitions are absent from visible code. LLMs cannot plan downstream tool calls without knowing response structure.
Risk annotations (READ_ONLY, WRITE, DESTRUCTIVE) are semantic but not formalized as MCP toolAnnotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot programmatically detect which tools are safe to retry or have side effects.
Error recovery guidance missing. Descriptions like 'On zero or ambiguous asset match the error lists the available assets' promise helpful errors, but no visible error response schema or recovery instructions (e.g., 'Call list_releases() to see available versions'). Agents cannot self-correct on failures.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2025-06-18+ | v2 |
All releases for a repo, newest-first.
List the manifest's templates, fetched live.
Extract a template into a target directory and return the next step (run /product-idea).
Filter the catalog by free-text (name/repo) and/or category.
Update the store configuration. Empty fields are left unchanged; a non-empty manifest_url must be an absolute http(s) URL.
Remove a tracked install's binary and record.
Upgrade a tracked install to the latest release, or report a no-op when current.
Re-verify a tracked install's on-disk SHA-256 (ok | mismatch | missing).
Pagination not visible for list tools. list_catalog, list_releases, list_installed, list_templates lack documented limit/offset/cursor parameters. Large catalogs could blow context windows without pagination.
Dependency hints missing. E.g., install_app description does not mention 'Call search_apps() or app_details() first to find the repo slug.' Agents may attempt invalid calls without discovery.