mcpField
V
vibo-mcp

vibo-mcp

本地服务
github.com/chrischall游戏娱乐11 天前更新

关于 vibo-mcp

vibo-mcp 面向活动主办者和新人,用于规划 Vibo 活动音乐。它提供时间线、歌曲请求、问题、宾客和通知的访问,并可将选曲导出到 Spotify 或 Apple Music。

主要功能

  1. 01浏览活动和音乐时间线
  2. 02添加歌曲请求并为歌曲点赞
  3. 03管理时间线分区和歌曲
  4. 04处理通知、问题和宾客
  5. 05将选曲导出到 Spotify 或 Apple Music
  6. 06发送更改前进行确认

适用场景

  1. 01查看活动时间线和歌曲请求
  2. 02将歌曲整理到时间线分区
  3. 03回答活动问题并管理宾客
  4. 04导出活动选曲

MCP 相关

它将 Vibo 面向主办者和新人的操作封装为 MCP 工具。向 Vibo 发送更改前需要确认。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"chrischall-vibo": {
"command": "npx",
"args": [
"-y",
"vibo-mcp"
],
"env": {
"VIBO_EMAIL": "<VIBO_EMAIL>",
"VIBO_PASSWORD": "<VIBO_PASSWORD>",
"VIBO_ACCESS_TOKEN": "<VIBO_ACCESS_TOKEN>",
"VIBO_REFRESH_TOKEN": "<VIBO_REFRESH_TOKEN>",
"VIBO_UPLOAD_DIR": "<VIBO_UPLOAD_DIR>",
"VIBO_SESSION_FILE": "<VIBO_SESSION_FILE>",
"VIBO_API_URL": "<VIBO_API_URL>"
}
}
}
}
启动命令npx -y vibo-mcp
需要配置的环境变量
VIBO_EMAILVibo account email (or use VIBO_ACCESS_TOKEN for SSO accounts)
VIBO_PASSWORD密钥Vibo account password
VIBO_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 renew
VIBO_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmvibo-mcp2.4.5

工具

42

收录的工具列表 · 更新于 2 周前

参数类型必填说明
viewenum否响应格式:"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_MODEask-user客户端无法显示确认提示词(claude.ai、Claude Desktop)时,写入操作的处理方式。ask-user:分两步执行——首次调用不执行任何操作,并返回预览和令牌;模型必须先在聊天中获得你的批准,然后才能再次携带该令牌调用。auto:同样分两步执行,但模型自行查看预览后即可使用令牌。refuse:此类客户端上的写入操作会被拒绝。能够显示提示词的客户端(Claude Code)始终会显示实际确认提示,除非 MCP_CONFIRM_ELICITATION=off。无法识别的值会按 refuse 处理。
MCP_CONFIRM_ELICITATIONonoff 表示始终不显示确认提示,因此所有客户端都会按 MCP_CONFIRM_MODE 处理。对于声称能显示提示但实际上从不显示提示的客户端(写入操作会一直挂起——opencode 2.0.x),请设置此项。其他任何值都会按 on 处理,并在 stderr 上显示警告。
MCP_CONFIRM_TTL_SECONDS600令牌的有效时长。
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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。