Bling-bag
Bling Bag — 봇 ID 및 시각적 스타일링을 위한 MCP 서버
하나의 ID, 다양한 환경. AI 에이전트에게 이름, 성격, 외형, 그리고 Claude Code, Claude Desktop, IDE 플러그인, 터미널, 웹 앱, Slack, Discord 전반에서 일관되게 표현할 수 있는 독특한 사무직 배경 이야기를 부여하세요.
상태: MVP 작동 중. 5개의 MCP 도구, 13개의 특성 풀(465개의 가중치 항목), 전체 희귀도 엔진 포함. 94/94 테스트 통과.
이 MCP가 에이전트에게 제공하는 것
두 그룹으로 나뉜 5개의 도구:
ID 및 스타일링 (설정된 봇 읽기)
get_identity— 봇의 전체 ID(이름, 성격, 외형, 테마 색상)를 반환합니다.get_theme_for_platform— 플랫폼별 형식의 스타일링(ANSI 코드, CSS 변수, Slack/Discord 임베드 색상 등)을 반환합니다.
WOW — Weird Office Workers (무작위 ID 생성기)
roll_identity— 새로운 무작위 사무직 캐릭터를 생성합니다(가중치 풀에서 추출된 13가지 특성 중 하나, 희귀도 점수 산정, 스크린샷용 공유 카드 프레임 포함).get_rarity_report— 가장 최근 롤링에 대한 형식화된 공유 카드(헤더 + 본문 + 푸터)를 반환합니다.save_last_roll— 가장 최근 롤링을 봇의 영구 ID(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 builddist/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 — 봇의 ID 파일
세 가지 필드가 필수입니다: name, personality(tone, formality, humor 포함), theme(#RRGGBB 16진수 문자열로 된 primary_color 및 accent_color 포함).
최소 예시
{
"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 — 설정된 ID 채택
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 — 새로운 무작위 ID 생성
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 ID를 반환 |
| 읽기 (디스크) | 예 | 플랫폼별 스타일링. 인수: |
| 메모리 내 변경 | 아니오 | 희귀도 점수가 포함된 무작위 WOW 캐릭터 생성 |
| 쓰기 (디스크) | 아니오 | 가장 최근 롤링을 bling.json에 저장 (먼저 |
| 읽기 (메모리) | 예 | 가장 최근 롤링에 대한 공유 카드 텍스트 반환 |
모든 도구는 content[].text(JSON 문자열화)와 structuredContent(파싱된 객체)를 모두 반환합니다. 오류 발생 시 isError: true와 { error: string } 본문이 반환됩니다.
WOW (Weird Office Workers) — 흥미로운 점
무작위 롤링 시스템은 수집 가치를 위해 설계되었습니다:
13개의 가중치 풀, 465개 항목 — 이름, 직함, 습관, 커피 취향, 키, 액세서리 등.
풀당 5단계 희귀도 — 일반(50%), 흔치 않음(30%), 희귀(15%), 전설(4%), 신화(1%)
희귀도 점수로 계산된 5단계 캐릭터 등급:
서류 정리원 (50%)
팀장 (30%)
중간 관리자 (14%)
임원 (5%)
인사과 경고 대상 (1%)
지정된 대상 — 직접 작성된 1대1 캐릭터가 약 0.5% 확률로 등장하며, 항상 "인사과 경고 대상"으로 분류됩니다.
HOMUNCULUS 프레임 — 모든 롤링은 대상 ID, 코호트(요일), 등급, 수집 날짜 및 플래그(예: 연락 금지)가 포함된 기밀 문서 공유 카드로 본문을 감쌉니다.
분포는 경험적으로 테스트되었습니다: tests/mystery_box.test.ts의 1만 번 롤링 테스트는 사양 목표 대비 ±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