Skip to main content
Glama
VanessaLops

anime-connect-mcp-bot

by VanessaLops

anime-connect-mcp-bot

Anime Connect アプリのチャットを監視し、データ(メッセージ、アラート)をAIアシスタント(Claude)が参照できるツールとして公開するMCPサーバー。

レイヤー

  • src/ingestion — チャットソースからメッセージを取得する。FirebaseChatSource は Realtime Database の has_bot: true のグループを読み取る。MockChatSource は開発/テスト専用。

  • src/domain — エンティティ(ChatMessage、Alert)、純粋なルール(キーワード検出)、botSettings.ts(グループごとのカスタマイズ、下記参照)。

  • src/actuation — チャットへの書き戻し(FirebaseActuator)またはログ出力のみ(DryRunActuator)。

  • src/agent — チャットコマンド(!ping、!help、!ban)と役職ベースの権限。

  • src/storage — SQLite への永続化(MessageRepository)。

  • src/mcp — ツール get_recent_messages、search_messages、get_recent_alerts を備えたMCPサーバー。

  • src/config — 環境変数(DB_PATH、POLL_INTERVAL_MS、DRY_RUN)。

Related MCP server: mcp-server-agent-comm

グループごとのカスタマイズ(bot_settings)

各グループのオーナーは Anime Connect アプリ自体(ボット設定画面)でボットを編集し、それが Realtime Database の groups/{id}/bot_settings に書き込まれます。

  • アイデンティティ: name と avatar_color — そのグループのボットユーザーはこれらの値で作成/更新される(FirebaseActuator、bot_group_id フィールドがユーザーをグループに結び付ける)。

  • 実際の有効化: active — false の間、ボットはそのグループで実行する予定のアクションをログに記録するだけ。.env で DRY_RUN=false でも同様(このフラグはプロセス全体のサーキットブレーカーとして引き続き機能)。

  • コマンド: commands.ping/help/ban.enabled で各コマンドをオン/オフ。commands.ping.message は !ping のカスタム応答。

  • モデレーション: keyword_alerts と badwords はカンマ区切り文字列で、そのグループでは .env のグローバルな KEYWORD_ALERTS / BADWORDS を置き換える。

グループに bot_settings が保存されていない場合は src/domain/botSettings.ts のデフォルト(DEFAULT_BOT_SETTINGS)を使用し、安全のため active: false になる。

実行

npm install
npm run dev     # modo desenvolvimento (tsx watch)
npm run build && npm start   # build + produção

次のステップ

MockChatSource を、Anime Connect アプリと通信する実際の実装に置き換える(アプリのチャットがどう公開されるかに応じて、REST API、webhook、データベースの直接読み取りなど)。

Related MCP Connectors

Related MCP Servers