vibo-mcp
# 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
Scored across 39 tools
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.
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.
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.
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.