内容
# GlitchKitchen-MCP
GlitchKitchen 效果作为原生 MCP 工具。无需浏览器,无需 API 密钥 — 一个纯粹的像素处理流程(Node + sharp),代理可以调用它来对磁盘上的图像进行故障处理。与 [glitchkitchen.com](https://glitchkitchen.com) 相同的词汇:像素排序、伽马校正抖动、RGB 移位、扫描线、切片撕裂、数据弯曲。
## 安装
```bash
cd glitchkitchen-mcp
npm install
```
需要 Node 18+。
## 连接
**Claude 代码:**
```bash
claude mcp add glitchkitchen -- node /绝对路径/to/glitchkitchen-mcp/src/index.js
```
**Claude 桌面版** — 添加到 `claude_desktop_config.json`:
```json
{
"mcpServers": {
"glitchkitchen": {
"command": "node",
"args": ["/绝对路径/to/glitchkitchen-mcp/src/index.js"]
}
}
}
```
文档:https://docs.claude.com/en/docs/claude-code/overview
## 工具
| 工具 | 功能 |
| --- | --- |
| `list_effects` | 完整的特效目录,包含参数和所有预设 |
| `generate_pfp` | 一个种子 → 一个独特的故障艺术头像:程序化调色板、构图、点处理和特效链 |
| `generate_source` | 创建一个干净的源画布 — 色调渐变 + 中心点,GK 经典构图 |
| `glitch_image` | 对一张图像应用有序的、可堆叠的特效链 |
| `glitch_preset` | 一键式故障风格:`crt_terminal`、`vhs`、`corrupted`、`dither_1bit`、`newsprint`、`sorted_heat` |
| `batch_glitch` | 对多张图像应用相同的特效链或预设(为内容批次提供一致的外观) |
## PFP 引擎
`generate_pfp` 是主要工具:一个整数种子可以确定性地衍生出整个视觉身份。种子驱动程序化调色板(连续色相空间,带有类似色、互补色和深色方案 — 或单色),六种背景构图(线性/辐射渐变、带状、环状、分割、网格),四种签名中心点的处理方式(实心、环状、光环、核心),以及从完整特效目录中采样的组合故障链,带有种子参数。点是常量;周围的一切都是变量。
```json
{ "seed": 4242, "temperature": "cool", "intensity": "heavy" }
```
省略种子,系统将随机分配一个种子 — 并始终在配方中报告回来,以便任何意外的最爱都可以永远重现。`intensity`(轻微/中等/强烈)缩放失真强度;完整的配方(调色板、构图、点、链)随每个图像返回。
## 没有图像?没问题
`input_path` 在 `glitch_image` 和 `glitch_preset` 上是可选的。当省略时,服务器会生成一个源画布 — 一个带有中心黑点的种子色调渐变 — 并对其进行故障处理。这允许代理完全从零创建艺术品或头像:
```json
{ "preset": "corrupted", "seed": 7 }
```
使用 `source` 选项控制画布:
```json
{
"preset": "vhs",
"seed": 21,
"source": { "temperature": "warm", "width": 1024, "height": 1024 }
}
```
- `temperature`: `cool`(海军蓝/青绿/紫色)、`warm`(红褐色/珊瑚色/琥珀色)或 `mono`
- `colors`: 自定义十六进制渐变停止,覆盖温度
- `seed`: 改变渐变方向、色调选择和点大小 — 相同的种子,相同的画布,永远
- `dot` / `dotColor`: 切换或重新着色中心点
## 特效
- **像素排序** — 基于阈值,水平/垂直,按亮度/色调/通道排序
- **抖动** — 弗洛伊德-斯坦伯格、阿特金森、伯克斯、拜耳 8×8;自定义十六进制调色板;线性光中的伽马校正误差扩散(默认开启);`pixelSize` 用于块状输出
- **RGB 移位** — 色差,独立的红色/蓝色偏移
- **扫描线** — 带有间距/厚度/强度的 CRT 线
- **切片移位** — 带有环绕的种子水平带位移
- **数据弯曲** — alpha 安全字节偏移腐蚀扩散
- **噪声** — 单色或 RGB 颗粒,种子
- **海报化**、**渐晕**、**反转**
每个随机化特效都需要一个 `seed`,因此代理可以重新生成完全相同的故障 — 或扫描种子以获取变体。
## 示例调用
```json
{
"input_path": "/path/to/frame.png",
"effects": [
{ "name": "posterize", "params": { "levels": 5 } },
{ "name": "pixel_sort", "params": { "direction": "vertical", "lowThreshold": 50 } },
{ "name": "rgb_shift", "params": { "redX": 4, "blueX": -4 } },
{ "name": "noise", "params": { "amount": 18, "seed": 42 } }
]
}
```
顺序很重要 — 链从上到下运行,与 GlitchKitchen 中的堆叠相同。
## 扩展
在 `src/effects/engine.js` 中添加一个特效:编写一个函数来改变原始 RGBA 缓冲区,在 `EFFECTS` 中注册它,可选地在 `PRESETS` 中添加一个链。服务器会自动获取它 — 工具枚举是从注册表中生成的。
## 远程/托管模式(适用于 OKX.AI 等市场)
`src/remote.js` 通过 MCP Streamable HTTP 传输提供相同的引擎 — 形状市场和托管代理平台所期望的。
```bash
PORT=3333 npm run start:remote
# → POST /mcp (MCP Streamable HTTP, 无状态)
# → GET /healthz
```
与本地服务器的区别,由设计决定:
- **有效载荷,而不是路径。** 工具接受 `image_base64` 或 `image_url`(或两者都不,用于生成的画布),并以 MCP 图像内容块的形式返回结果。文件系统永远不会被暴露。
- **严格验证。** 每个特效参数都经过模式检查,范围严格;未知参数会被拒绝。链最多 12 步。
- **资源上限。** 输入会被调整以适应 `GK_MAX_DIM`(默认 2048),并限制在 `GK_MAX_INPUT_BYTES`(默认 15 MB)。URL 获取超时时间为 10 秒。
- **输出大小保证。** 结果始终适应 `GK_MAX_OUTPUT_BYTES`(默认 1 MB),通过升级梯队:PNG → 调色板 PNG → WebP → 缩放。返回的元数据报告最终格式、尺寸和字节数。
- **无状态。** 每个请求都有一个新的服务器/传输 — 安全地位于负载均衡器后面,无需会话存储。
- **支付网关存根。** 设置 `GK_API_KEY` 以要求 `x-api-key` 头(否则返回 402)。`paymentGuard` 中间件在 `src/remote.js` 中是一个标记槽,OKX Payment SDK 的每次调用计量都会插入其中。
在任何 Node 18+ 运行的平台上部署(VPS、Fly、Railway、Render)。在公开上市前,请在其前面添加 TLS。
## 许可证
MIT