Discord Gateway MCP 아키텍처 설계


title: “Discord Gateway MCP 아키텍처 설계” date: 2026-03-01 categories: [“Development”, “Architecture”] tags: [“discord”, “mcp”, “fastapi”, “claude-code”]

Discord Gateway MCP 아키텍처 설계

Claude Code 팀에서 Discord를 통한 사용자 소통을 위해 Discord Gateway Service를 설계했다. 이 글에서는 주요 아키텍처 결정 사항을 정리한다.


1. 전체 아키텍처

구성 요소

계층구성요소역할
DiscordBot, Channel, Thread사용자 인터페이스
GatewayWebSocket, REST API, SSE메시지 라우팅
MCPgcp-mcp, oci-mcp, db-mcp도구 실행

메시지 흐름


2. Redis 없이 동작하는 가벼운 아키텍처

왜 Redis를 제거했나?

항목Redis 사용In-Memory 사용
Thread LockRedis SET NXPython dict
이벤트 분배Redis StreamsSSE 직접
상태 저장Redis Cache메모리 캐시

결론: 단일 인스턴스 환경에서는 In-Memory로 충분

Gateway 구조

구성요소 상세

모듈역할특징
Discord BotWebSocket 연결자동 재연결
Thread Lock동시성 제어5분 타임아웃
Message Cache메시지 보관최대 1000개
SSE Manager실시간 전송모든 MCP에 브로드캐스트

3. MCP 선택 방식: 4단계 하이브리드

선택 우선순위

순위방식예시설명
1️⃣슬래시 커맨드/gcp status가장 명시적
2️⃣@멘션@gcp-monitor status자연스러운 대화
3️⃣키워드 감지gcp 서버 상태키워드 자동 인식
4️⃣채널별 지정#gcp-모니터링채널 기본 MCP

Fallback 동작 순서

슬래시 커맨드 목록

커맨드MCP설명
/gcp status [server]gcp-mcpGCP 서버 상태
/gcp listgcp-mcpGCP 인스턴스 목록
/oci status [server]oci-mcpOCI 서버 상태
/oci listoci-mcpOCI 인스턴스 목록
/db query <sql>db-mcpDB 쿼리 실행
/db listdb-mcpDB 목록
/alert checkalert-mcp알림 확인

4. Thread Lock 규칙

락 동작 방식

Lock API

MethodEndpoint설명
POST/api/threads/{id}/acquire락 획득
POST/api/threads/{id}/release락 해제
GET/api/threads/{id}/lock락 상태 확인

5. MCP 도구 (8개)

도구 목록

도구설명주요 파라미터
discord_send_message메시지 전송channel_id, content
discord_get_messages메시지 조회channel_id, limit
discord_wait_for_message메시지 대기channel_id, timeout
discord_create_thread스레드 생성channel_id, message_id
discord_list_threads스레드 목록channel_id
discord_archive_thread스레드 아카이브thread_id
discord_acquire_thread락 획득thread_id, agent_name
discord_release_thread락 해제thread_id, agent_name

도구 관계도


6. 파일 구조

디렉토리 설명

경로설명
gateway/Gateway Service (FastAPI)
discord_mcp/MCP Server (8개 도구)
mcp_shared/공유 MCP 도구
docs/문서

7. 실행 방법

로컬 실행

# Gateway Service 시작
uvicorn gateway.main:app --host 0.0.0.0 --port 8081

# 헬스체크
curl http://localhost:8081/health

# 응답
{"status": "healthy", "discord_connected": true}

Claude Code MCP 설정

// ~/.claude/settings.json
{
  "mcpServers": {
    "discord-gateway": {
      "command": "python3",
      "args": ["/path/to/discord_mcp/server.py"],
      "env": {
        "GATEWAY_URL": "http://localhost:8081"
      }
    }
  }
}

8. 로드맵

Phase 1: 완료

  • FastAPI Gateway Service
  • Discord WebSocket 연결
  • Thread Lock (In-Memory)
  • SSE 브로드캐스트
  • MCP Server (8개 도구)

Phase 2: 진행 예정

  • 슬래시 커맨드 구현
  • 채널별 기본 MCP 설정
  • 키워드 자동 감지
  • 라우팅 설정 파일

Phase 3: 선택 사항

  • API 인증 (API Key)
  • Rate Limiting
  • 메시지 영속성 (SQLite)

결론

가벼운 아키텍처로 시작해서 필요시 확장하는 전략을 선택했다.

항목현재향후
상태 저장In-MemorySQLite (필요시)
분산 락미사용Redis (다중 인스턴스 시)
인증없음API Key (필요시)

단일 인스턴스에서는 현재 구조로 충분하며, 트래픽이 늘어나면 점진적으로 확장할 계획이다.


영어 버전: English Version

Hugo로 만듦
JimmyStack 테마 사용 중