Skip to main content
Glama

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 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 설정 경로를 결정합니다:

  1. --bling <path> CLI 인수 (최우선)

  2. BLING_PATH 환경 변수

  3. 서버 작업 디렉토리의 ./bling.json (기본값)


bling.json — 봇의 ID 파일

세 가지 필드가 필수입니다: name, personality(tone, formality, humor 포함), theme(#RRGGBB 16진수 문자열로 된 primary_coloraccent_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

도구 참조

도구

읽기/쓰기

멱등성

설명

get_identity

읽기 (디스크)

설정된 bling.json ID를 반환

get_theme_for_platform

읽기 (디스크)

플랫폼별 스타일링. 인수: platform ∈ {terminal, web, slack, discord, ide}

roll_identity

메모리 내 변경

아니오

희귀도 점수가 포함된 무작위 WOW 캐릭터 생성

save_last_roll

쓰기 (디스크)

아니오

가장 최근 롤링을 bling.json에 저장 (먼저 <path>.bak 생성)

get_rarity_report

읽기 (메모리)

가장 최근 롤링에 대한 공유 카드 텍스트 반환

모든 도구는 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

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - A tier

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