关于 vibo-mcp
vibo-mcp 面向活动主办者和新人,用于规划 Vibo 活动音乐。它提供时间线、歌曲请求、问题、宾客和通知的访问,并可将选曲导出到 Spotify 或 Apple Music。
主要功能
- 01浏览活动和音乐时间线
- 02添加歌曲请求并为歌曲点赞
- 03管理时间线分区和歌曲
- 04处理通知、问题和宾客
- 05将选曲导出到 Spotify 或 Apple Music
- 06发送更改前进行确认
适用场景
- 01查看活动时间线和歌曲请求
- 02将歌曲整理到时间线分区
- 03回答活动问题并管理宾客
- 04导出活动选曲
MCP 相关
它将 Vibo 面向主办者和新人的操作封装为 MCP 工具。向 Vibo 发送更改前需要确认。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y vibo-mcpVIBO_EMAILVibo account email (or use VIBO_ACCESS_TOKEN for SSO accounts)VIBO_PASSWORD密钥Vibo account passwordVIBO_ACCESS_TOKEN密钥Captured x-token from a signed-in web.vibodj.com session (SSO alternative)VIBO_REFRESH_TOKEN密钥Matching x-refresh-token so the session can renewVIBO_UPLOAD_DIROptional. The upload directory: vibo_set_profile_photo and photo/file answers to vibo_answer_question only read local files from it. Default ~/Downloads/vibo-mcp.VIBO_SESSION_FILEOptional. Where a browser-captured token pair is persisted so it survives MCP restarts. Default ~/.vibo-mcp/session.json.VIBO_API_URLOptional. Overrides the Vibo GraphQL endpoint. Default https://api.vibodj.com/v2/graphql.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
42收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| view | enum | 否 | 响应格式:"compact"(默认)会省略响应中其他位置已包含的字段;"full" 会返回此服务器支持的所有字段。compact 会从响应中移除图片/头像 URL;"full" 会原样返回 Vibo 的负载。不支持字段筛选:此服务器没有经过验证的记录来确定哪些 Vibo 字段重要,臆造筛选规则可能会删除调用方需要的字段。compact | full |
详细介绍
vibo-mcp
Vibo(vibodj.com)的 MCP 服务——作为活动主办方/新人规划活动音乐。浏览活动和时间安排,查看并添加歌曲请求,为歌曲点赞,管理通知,并将选择导出到 Spotify/Apple Music,所有操作均可通过自然语言完成。
由 AI(Claude Code)开发和维护。请自行斟酌使用。 非官方项目——与 Vibo 无关。仅适用于你自己的账户和数据。
安装
{
"mcpServers": {
"vibo": {
"command": "npx",
"args": ["-y", "vibo-mcp"],
"env": {
"VIBO_EMAIL": "[email protected]",
"VIBO_PASSWORD": "your_password"
}
}
}
}
身份验证
选择一种方式:
| 方式 | 环境变量 | 适用情况 |
|---|---|---|
| 电子邮件 + 密码(推荐) | VIBO_EMAIL、VIBO_PASSWORD | 你使用电子邮件/密码登录 Vibo。 |
| 捕获令牌 | VIBO_ACCESS_TOKEN(+ VIBO_REFRESH_TOKEN) | 你的账户使用 Apple/Google/Facebook 登录(无密码)。从已登录的 web.vibodj.com 会话中捕获 x-token/x-refresh-token。 |
| 浏览器捕获(SSO) | 运行 vibo_capture_session | 安装 ContextMint Bridge 浏览器扩展并登录 web.vibodj.com 后,可自动捕获令牌(保存到 ~/.vibo-mcp/session.json)。 |
服务可在没有凭据的情况下启动;配置错误只会在首次调用工具时出现。
ContextMint Bridge(用于 SSO 捕获)
vibo_capture_session 会通过 ContextMint Bridge 浏览器扩展读取你已登录的标签页。请从
github.com/nullnet-app/contextmint-bridge/releases 安装:
- Chrome: 下载 Chrome 压缩包,解压后前往
chrome://extensions,以未打包的形式加载(开发者模式 → 加载已解压的扩展程序)。 - Safari: 暂不可用——它将随 ContextMint 应用一同发布,该应用目前没有公开下载渠道。暂时请使用 Chrome。
首次使用时,请批准扩展显示的配对码。
ContextMint Bridge 是 fetchproxy 浏览器扩展的新名称,由同一位维护者开发;fetchproxy 自己的 README
(https://github.com/chrischall/fetchproxy#extension) 中也有指向它的链接。其源代码公开于 https://github.com/nullnet-app/contextmint-bridge:你可以自行构建,也可以将发布压缩包与其旁边发布的 .sha256 文件进行校验
(shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256)。
上传
vibo_set_profile_photo 和 vibo_answer_question 中的照片/文件回答只会读取上传目录中的本地文件——该目录由 VIBO_UPLOAD_DIR 指定,默认为 ~/Downloads/vibo-mcp。请先将文件复制到该目录,再让 Claude 上传。隐藏文件、指向目录外部的符号链接,以及超过 25 MiB 的文件都将被拒绝。照片栏位需要真实图片:扩展名必须是图片类型,且文件内容也必须与之匹配(将文本文件改名后会被拒绝);你传入的路径必须指向文件本身——照片不接受任何符号链接,即使它指向上传目录内部也不行。
时间线分区和限制
vibo_create_section会添加一个分区,并可指定其位置(afterSectionId或从 0 开始的position)。Web 应用只会将新分区添加到末尾。可见性可以设为host(默认值,即“我和 DJ”)或public(访客也可见)。vibo_delete_section会在删除前显示分区名称、歌曲数量和已回答的问题。除非传入force: true,否则不会删除 DJ 的“禁止播放”列表(dontPlay)和时间线分隔符(headline)。vibo_reorder_sections会将一个或多个分区移动到另一个分区之后,或移至开头。vibo_reorder_songs可在分区内对歌曲执行同样的操作。
Vibo 的限制会在发送任何内容前检查:
| 项目 | 限制 |
|---|---|
| 分区名称 | 45 个字符(Web 应用的限制) |
歌曲评论(vibo_update_song) | 90 个字符(表情符号按 2 个字符计) |
只有 DJ 的设置允许时,主持人才能执行部分操作:添加或重新排序分区(活动设置),或重新排序某个分区内的歌曲(该分区的“主持人可以排序歌曲”设置)。Vibo 会为主持人创建的每个分区关闭“主持人可以排序歌曲”设置,且只有 DJ 可以将其开启。如果设置阻止你执行操作,工具会说明具体是哪个设置,而不是返回 Vibo 的笼统错误“用户无权执行此操作”。
Vibo 不会保存主持人设置的分区描述,因此 vibo_create_section 接受的是一条备注(供 DJ 查看)。
确认
每次写入操作(添加或移除歌曲、评论、邀请、导出、回答、上传等)都会在发送到 Vibo 前进行确认。
| 变量 | 默认值 | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | 客户端无法显示确认提示词(claude.ai、Claude Desktop)时,写入操作的处理方式。ask-user:分两步执行——首次调用不执行任何操作,并返回预览和令牌;模型必须先在聊天中获得你的批准,然后才能再次携带该令牌调用。auto:同样分两步执行,但模型自行查看预览后即可使用令牌。refuse:此类客户端上的写入操作会被拒绝。能够显示提示词的客户端(Claude Code)始终会显示实际确认提示,除非 MCP_CONFIRM_ELICITATION=off。无法识别的值会按 refuse 处理。 |
MCP_CONFIRM_ELICITATION | on | off 表示始终不显示确认提示,因此所有客户端都会按 MCP_CONFIRM_MODE 处理。对于声称能显示提示但实际上从不显示提示的客户端(写入操作会一直挂起——opencode 2.0.x),请设置此项。其他任何值都会按 on 处理,并在 stderr 上显示警告。 |
MCP_CONFIRM_TTL_SECONDS | 600 | 令牌的有效时长。 |
MCP_CONFIRM_SECRET | 每个进程随机生成 | 签名密钥;仅当令牌必须在服务重启后继续有效时才设置。 |
令牌只能使用一次,且仅适用于生成预览时对应的工具和参数:参数发生变化或重复使用令牌都会被拒绝,且不会发送任何内容。
工作原理
Vibo 的应用通过 https://api.vibodj.com/v2/graphql 上的 GraphQL API 进行通信,并使用通过电子邮件地址/密码 signIn 获取的 x-token 标头进行身份验证。此服务会在服务端复用相同流程(无需浏览器),并将主持人/新人操作封装为 MCP 工具。每个会修改数据的工具都会先要求你确认:能够显示确认提示的客户端(Claude Code)会显示提示(除非 MCP_CONFIRM_ELICITATION=off);否则,首次调用不会发起网络请求,而是返回预览和 confirmToken,只有再次携带该令牌调用时才会执行更改(参见确认)。
反向工程得出的 API 说明见 docs/VIBO-API.md,完整工具列表见 skills/vibo-mcp/SKILL.md。
开发
npm install
npm run build # tsc + esbuild bundle → dist/
npm test # vitest
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。