跳到正文

vibe-mcp

一个 MCP 服务器:读你正在写的代码,据此生成音乐——曲风来自编程语言,情绪则部分来自代码的二进制表示。

Screenshot of vibe-mcp
编辑截图, 28 Sep 2026vibe-mcp ↗

这是什么

一个把你眼前的代码变成音乐的 MCP 服务器。它提供三个工具——开始一次会话、在当前曲目快放完时继续生成、停止——分析交给它的代码片段,然后向音乐生成 API 要一首与分析结果相符的曲子。播放发生在服务器端而不是编辑器里,两首之间做两秒交叉淡化,所以下一段还在生成时音乐不会断。

谁做的常驻西雅图的 AI 顾问,自述工作是帮客户用 AI 做自动化,账号资料里的公司是一家 AI 咨询机构 Vaib Studio,该机构的作品集里列着一个 Cline 产品领导力的案例。他 2012 年就注册了 GitHub,有 57 个公开仓库,其中相当一部分是别人的 fork。

制作过程

6 个阶段
  1. 01

    三个工具,以及把播放放在线的另一头

    服务器提供 `start_vibe_session`、`generate_more_music` 和 `stop_vibe_session` 三个工具,都要求把当前编码上下文作为必填参数传进来。真正不寻常的是音乐从哪里出来:播放跑在 MCP 服务器自己身上,用的是 `speaker` 包,而不是把音频交回编辑器。交叉淡化正是靠这个实现的——`playback.ts` 里有两个播放槽,一个用两秒钟、每五十毫秒一步淡出,另一个同时淡入,所以提前要下一段是无缝的,而不是一段空白。FFmpeg 是硬性依赖,通过 `fluent-ffmpeg` 引入,README 为三个平台各列了一条安装命令。

  2. 02

    代码是怎么变成音乐提示词的

    `buildPrompt()` 先把代码片段截到 1,200 个字符,用关键词启发式从里面推出音乐参数,再把原始代码以 `CODE CONTEXT:` 为标题原样贴进提示词。曲风来自检测出的语言,这张表是整个仓库里最好读的东西:JavaScript 是 lo-fi house、chillhop 和 trip hop;TypeScript 是 synthwave 和 ambient techno;Python 是 ambient 和 downtempo;Java 是 orchestral 和 cinematic;Ruby 是 jazz 和 bossa nova;Go 是 minimal techno;Rust 是 industrial 和 dark ambient;PHP 是 vaporwave 和 future funk;SQL 是 acid jazz 和 broken beat;shell 脚本则是 breakbeat、drum and bass 和 jungle。语言检测是十四组正则表达式,再用文件扩展名兜底。速度来自 `analyzeComplexity()` 的分数,分进五个区间——最简单的代码 60–80 BPM,最复杂的 140–160——然后在选中的区间里随机取一个偏移量。

  3. 03

    情绪是从二进制里读出来的

    最妙的细节是 `analyzeCodeBinaryForMood()`,它把源码转成一串比特,再从里面读情绪。1 与 0 的比例高于 0.6 得到「dense」和「intense」,低于 0.4 得到「sparse」和「minimal」,居中则得到「balanced」。接着它统计字面量比特模式 `0101` 的出现次数,超过某个阈值就加上「rhythmic」和「patterned」——而这个阈值,源码自己标着 `// Arbitrary threshold`。最后它按块扫过比特,测量 1 的密度变化有多快,小标题是作者自己加上引号的:「"Differential Equation" simulation」。这个函数的注释里写着,它只是一个概念示例。

  4. 04

    留在仓库里的那份指令文件

    仓库里有个 `.clinerules/` 目录——Cline 会读取的项目级指令文件——里面只有一份短文档,叫 `No test.md`。全文是:「Please don’t test without me asking you to. Do not run the application. Always use the MCP instead. NEVER RUN node dist/index.js!!!!!」四行字,是作者在告诉自己的编程 agent 不要做什么,也是这个仓库里关于「它是怎么做出来的」最直接的证据。这条规矩还和构建脚本略有出入:脚本输出到 `build/`,不是 `dist/`。

  5. 05

    数字长什么样

    2025 年 4 月 27 日到 5 月 2 日,五天九次提交,之后再无动作。单一作者,没有 release,没有 tag,从来没有人开过 issue 或 pull request。12 颗星、4 个 fork。README 结尾有个 `## License` 标题和「MIT」一个词,但仓库里没有许可文件,所以 GitHub 报告该项目无许可。`package.json` 把包标为 `private`,把 MCP SDK 钉死在 `0.7.0`——一个精确的 1.0 之前版本,而不是版本范围——依赖里除了 `axios` 和 `dotenv`,还有 `speaker` 和 `fluent-ffmpeg`。要跑起来至少需要一个付费密钥,来自 Stability AI 或 PiAPI,用哪个生成器取决于你手上是哪一个。

  6. 06

    homepage 字段指向别处

    仓库的 homepage 填的是 `cline.bot`,那是这个服务器所接入的编辑器的官网,而不是属于本项目的东西。加上 `cline`、`mcp` 两个 topic 和那个 `.clinerules` 目录,它把自己明确放在 Cline 生态里。项目没有单独的 demo;最后一次提交给工具的参数表加了 `language`,正是这个参数让模型可以直接报告语言,而不必从代码里猜。

相关档案

全部档案 →