Bling-bag
Bling Bag — 用于机器人身份与视觉样式的 MCP 服务器
一个身份,多种呈现方式。为你的 AI 智能体赋予一个名字、个性、外观以及古怪的办公室员工背景故事,使其能够在 Claude Code、Claude Desktop、IDE 插件、终端、Web 应用、Slack 和 Discord 中保持一致的呈现。
状态: 可用的 MVP 版本。5 个 MCP 工具,13 个特征池(465 个加权条目),完整的稀有度引擎。94/94 个测试通过。
此 MCP 为智能体提供了什么
五个工具,分为两部分:
身份与样式(读取你配置的机器人)
get_identity— 返回机器人的完整身份(名字、个性、外观、主题颜色)get_theme_for_platform— 返回平台格式化的样式(ANSI 代码、CSS 变量、Slack/Discord 嵌入颜色等)
WOW — 怪异办公室员工(随机身份生成器)
roll_identity— 随机生成一个新的办公室员工角色(从加权池中抽取 13 个特征之一,根据稀有度评分,并封装在适合截图的分享卡片中)get_rarity_report— 返回最近一次生成的分享卡片(页眉 + 段落 + 页脚)save_last_roll— 将最近一次生成的角色保存为机器人的永久身份(bling.json),并自动备份任何现有配置
安装
前置要求
Node.js 20 或更高版本
支持 MCP 的客户端(Claude Code、Claude Desktop、Codex、Cursor 等)
添加包
npm install bling-bag或者无需安装即可按需运行——MCP 客户端可以通过 npx bling-bag 直接启动它(参见下方的客户端配置)。
用于开发(修改源码)
git clone https://github.com/tjclaude88/mcp-bling.git
cd mcp-bling
npm install
npm run build在 dist/index.js 生成一个可运行的服务器。
将其接入你的 MCP 客户端
该服务器使用 stdio 传输——客户端将其作为子进程启动,而不是通过网络端口。
Claude Code
添加到你的 Claude Code MCP 配置中(位置因版本而异):
{
"mcpServers": {
"bling": {
"command": "npx",
"args": ["-y", "bling-bag"],
"env": {
"BLING_PATH": "/absolute/path/to/your/bling.json"
}
}
}
}npx -y bling-bag 会下载并运行最新版本,无需单独的安装步骤。
Claude Desktop
同样的格式,在 claude_desktop_config.json 中:
{
"mcpServers": {
"bling": {
"command": "npx",
"args": ["-y", "bling-bag"],
"env": {
"BLING_PATH": "/absolute/path/to/your/bling.json"
}
}
}
}固定版本(生产环境推荐)
为了避免自动获取未来的发布版本,请固定特定版本:
"args": ["-y", "bling-bag@0.1.0"]开发模式调用(从本地克隆)
如果你已经克隆了仓库并想直接从 dist/ 运行,请使用:
"command": "node",
"args": ["/absolute/path/to/mcp-bling/dist/index.js"]如果未设置 BLING_PATH,服务器会在其工作目录中查找 ./bling.json。
配置解析顺序
服务器按以下顺序解析 bling 配置路径:
--bling <path>CLI 参数(最高优先级)BLING_PATH环境变量服务器工作目录中的
./bling.json(默认)
bling.json — 机器人的身份文件
需要三个字段:name、personality(包含 tone、formality、humor)以及 theme(包含 primary_color 和 accent_color,作为 #RRGGBB 十六进制字符串)。
最小示例
{
"name": "Pixel",
"personality": {
"tone": "warm",
"formality": "casual",
"humor": "playful"
},
"theme": {
"primary_color": "#3A7BD5",
"accent_color": "#FFD166"
}
}完整示例(包含所有可选部分)
{
"name": "Brenda from Accounts",
"personality": {
"tone": "polite",
"formality": "professional",
"humor": "dry",
"catchphrase": "Per my last email"
},
"physical": {
"species": "human",
"height": "permanently mid-sigh",
"accessory": "a lanyard with 14 badges of varying importance",
"expression": "polite disappointment",
"material": "a cardigan, at least one"
},
"office": {
"job_title": "ASCII Comptroller",
"desk_setup": "a coffee mug labelled WORLD'S OKAYEST DBA",
"habit": "microwaves fish despite three separate HR warnings",
"coffee_ritual": "black coffee, no nonsense",
"meeting_energy": "always 4 minutes late, always with a reason",
"passive_aggressive": "Per my last email"
},
"theme": {
"primary_color": "#9C6B3A",
"accent_color": "#D9D9D9"
},
"homunculus": {
"subject_id": "0147",
"cohort": "Tuesday",
"classification": "Middle Manager",
"ingested": "2025-07-14",
"flag": "flagged for review"
}
}验证规则
name— 非空字符串personality.tone,personality.formality,personality.humor— 非空字符串theme.primary_color,theme.accent_color— 必须匹配^#[0-9A-Fa-f]{6}$(无简写#RGB,无缺失#)
验证错误将以 isError: true 返回,并带有结构化的 { error: "..." } 主体,指出缺失或格式错误的字段——智能体可以自我修正。
典型的智能体流程
流程 A — 采用已配置的身份
1. Call get_identity → receive name, personality, appearance, theme
2. Call get_theme_for_platform with platform="terminal" (or web/slack/discord/ide)
3. Use the returned styling in agent output (ANSI codes for headings, etc.)流程 B — 生成全新的随机身份
1. Call roll_identity → receive identity + rarity + framed share card
2. (Optional) Call get_rarity_report → receive just the framed share card again
3. Call save_last_roll → persists the rolled identity to bling.json (with .bak backup of any prior config)
4. Future calls to get_identity now return the rolled identity工具参考
工具 | 读/写 | 幂等性 | 描述 |
| 读取(磁盘) | 是 | 返回已配置的 bling.json 身份 |
| 读取(磁盘) | 是 | 平台格式化样式。参数: |
| 改变内存缓存 | 否 | 生成带有稀有度评分的随机 WOW 角色 |
| 写入(磁盘) | 否 | 将最近一次生成的结果持久化到 bling.json(先创建 |
| 读取(内存) | 是 | 返回最近一次生成结果的分享卡片文本 |
所有工具均返回 content[].text(JSON 字符串化)和 structuredContent(解析后的对象)。错误将以 isError: true 和 { error: string } 主体返回。
WOW(怪异办公室员工)—— 有趣之处
随机生成系统专为可收藏性而构建:
13 个加权池,465 个条目 — 姓名、职位、习惯、咖啡仪式、身高、配饰等。
每个池 5 个稀有度等级 — 普通 (50%)、罕见 (30%)、稀有 (15%)、传说 (4%)、神话 (1%)
5 个角色层级,根据稀有度评分计算:
归档员 (50%)
团队主管 (30%)
中层经理 (14%)
高管 (5%)
人力资源警告对象 (1%)
命名主体 — 手工创作的 1-of-1 角色以约 0.5% 的概率出现,始终被归类为“人力资源警告对象”
HOMUNCULUS 框架 — 每次生成都会将段落包装在带有主体 ID、队列(工作日)、层级、摄入日期和标志(例如 禁止联系)的机密文档分享卡片中。
分布经过经验测试:tests/mystery_box.test.ts 中的 10k 次滚动测试强制执行了相对于规格目标的 ±2pp 容差。
输出示例
HOMUNCULUS CORPUS · Subject 4483 · Cohort: Wednesday
Classification: Middle Manager · Rarity 94.5 · 80th percentile
Personnel record — Colin, Wizard of Light Bulb Moments. Distinguishing
features: a slightly-too-big blazer over a plain tee; a flip phone in
a belt holster; expression: patient disagreement. Notable behaviours:
clips their fingernails at the desk on Wednesday afternoons; a
kombucha SCOBY fermenting next to the keyboard; the kind to ask 'can
we park that?' without parking anything.
— RELATABILITY CORPUS v3.1 · ingested 2024-03-08 · flagged for review开发
npm install # install dependencies
npm run build # compile TypeScript → dist/
npm run dev # build then start the MCP server (stdio)
npm test # run all 94 tests once
npm run test:watch # re-run tests on file changes检查脚本
scripts/ 下的两个 Node ESM 辅助工具允许你在不启动 MCP 服务器的情况下检查 WOW 引擎(这些仅包含在克隆的仓库中——它们不包含在 npm install bling-bag 包中):
node scripts/show-rolls.mjs 8 2026 # print 8 framed share cards (seed=2026)
node scripts/distribution-check.mjs 10000 # tally tiers across 10k rolls vs. spec target项目布局
src/
index.ts # MCP server entry point (stdio transport)
identity.ts # bling.json loader + validator
tools.ts # MCP tool registrations
types.ts # shared TypeScript types
mystery_box.ts # WOW engine barrel + rollIdentity orchestrator
mystery_box/
rng.ts # seedable PRNG, weighted picker
pools.ts # 13 trait pools (465 entries)
scoring.ts # rarity score + tier thresholds
rendering.ts # paragraph templates + HOMUNCULUS frame
named.ts # hand-authored Named Subjects
tests/ # vitest test suites
scripts/ # dev-time inspection tools
docs/superpowers/ # design specs and implementation plans许可证
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tjclaude88/mcp-bling'
If you have feedback or need assistance with the MCP directory API, please join our Discord server