Skip to main content
Glama
VanessaLops

anime-connect-mcp-bot

by VanessaLops

anime-connect-mcp-bot

MCP server that monitors the Anime Connect app chat and exposes the data (messages, alerts) as tools for an AI assistant (Claude) to query.

Layers

  • src/ingestion — captures messages from the chat source. FirebaseChatSource reads groups with has_bot: true from the Realtime Database; MockChatSource is only for dev/test.

  • src/domain — entities (ChatMessage, Alert), pure rules (keyword detection) and botSettings.ts (per-group customization, see below).

  • src/actuation — writes back to the chat (FirebaseActuator) or only logs (DryRunActuator).

  • src/agent — chat commands (!ping, !help, !ban) and permissions by role.

  • src/storage — SQLite persistence (MessageRepository).

  • src/mcp — MCP server with the tools get_recent_messages, search_messages, get_recent_alerts.

  • src/config — environment variables (DB_PATH, POLL_INTERVAL_MS, DRY_RUN).

Related MCP server: mcp-server-agent-comm

Per-group customization (bot_settings)

Each group's owner edits the bot from the Anime Connect app itself (bot configuration screen), which writes to groups/{id}/bot_settings in the Realtime Database:

  • Identity: name and avatar_color — the bot user for that group is created/updated with these values (FirebaseActuator; the bot_group_id field links the user to the group).

  • Actual activation: active — while false, the bot only logs what it would do in that group, even with DRY_RUN=false in .env (which remains the overall circuit breaker for the process).

  • Commands: commands.ping/help/ban.enabled turns each one on/off; commands.ping.message is the custom !ping response.

  • Moderation: keyword_alerts and badwords, comma-separated strings, replace the global KEYWORD_ALERTS/BADWORDS from .env for that group.

A group without saved bot_settings uses the defaults from src/domain/botSettings.ts (DEFAULT_BOT_SETTINGS), with active: false for safety.

Run

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

Next step

Replace MockChatSource with a real implementation that talks to the Anime Connect app (REST API, webhook, or direct database read, depending on how the app's chat is exposed).

Related MCP Connectors

Related MCP Servers