링크된 문서
Discord
Discord
Discord MCP 서버는 봇을 통해 Discord 길드(서버)에 연결하고 채널에서 메시지를 읽고 쓸 수 있는 Model Context Protocol 서버입니다. 이 서버를 통해 AI 어시스턴트는 Discord 커뮤니티와 상호작용하고, 메시지를 모니터링하며, 자동화된 응답을 제공할 수 있습니다.
특징
- Discord 길드 연결 및 관리
- 텍스트 채널 메시지 읽기 및 쓰기
- 음성 채널 상태 모니터링
- 직접 메시지(DM) 처리
- 이모지 반응 관리
- 채널 및 카테고리 관리
- 역할(Role) 및 권한 설정
- 사용자 정보 확인 및 관리
- 멤버 조회 및 상호작용
- 이벤트 생성 및 관리
- 파일 및 미디어 업로드
- 스레드 생성 및 관리
- 위브훅(Webhook) 통합
- Discord API 한도 준수
API
리소스
discord://guilds/{guild_id}
- 특정 길드(서버)의 정보와 채널 목록을 제공합니다.
discord://channels/{channel_id}/messages
- 특정 채널의 메시지 목록을 제공합니다.
discord://users/{user_id}
- 특정 사용자의 정보를 제공합니다.
도구
길드 관리
list_guilds
봇이 접근할 수 있는 모든 길드를 나열합니다. - 입력: 없음 - 출력: 길드 ID, 이름, 소유자, 멤버 수 등을 포함한 길드 목록
get_guild
특정 길드의 정보를 가져옵니다. - 입력: - guild_id: 길드 ID - 출력: 길드 상세 정보
채널 관리
list_channels
길드 내의 모든 채널을 나열합니다. - 입력: - guild_id: 길드 ID - 출력: 채널 ID, 이름, 유형, 주제 등을 포함한 채널 목록
get_channel
특정 채널의 정보를 가져옵니다. - 입력: - channel_id: 채널 ID - 출력: 채널 상세 정보
create_channel
새 채널을 생성합니다. - 입력: - guild_id: 길드 ID - name: 채널 이름 - type: 채널 유형(text, voice, category 등) - topic: (선택적) 채널 주제 - position: (선택적) 채널 위치 - parent_id: (선택적) 부모 카테고리 ID - nsfw: (선택적) NSFW 채널 여부 - permission_overwrites: (선택적) 권한 재정의 설정 - 출력: 생성된 채널 정보
메시지 관리
list_messages
채널의 메시지를 나열합니다. - 입력: - channel_id: 채널 ID - limit: (선택적) 가져올 최대 메시지 수 - before: (선택적) 특정 메시지 ID 이전의 메시지만 가져오기 - after: (선택적) 특정 메시지 ID 이후의 메시지만 가져오기 - around: (선택적) 특정 메시지 ID 주변의 메시지 가져오기 - 출력: 메시지 목록
get_message
특정 메시지의 정보를 가져옵니다. - 입력: - channel_id: 채널 ID - message_id: 메시지 ID - 출력: 메시지 상세 정보
send_message
채널에 메시지를 보냅니다. - 입력: - channel_id: 채널 ID - content: 메시지 내용 - tts: (선택적) TTS(Text-to-Speech) 사용 여부 - embeds: (선택적) 임베드 객체 배열 - files: (선택적) 첨부 파일 - allowed_mentions: (선택적) 허용된 멘션 설정 - message_reference: (선택적) 답장을 위한 메시지 참조 - 출력: 전송된 메시지 정보
edit_message
기존 메시지를 편집합니다. - 입력: - channel_id: 채널 ID - message_id: 메시지 ID - content: (선택적) 새 메시지 내용 - embeds: (선택적) 새 임베드 객체 배열 - allowed_mentions: (선택적) 새 허용된 멘션 설정 - 출력: 편집된 메시지 정보
delete_message
메시지를 삭제합니다. - 입력: - channel_id: 채널 ID - message_id: 메시지 ID - reason: (선택적) 삭제 이유(감사 로그용) - 출력: 삭제 결과
add_reaction
메시지에 이모지 반응을 추가합니다. - 입력: - channel_id: 채널 ID - message_id: 메시지 ID - emoji: 이모지(유니코드 또는 사용자 지정 이모지 ID) - 출력: 반응 추가 결과
remove_reaction
메시지에서 이모지 반응을 제거합니다. - 입력: - channel_id: 채널 ID - message_id: 메시지 ID - emoji: 이모지 - user_id: (선택적) 사용자 ID(생략 시 봇 자신의 반응 제거) - 출력: 반응 제거 결과
사용자 및 멤버 관리
get_user
특정 사용자의 정보를 가져옵니다. - 입력: - user_id: 사용자 ID - 출력: 사용자 상세 정보
list_guild_members
길드의 멤버를 나열합니다. - 입력: - guild_id: 길드 ID - limit: (선택적) 가져올 최대 멤버 수 - after: (선택적) 특정 사용자 ID 이후의 멤버만 가져오기 - 출력: 멤버 목록
get_guild_member
특정 길드 멤버의 정보를 가져옵니다. - 입력: - guild_id: 길드 ID - user_id: 사용자 ID - 출력: 멤버 상세 정보
modify_guild_member
길드 멤버의 설정을 변경합니다. - 입력: - guild_id: 길드 ID - user_id: 사용자 ID - nick: (선택적) 새 닉네임 - roles: (선택적) 새 역할 ID 배열 - mute: (선택적) 음소거 여부 - deaf: (선택적) 오디오 비활성화 여부 - channel_id: (선택적) 이동할 음성 채널 ID - reason: (선택적) 변경 이유(감사 로그용) - 출력: 변경된 멤버 정보
역할 관리
list_guild_roles
길드의 역할을 나열합니다. - 입력: - guild_id: 길드 ID - 출력: 역할 목록
create_guild_role
새 역할을 생성합니다. - 입력: - guild_id: 길드 ID - name: 역할 이름 - permissions: (선택적) 권한 비트필드 - color: (선택적) RGB 색상 정수 - hoist: (선택적) 멤버 목록에서 별도로 표시할지 여부 - mentionable: (선택적) 멘션 가능 여부 - reason: (선택적) 생성 이유(감사 로그용) - 출력: 생성된 역할 정보
modify_guild_role
역할을 수정합니다. - 입력: - guild_id: 길드 ID - role_id: 역할 ID - name: (선택적) 새 역할 이름 - permissions: (선택적) 새 권한 비트필드 - color: (선택적) 새 RGB 색상 정수 - hoist: (선택적) 새 표시 설정 - mentionable: (선택적) 새 멘션 가능 여부 - reason: (선택적) 수정 이유(감사 로그용) - 출력: 수정된 역할 정보
스레드 관리
create_thread
채널에 새 스레드를 생성합니다. - 입력: - channel_id: 채널 ID - name: 스레드 이름 - auto_archive_duration: 자동 보관 시간(분) - message_id: (선택적) 스레드를 시작할 메시지 ID - type: (선택적) 스레드 유형 - invitable: (선택적) 비공개 스레드에 사용자를 초대할 수 있는지 여부 - reason: (선택적) 생성 이유(감사 로그용) - 출력: 생성된 스레드 정보
list_active_threads
길드의 활성 스레드를 나열합니다. - 입력: - guild_id: 길드 ID - 출력: 활성 스레드 목록
사용 방법
설치 및 구성
- 사전 요구 사항:
- Discord 봇 토큰
-
Discord 개발자 포털에서 봇 생성 및 권한 설정
-
MCP 서버 설치:
pip install discord-mcp-server -
봇 초대 링크 생성: Discord 개발자 포털에서 봇 초대 링크를 생성하여 원하는 서버에 봇을 초대합니다.
-
Claude Desktop 구성:
{ "mcpServers": { "discord": { "command": "python", "args": ["-m", "discord_mcp"], "env": { "DISCORD_TOKEN": "your-bot-token", "DISCORD_INTENTS": "guilds,guild_messages,guild_members,message_content", "DISCORD_DEFAULT_GUILD": "your-default-guild-id", "DISCORD_DEFAULT_CHANNEL": "your-default-channel-id" } } } } -
Discord 인텐트 설정: Discord 개발자 포털에서 봇의 인텐트 설정을 구성합니다. 길드 멤버 및 메시지 내용과 같은 특권 인텐트는 별도로 활성화해야 합니다.
-
구성 옵션:
DISCORD_TOKEN: Discord 봇 토큰 (필수)DISCORD_INTENTS: 활성화할 인텐트 목록 (쉼표로 구분)DISCORD_DEFAULT_GUILD: 기본 길드 IDDISCORD_DEFAULT_CHANNEL: 기본 채널 IDDISCORD_COMMAND_PREFIX: 명령어 접두사 (기본값: !)DISCORD_CACHE_TTL: 캐시 수명(초) (기본값: 300)DISCORD_LOG_LEVEL: 로그 수준 (기본값: INFO)DISCORD_MESSAGE_HISTORY_LIMIT: 채널당 캐시할 최대 메시지 수 (기본값: 100)
기본 사용 예시
-
길드 및 채널 확인:
// 봇이 접근할 수 있는 길드 확인 list_guilds() // 길드 내의 채널 확인 list_channels({ guild_id: "123456789012345678" }) -
최근 메시지 확인:
list_messages({ channel_id: "123456789012345678", limit: 10 }) -
메시지 전송:
send_message({ channel_id: "123456789012345678", content: "안녕하세요! 저는 AI 어시스턴트 Claude입니다." }) -
포맷된 메시지 전송:
send_message({ channel_id: "123456789012345678", content: "안녕하세요!", embeds: [ { title: "프로젝트 업데이트", description: "이번 주 업데이트 내용입니다.", color: 0x3498db, // 파란색 fields: [ { name: "새 기능", value: "- 다크 모드 추가\n- 성능 개선\n- 버그 수정" }, { name: "담당자", value: "개발팀" } ], footer: { text: "2025년 5월 14일" } } ] }) -
메시지에 반응 추가:
add_reaction({ channel_id: "123456789012345678", message_id: "987654321098765432", emoji: "👍" // 또는 사용자 지정 이모지: "emoji_name:emoji_id" }) -
스레드 생성 및 메시지 전송:
// 메시지에서 스레드 생성 const thread = create_thread({ channel_id: "123456789012345678", message_id: "987654321098765432", name: "기능 논의", auto_archive_duration: 1440 // 24시간 }); // 스레드에 메시지 전송 send_message({ channel_id: thread.id, content: "이 스레드에서 새 기능에 대해 논의해 봅시다." }) -
사용자 정보 확인:
get_user({ user_id: "123456789012345678" }) -
역할 관리:
// 길드의 역할 목록 확인 list_guild_roles({ guild_id: "123456789012345678" }); // 멤버에게 역할 부여 modify_guild_member({ guild_id: "123456789012345678", user_id: "987654321098765432", roles: ["765432109876543210"] // 역할 ID 배열 })
보안 고려사항
- Discord 봇 토큰은 매우 민감한 정보이므로 안전하게 관리해야 합니다.
- 필요한 최소한의 권한과 인텐트만 활성화하세요.
- 메시지 내용 인텐트는 봇이 메시지 내용을 읽을 수 있게 하는 특권 인텐트입니다. 필요한 경우에만 활성화하세요.
- 봇이 보낼 수 있는 메시지의 내용과 형식에 제한을 두어 남용을 방지하세요.
- Discord API 요청 한도를 초과하지 않도록 주의하세요.
- 환경 변수나 구성 파일에 저장된 토큰을 안전하게 관리하세요.
연결된 구성 요소
- Telegram - Telethon 통합을 통한 페이지별 채팅 읽기, 메시지 검색 및 메시지 전송 기능
- Slack - 봇을 통해 Slack 워크스페이스에 연결하고 채널에서 메시지를 읽고 쓰는 서버
- Google Calendar - 일정 확인, 시간 찾기, 이벤트 추가/삭제를 위한 Google Calendar 통합
- Gmail - Claude Desktop에서 자동 인증 지원이 포함된 Gmail 통합을 위한 MCP 서버