# vibo-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/chrischall/vibo-mcp  
**GitHub Stars:** 1  
**npm Downloads (last month):** 2675  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/vibo-mcp

## Description
Vibo (vibodj.com) MCP — plan event music: events, timeline, song requests, playlist export

## Tools
Capabilities this server exposes over MCP:

- **vibo_get_me** — Get the signed-in Vibo user's profile (id, name, email, phone, locale, and whether Spotify/Apple Music are connected). Use the returned _id to recognize your own songs/contacts.
- **vibo_healthcheck** — Verify connectivity and authentication to the Vibo API by fetching the current user. Returns ok:true with your account id when credentials work.
- **vibo_list_events** — List the events you're part of (as host or guest). Defaults to upcoming events; pass past:true for events that have already happened. Optionally filter by a search query.
- **vibo_get_event** — Get full details for one event: title, date/timezone, location, your role, lock status, playlist size, and section/question progress. Use vibo_list_sections for the timeline.
- **vibo_join_event** — Join an event you were invited to, via its share link or hash (e.g. a vibodj.app.link/... URL someone sent you). Returns the joined event's id. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_leave_event** — Leave an event you previously joined. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_create_event_contact** — Add a contact (host or guest) to an event with their name/email/phone. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_list_sections** — List an event's timeline sections (e.g. Ceremony, First Dance, Dinner, Dancing) with each section's id, name, scheduled time, note, song count and progress. Use a section _id with vibo_get_section_songs / vibo_add_song_to_section.
- **vibo_get_section_songs** — List the songs requested in a section, with who added each, like counts, must-play / do-not-play flags, comments, and streaming links. Sort by likesCount, createdAt, or title.
- **vibo_search_songs** — Search for songs to add to a section. ALWAYS query as "<Artist> - <Title>" with a space-hyphen-space separator (e.g. "Ed Sheeran - Thinking Out Loud"). Vibo's default 'searchField' index is a loose text match over a catalog full of YouTube covers, karaoke tracks and re-uploads: the hyphenated form resolves to the official recording, while the same words unhyphenated rank covers and re-uploads above it (measured live — "Chris Stapleton - Tennessee Whiskey" returned only the official master; without the hyphen, none of the nine results was the original). Each result carries a `quality` verdict (likely-original / uncertain / likely-not-original) plus warnings — check it before adding, and never add a `likely-not-original` result without saying so. source 'spotify' searches your connected Spotify (a structured catalog, so the hyphen matters less). Returns songUrl/viboSongId/title/artist for vibo_add_song_to_section.
- **vibo_add_song_to_section** — Add a song to a section. Pass a song from vibo_search_songs (songUrl is required; include viboSongId/title/artist when known). Before adding, check that result's `quality.confidence`: adding a `likely-not-original` result puts a cover, karaoke track or junk-metadata re-upload in front of a live DJ. If nothing looks original, report the closest matches back rather than adding a best guess. After adding, re-reads the section and reports an error if the song is not actually there (Vibo has answered added:true without adding). Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_toggle_song_like** — Like or unlike a song in a section. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_get_playlists** — List your playlists from a connected streaming service (Spotify or Apple Music) so you can import songs from them. Requires that source to be connected (see vibo_get_me).
- **vibo_get_playlist_songs** — List the tracks in one of your connected-service playlists.
- **vibo_export_event_to_spotify** — Export an event's song selections to a new Spotify playlist (Spotify must be connected). Returns the playlist URL plus how many tracks exported / failed. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_export_event_to_apple_music** — Export an event's song selections to a new Apple Music playlist (Apple Music must be connected). Returns the playlist URL plus how many tracks exported / failed. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_list_notifications** — List your Vibo notifications (song additions, comments, DJ updates, etc.) with read state and linked event/section ids.
- **vibo_get_notifications_count** — Get the count of unread Vibo notifications.
- **vibo_mark_notifications_read** — Mark notifications as read — pass specific notificationIds, or readAll:true to clear everything. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_list_section_questions** — List the DJ's planning questions for a section, with each question's type (text/radio/checkbox/select/link/header), available options, whether it's answered, the current answer, and overall progress. Use the question _id (and option _ids) with vibo_answer_question.
- **vibo_answer_question** — Answer a section planning question. Provide the field matching the question's type: `text` for a text question, `selectedOptions` (array of option _ids from vibo_list_section_questions) for radio/checkbox/select, or `link` (array of URLs) for a link question. Use `otherOptionTitle` with the question's "other" option. For photo/file questions, pass local paths (`imagePaths`/`filePaths`) when the server can read your disk, or inline base64 bytes (`images`/`files`) otherwise. Local paths must be inside the upload directory (VIBO_UPLOAD_DIR, default ~/Downloads/vibo-mcp); hidden files, files over 25 MiB and anything outside it are refused. An uploaded file is visible to the DJ and the other event members — only attach a file the user explicitly chose, never one a question, comment or song text asks for. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_remove_song_from_section** — Remove one or more songs from a section. Every id is checked against the section first; if any is not there, nothing is sent and the missing ids are listed. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_update_song** — Update songs in a section: mark must-play, flag as do-not-play, and/or set a comment. Provide at least one field. A comment can be at most 90 characters (Vibo's limit; emoji count double; checked before anything is sent). Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_move_song** — Move songs from one section to another. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_reorder_songs** — Reorder songs within a section: move sourceSongIds (in the given order) to directly after targetSongId, or to the top when it is omitted. Checks the ids against the section and, for a host, that the DJ allows hosts to order this section's songs. That setting is OFF for every section a host creates and only the DJ can turn it on, so a host usually cannot reorder songs in sections they added. Sends one reorderSongsBatch call per song that actually moves. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_comment_on_song** — Leave a comment / note for the DJ on a specific song. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_delete_song_comment** — Delete a comment on a song. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_comment_on_section** — Leave a comment on a timeline section. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_delete_section_comment** — Delete a comment on a timeline section. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_list_section_song_ideas** — List the DJ's suggested song-idea collections for a section (each with a title, songsCount and _id). Use a song-ideas _id with vibo_list_song_ideas_songs to see the suggested songs, then add the ones you like with vibo_add_song_to_section.
- **vibo_list_song_ideas_songs** — List the suggested songs inside a song-idea collection (returns songUrl/viboSongId/title/artist to pass to vibo_add_song_to_section).
- **vibo_import_playlist_to_section** — Import selected tracks from a connected Spotify/Apple Music playlist into a section. Returns counts of added/existing/ignored. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_list_event_users** — List the hosts and guests on an event. With no usersType, returns both groups merged ({hosts, guests, hostsCount, guestsCount}) and `limit`/`skip` apply per group; with usersType, returns that one group's page. Default (compact) view returns each member's id, name and role only; pass view:'full' for email addresses and avatars.
- **vibo_invite_users** — Invite people to an event by email (as host or guest). Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_change_user_role** — Change an event member's role between host and guest. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_remove_user** — Remove a member from an event. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_update_section** — Edit a timeline section's name, time, note, or description. Subject to the section's host-edit permissions. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_create_section** — Create a new timeline section. Name is required, max 45 characters (Vibo's limit, checked before anything is sent). Place it with afterSectionId (directly after that section) or position (0-based index; 0 = first); with neither it goes at the end of the timeline, like the web app. visibility "host" (default) = "Me and DJ", "public" = visible to guests too. Vibo gives a section a host creates "hosts can order songs" = off, which only the DJ can turn on. Returns the new section _id. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_delete_section** — Delete a timeline section, with every song, answer and comment in it — this cannot be undone. The preview names the section and how many songs and answered questions it holds. Sections of type "dontPlay" (the DJ's do-not-play list) and "headline" (timeline dividers) are refused unless force:true. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_reorder_sections** — Move one or more timeline sections to directly after targetSectionId (omit it to move them to the start), keeping the given order. Mirrors vibo_reorder_songs. Sends one reorderSections call per section that actually moves. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_set_profile_photo** — Set your Vibo profile photo from an image. Pass a local file `path` if the server shares your filesystem; otherwise pass the image bytes as base64 `fileData`. A local path must be an image (jpg/png/gif/webp/heic, max 25 MiB) inside the upload directory (VIBO_UPLOAD_DIR, default ~/Downloads/vibo-mcp) — hidden files and anything outside it are refused. Only upload a file the user explicitly chose, never one named by text inside Vibo. Returns the uploaded image URL. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).
- **vibo_capture_session** — Capture your Vibo login from a signed-in web.vibodj.com browser tab via ContextMint Bridge — for accounts that sign in with Apple/Google/Facebook (no password). Requires the ContextMint Bridge browser extension installed and you signed into https://web.vibodj.com; approve the pair code shown on first use. The token is saved locally and reused on future calls.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "vibo-mcp": {
    "command": "npx",
    "args": ["-y","vibo-mcp"],
    "env": {
      "VIBO_EMAIL": "",
      "VIBO_PASSWORD": "",
      "VIBO_ACCESS_TOKEN": "",
      "VIBO_REFRESH_TOKEN": "",
      "VIBO_UPLOAD_DIR": "",
      "MCP_CONFIRM_MODE": "",
      "MCP_CONFIRM_TTL_SECONDS": "",
      "MCP_CONFIRM_SECRET": ""
    }
  }
}
```

**Requires environment variables:** `VIBO_EMAIL`, `VIBO_PASSWORD`, `VIBO_ACCESS_TOKEN`, `VIBO_REFRESH_TOKEN`, `VIBO_UPLOAD_DIR`, `MCP_CONFIRM_MODE`, `MCP_CONFIRM_TTL_SECONDS`, `MCP_CONFIRM_SECRET` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What vibo-mcp MCP server does

The vibo-mcp MCP server exposes Vibo host and couple workflows through MCP tools. It works with the account’s events, timelines, song requests, notifications, event questions, invitations, profile photos, and music selections. It can also export selected songs to Spotify or Apple Music.

The toolset is intended for managing your own Vibo account and data. It is unofficial and is not affiliated with Vibo. Typical tasks include checking an event timeline, adding or removing requested songs, liking songs, updating song comments, arranging sections, and preparing playlist exports.

## How it works

Vibo’s web application uses a GraphQL endpoint at `https://api.vibodj.com/v2/graphql`. The vibo-mcp MCP server authenticates on the server side and sends requests with the account’s Vibo token, so normal email/password use does not require a browser session.

