Skip to main content
Glama
README.md
# vibo-mcp

MCP server for [Vibo](https://vibodj.com) (vibodj.com) — plan your event music
as a host/couple. Browse your events and timeline, see and add song requests,
like songs, manage notifications, and export selections to Spotify/Apple Music,
all via natural language.

> Developed and maintained by AI (Claude Code). Use at your own discretion.
> Unofficial — not affiliated with Vibo. Works only with your own account/data.

## Install

```json
{
  "mcpServers": {
    "vibo": {
      "command": "npx",
      "args": ["-y", "vibo-mcp"],
      "env": {
        "VIBO_EMAIL": "you@example.com",
        "VIBO_PASSWORD": "your_password"
      }
    }
  }
}
```

### Authentication

Choose one method:

| Method | Env vars | When |
|--------|----------|------|
| Email + password (recommended) | `VIBO_EMAIL`, `VIBO_PASSWORD` | You sign in to Vibo with an email/password. |
| Captured token | `VIBO_ACCESS_TOKEN` (+ `VIBO_REFRESH_TOKEN`) | Your account uses Apple/Google/Facebook sign-in (no password). Capture `x-token`/`x-refresh-token` from a signed-in `web.vibodj.com` session. |
| Browser capture (SSO) | run `vibo_capture_session` | With the fetchproxy browser extension installed and signed into `web.vibodj.com`, capture the token automatically (saved to `~/.vibo-mcp/session.json`). |

The server boots without credentials; the config error only surfaces on the
first tool call.

## How it works

Vibo's app talks to a GraphQL API at `https://api.vibodj.com/v2/graphql`,
authenticating with an `x-token` header obtained from an email/password
`signIn`. This server reuses that same flow server-side (no browser needed) and
wraps the host/couple operations as MCP tools. Every mutating tool is
confirm-gated: without `confirm: true` it returns a dry-run preview and makes no
network call.

See [docs/VIBO-API.md](docs/VIBO-API.md) for the reverse-engineered API notes
and [skills/vibo-mcp/SKILL.md](skills/vibo-mcp/SKILL.md) for the full tool list.

## Development

```bash
npm install
npm run build   # tsc + esbuild bundle → dist/
npm test        # vitest
```

## License

MIT

TDQS

A3.6/5.0

Scored across 39 tools

Disambiguation5/5

Every tool targets a distinct operation on a specific resource (events, sections, songs, users, notifications). Even closely related tools like vibo_list_section_song_ideas vs vibo_list_song_ideas_songs or vibo_get_section_songs vs vibo_search_songs have clearly separated responsibilities.

Naming Consistency5/5

All tools follow a consistent `vibo_<verb>_<noun>` pattern (e.g., list_events, get_event, add_song_to_section, remove_user). Minor one-word exceptions like vibo_healthcheck and vibo_get_me do not disrupt the overall predictable style.

Tool Count2/5

With 39 tools, the surface is far larger than the typical well-scoped server (3–15 tools). While the domain is broad, the number feels unwieldy and could likely be consolidated without losing functionality.

Completeness2/5

The set covers many read and update operations but lacks fundamental event lifecycle tools—there is no way to create, update, or delete an event. Users can join/leave but not manage events they host, which is a major gap for an event planning service.

Maintenance

ActivityActive
ResponsivenessResponsive