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 앱과 통신하는 실제 구현으로 교체하세요 (API REST, 웹훅, 또는 앱의 채팅이 노출되는 방식에 따라 데이터베이스 직접 읽기).

Related MCP Connectors

Related MCP Servers