Skip to content

MCP Catalog

siamakerlab edited this page May 23, 2026 · 9 revisions

MCP Catalog

60 curated MCP (Model Context Protocol) servers across 10 categories, with checkbox multi-select, per-MCP token forms, and live install progress.

/env-setup/mcp in the web UI.

Category overview

Category Count Notable
🛠 Dev tools 7 filesystem ★, fetch ★, git ★, memory ★, sequential thinking, time, everything
🌐 Git hosting 5 GitHub ★, GitLab, Gitea, Bitbucket, Azure DevOps
🗄 Database 8 SQLite ★, Postgres, MySQL, MongoDB, Redis, Elasticsearch, Supabase, Firebase
🔎 Search / web 6 Brave ★, Tavily, Perplexity, Firecrawl, Google Maps, Context7 ★
🖥 Browser 2 Playwright ★, Puppeteer
✅ Productivity 13 Notion ★, Linear, Jira, Confluence, Slack, Discord, Trello, Asana, ClickUp, Airtable, Monday, Google Drive, Obsidian
☁ Cloud 6 AWS KB, Cloudflare, Vercel, Heroku, Railway, Docker Hub
📨 Communications 5 SendGrid, Twilio, Telegram, Stripe, Sentry
📱 App publish (Experimental) 3 Google Play Publisher, App Store Connect, Fastlane
🧠 AI assist 5 OpenAI Bridge, YouTube Transcript, Wikipedia, ArXiv, Everart

★ = recommended for first-time setup (9 entries).

Trust tiers

  • VERIFIED — Anthropic-official @modelcontextprotocol/* or a 1st-party vendor (Notion, Cloudflare, GitHub-via-Anthropic). Package name is stable.
  • COMMUNITY — Popular 3rd-party packages. Package names can change as the maintainer publishes new versions.
  • EXPERIMENTAL — Package name not yet finalized or install behavior unverified. May fail; recommended to manually fine-tune .mcp.json after install.

"준비중 / Coming soon" badge

Some MCPs require an interactive browser OAuth callback as part of their first call (not just a key/token up front). vibe-coder runs MCP servers as non-interactive child processes — there's no way for the browser-callback step to happen inside that flow. These MCPs are listed in the catalog with a ⏳ 준비중 badge, the checkbox is disabled, and the server refuses install requests for them (400 coming_soon).

Currently affected:

  • Google Drive (@modelcontextprotocol/server-gdrive) — Even after you upload the OAuth client JSON, the first call needs a user to open a browser, sign in, and approve scopes. There's no "Service Account" path for Drive in the standard MCP server.

Workarounds if you really need them today:

  1. Run the MCP server once on a desktop (npx -y @modelcontextprotocol/server-gdrive) to complete the OAuth dance and produce a refresh-token file.
  2. Copy that token file into the container (docker cp) at the path the MCP server expects.
  3. Register the MCP entry manually in ~/.claude/.mcp.json.

Otherwise wait for a future release that wraps the OAuth flow server-side.

Installation flow

  1. Check the boxes for desired MCPs.
  2. Filled-in token fields appear inline for entries that need credentials (GitHub PAT, Slack Bot token, etc.). Required fields are marked with *.
  3. Click Install selected. Server runs npm install -g <pkg> for each one (sequentially), and registers each into ~/.claude/.mcp.json under the mcpServers key with the supplied env.
  4. Live progress at /env-setup/tasks/{taskId} (or via WS).
  5. After install, the MCP is available in the next Claude turn (no need to restart the per-project child — Claude's MCP client re-reads .mcp.json on each request).

Unregister vs uninstall

  • Unregister (POST /api/env-setup/mcp/unregister): removes the entry from .mcp.json only. The npm package stays on disk; re-checking the box brings it back instantly.
  • Hard uninstall: docker exec -it --user vibe vibe-coder-server npm uninstall -g <pkg>. Useful only to reclaim disk space.

.mcp.json format

Generated by the catalog:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
    },
    ...
  }
}

You can hand-edit this file inside the container (docker exec -it --user vibe vibe-coder-server vi ~/.claude/.mcp.json) for entries the catalog doesn't cover. Survives image upgrades.

Adding MCPs not in the catalog

Two ways:

Via docker exec (one-off)

docker exec -it --user vibe vibe-coder-server bash
npm install -g some-mcp-package
# Edit ~/.claude/.mcp.json to add the entry

Both paths (/home/vibe/.local + /home/vibe/.claude) are bind-mounted so the install + registration survive image upgrades.

Permanently (PR to the catalog)

Add an entry to server/.../env/McpCatalog.kt. The 50-line snippet includes id / package / category / trust tier / configFields. Send a PR.

Secret-file authentication (Service Account JSON, Apple .p8, …)

Some MCPs authenticate with a key file instead of a token string:

MCP File format Where to get it
Google Play Publisher .json (Service Account) Play Console → Setup → API access → Service accounts → Create key
App Store Connect .p8 App Store Connect → Users and Access → Keys → Generate API Key
Firebase .json (Service Account) GCP Console → IAM → Service Accounts → Keys
Google Drive .json (OAuth client) GCP Console → APIs & Services → Credentials → OAuth client ID → Download

How it works (browser UI)

  1. Check the box of the MCP that needs a file. The config block expands.
  2. The field shows a file picker (<input type="file">), not a text input.
  3. Pick the file. As soon as you select it, the browser uploads it via POST /env-setup/mcp/{mcpId}/file/{fieldKey} (multipart) immediately — no separate "upload" button.
  4. The server saves it to /home/vibe/.config/mcp-secrets/<mcpId>-<fieldKey>.<ext> (0600 permissions, directory 0700) and returns the absolute path.
  5. The path appears below the field. Clicking "Install selected" includes the path in .mcp.json's env block automatically — the MCP server reads it on first call.

Limits

  • 128 KB max per file. Service Account JSON and .p8 keys are a few KB; a larger file is rejected as suspicious.
  • File extension is taken from the original filename (preferred) or acceptMime.
  • Filename is sanitized ([^A-Za-z0-9._-]_) to prevent path traversal.

Replacing a file

Simply pick a new file in the same field. The server atomic-moves it over the old one (same <mcpId>-<fieldKey> slot).

Manual placement (alternative)

If you'd rather drop the file in via docker cp:

docker cp ./play-sa.json vibe-coder-server:/home/vibe/.config/mcp-secrets/google-play-publisher-GOOGLE_PLAY_SERVICE_ACCOUNT_JSON.json
docker exec --user vibe vibe-coder-server chmod 600 /home/vibe/.config/mcp-secrets/google-play-publisher-GOOGLE_PLAY_SERVICE_ACCOUNT_JSON.json

Then in the catalog UI, the existing path will show — no upload needed, just check the box and click Install.

Recommended starter pack

For most users:

What it does
filesystem Read/write under the workspace
fetch Pull external docs as Markdown
git Git log/diff/status (read-only)
memory Knowledge graph across sessions
sqlite Query the SQLite under .vibecoder/
context7 Up-to-date library docs
GitHub Issues/PRs/repo browsing (needs PAT)
Notion Workspace pages (needs Integration token)
Brave Search Web search (free API key)

After this 9-pack, install Playwright or Puppeteer only if you actually need browser automation (~300 MB Chromium download).

Clone this wiki locally