Skip to main content
Glama

Bling Bag — ボットのアイデンティティと視覚スタイルのためのMCPサーバー

1つのアイデンティティ、多様なインターフェース。AIエージェントに名前、性格、外見、そして一風変わったオフィスワーカーとしての背景を与え、Claude Code、Claude Desktop、IDEプラグイン、ターミナル、Webアプリ、Slack、Discord全体で一貫して提示できるようにします。

ステータス: MVP稼働中。5つのMCPツール、13の特性プール(465の重み付けエントリ)、完全なレアリティエンジンを搭載。94/94のテストを通過済み。


このMCPがエージェントに提供するもの

2つのグループに分かれた5つのツール:

アイデンティティとスタイリング(設定済みのボットを読み取る)

  • get_identity — ボットの完全なアイデンティティ(名前、性格、外見、テーマカラー)を返します

  • get_theme_for_platform — プラットフォーム用にフォーマットされたスタイル(ANSIコード、CSS変数、Slack/Discord埋め込みカラーなど)を返します

WOW — Weird Office Workers(ランダムアイデンティティ生成)

  • 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設定パスを解決します:

  1. --bling <path> CLI引数(最優先)

  2. BLING_PATH 環境変数

  3. サーバーの作業ディレクトリ内の ./bling.json(デフォルト)


bling.json — ボットのアイデンティティファイル

namepersonalitytoneformalityhumorを含む)、themeprimary_coloraccent_color#RRGGBB の16進数文字列で指定)の3つのフィールドが必須です。

最小構成例

{
  "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

ツールリファレンス

ツール

読み取り/書き込み

冪等性

説明

get_identity

読み取り (ディスク)

はい

設定された bling.json アイデンティティを返す

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つのレアリティ帯 — Common (50%), Uncommon (30%), Rare (15%), Legendary (4%), Mythic (1%)

  • レアリティスコアから算出される5つのキャラクター階層:

    • Filing Clerk (抽選の50%)

    • Team Lead (30%)

    • Middle Manager (14%)

    • C-Suite (5%)

    • HR Warned Us About (1%)

  • Named Subjects — 手書きの1点物キャラクターが約0.5%の確率で出現し、常に「HR Warned Us About」に分類されます

  • HOMUNCULUSフレーム — すべての抽選結果は、被験者ID、コホート(曜日)、階層、取り込み日、フラグ(例: Do Not Contact)を含む機密文書形式の共有カードでラップされます

分布は実証的にテストされています: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/ 配下にある2つの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