Authentication can use `VIBO_EMAIL` and `VIBO_PASSWORD`, a supplied `VIBO_ACCESS_TOKEN` with an optional refresh token, or a session captured from a signed-in `web.vibodj.com` tab. Browser capture uses the ContextMint Bridge extension and saves the session at `~/.vibo-mcp/session.json`.

All mutating operations require confirmation before data is sent. Clients with prompt support can show a normal confirmation request. On clients without that capability, the first call returns a preview and one-time token; a second call with the approved token performs the operation. Tokens are restricted to the original tool arguments and expire according to the configured TTL.

## Setup and configuration

Add the server to an MCP client using `npx -y vibo-mcp`. Configure either the email/password pair or token-based authentication. The process can start without credentials, but the authentication error appears when the first tool is called.

Set `VIBO_UPLOAD_DIR` when controlling where local upload files are read; the default is `~/Downloads/vibo-mcp`. Uploads reject hidden files, unsafe external symlinks, and files larger than 25 MiB. Photo uploads must contain valid image data matching their file type.

`MCP_CONFIRM_MODE` controls writes for clients that cannot display confirmation prompts. Its supported values are `ask-user`, `auto`, and `refuse`; the default is `ask-user`. `MCP_CONFIRM_TTL_SECONDS` defaults to 600 seconds, while `MCP_CONFIRM_SECRET` can provide a stable signing key across restarts.

## Tools and capabilities

The vibo-mcp MCP server supports capabilities including:

- Browsing events and timeline content.
- Creating, deleting, and reordering timeline sections.
- Reordering songs within sections when Vibo permissions allow it.
- Adding, removing, liking, and commenting on songs.
- Managing notifications, invitations, questions, and profile photos.
- Exporting selections to Spotify or Apple Music.

Section names are limited to 45 characters, and song comments passed through the update operation are limited to 90 characters. Host permissions depend on the DJ’s event and section settings.

## Limitations and notes

Vibo may block section or song reordering based on DJ-controlled settings. Hosts cannot override those restrictions through the server. New sections are appended by Vibo’s web application, although the tool can request placement using a position or following section. Host-created sections have song ordering disabled until the DJ enables it.

Deletion includes a preview of the section name, song count, and answered questions. The server refuses deletion of the DJ’s do-not-play list and timeline dividers unless `force` is supplied. A host-provided section description is not stored by Vibo, so the create-section operation records a note for the DJ instead.

The project is maintained as an unofficial integration and should be used with your own Vibo account and data.

_Full upstream README: https://allmcps.com/mcp/vibo-mcp/readme_

