Discord Decision MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Discord Decision MCP Ask on Discord whether to proceed with the database migration or cancel."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Discord Decision MCP
Claude Code가 tmux Teammate 모드로 자율 작업 중, 사용자 결정이 필요한 시점에 Discord를 통해 질문하고 응답을 받아 작업을 재개하는 MCP 서버입니다.
특징
프로젝트당 Bot 1개: 각 프로젝트는 독립된 Discord Bot 사용
무한 대기 기본값: Timeout 없이 사용자 응답 대기 (Claude가 독단 진행 금지)
상태 영속화: 프로세스 재시작 후에도 대기 상태 복원
한국어 친화적: 한글 선택지, Yes/No 응답 지원
Related MCP server: MCP Discord Agent Communication
설치
방법 1: uvx로 실행 (권장)
uv가 설치되어 있으면 별도 설치 없이 바로 실행할 수 있습니다.
# GitHub에서 직접 실행
uvx --from git+https://github.com/yarang/discord-decision-mcp discord-mcp
# 또는 PyPI 설치 후
uvx discord-decision-mcp방법 2: 로컬 개발용 설치
# 저장소 클론
git clone https://github.com/yarang/discord-decision-mcp
cd discord-decision-mcp
# 의존성 설치 및 가상환경 생성
uv sync
# 실행
uv run discord-mcpuv 설치
uv가 없다면:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# 또는 Homebrew
brew install uv설정
1. Discord Bot 생성
"New Application" 클릭하여 앱 생성
"Bot" 탭에서 봇 생성 및 Token 복사
"OAuth2 > URL Generator"에서 봇 초대 링크 생성
Scopes:
botPermissions:
Send Messages,Create Public Threads,Send Messages in Threads,Read Message History
2. 환경변수 설정
cp .env.example .env.env 파일 수정:
DISCORD_BOT_TOKEN=Bot YOUR_BOT_TOKEN
DISCORD_CHANNEL_ID=123456789012345678
PROJECT_NAME=my-project3. Claude Code MCP 설정
프로젝트 루트에 .mcp.json 생성:
uvx 사용 (PyPI 배포 후)
{
"$schema": "https://github.com/anthropics/claude-code/raw/main/schema/mcp.json",
"mcpServers": {
"discord-decision": {
"command": "uvx",
"args": ["discord-decision-mcp"],
"env": {
"DISCORD_BOT_TOKEN": "Bot YOUR_BOT_TOKEN",
"DISCORD_CHANNEL_ID": "123456789012345678",
"PROJECT_NAME": "my-project"
}
}
}
}GitHub 직접 사용
{
"$schema": "https://github.com/anthropics/claude-code/raw/main/schema/mcp.json",
"mcpServers": {
"discord-decision": {
"command": "uvx",
"args": ["--from", "git+https://github.com/yarang/discord-decision-mcp", "discord-mcp"],
"env": {
"DISCORD_BOT_TOKEN": "Bot YOUR_BOT_TOKEN",
"DISCORD_CHANNEL_ID": "123456789012345678",
"PROJECT_NAME": "my-project"
}
}
}
}로컬 개발용
{
"$schema": "https://github.com/anthropics/claude-code/raw/main/schema/mcp.json",
"mcpServers": {
"discord-decision": {
"command": "uv",
"args": ["run", "--directory", "/path/to/discord-decision-mcp", "discord-mcp"],
"env": {
"DISCORD_BOT_TOKEN": "Bot YOUR_BOT_TOKEN",
"DISCORD_CHANNEL_ID": "123456789012345678",
"PROJECT_NAME": "my-project"
}
}
}
}참고: enableAllProjectMcpServers: true 설정이 ~/.claude/settings.json에 있으면 .mcp.json의 서버들이 자동으로 로드됩니다.
MCP Tools
discord_ask_decision (블로킹)
사용자 결정이 필요할 때 Discord Thread에 질문 전송 후 응답 대기.
result = discord_ask_decision(
question="DB 마이그레이션을 실행할까요?",
context="v1→v2 스키마 변경. ⚠️ 되돌리기 어려움",
options=["A) 지금 실행", "B) 스테이징 먼저", "C) 보류"]
)
# result.answer → "A) 지금 실행"discord_notify (논블로킹)
진행 상황 알림.
discord_notify(
message="테스트 실행 중...",
level="info" # info/warning/success/error
)discord_report_progress
작업 완료 리포트.
discord_report_progress(
title="배포 완료",
summary="v2.0.0 배포 성공",
details=["✅ 테스트 통과", "✅ DB 마이그레이션 완료"]
)discord_check_pending
세션 시작 시 미해결 질문 확인.
result = discord_check_pending()
# result.has_pending → True/False
# result.pending_questions → [...]discord_read_inbox / discord_clear_inbox
Discord 감시 데몬이 수집한 메시지 확인 및 삭제.
result = discord_read_inbox(unread_only=True, mark_read=False)
discord_clear_inbox(read_only=True)감시 데몬 (Discord Watcher)
Claude Code 세션과 무관하게 Discord 채널을 감시하는 별도 프로세스입니다.
# tmux 세션에서 시작
./scripts/start-discord-watch.sh
# 또는 직접 실행
uv run discord-watch --interval 10
# 상태 확인
tmux attach -t discord-watch
# 중지
tmux kill-session -t discord-watch개발
# 테스트 실행
uv run pytest tests/ -v
# 타입 체크
uv run pyright discord_mcp/
# 포맷팅
uv run ruff format discord_mcp/
# 린트
uv run ruff check discord_mcp/배포
PyPI 배포
# 빌드
uv build
# TestPyPI 업로드 (테스트)
uv publish --index testpypi
# PyPI 업로드
uv publishGitHub 배포
git tag v1.0.0
git push origin v1.0.0라이선스
MIT
Available Tools
8 toolsdiscord_ask_decisionA
사용자의 결정이 필요할 때 Discord Thread에 질문을 전송하고 응답이 올 때까지 블로킹 대기한다.
timeout_seconds=None: 무한 대기 (기본값, 권장)
options=[] : 자유 텍스트 응답
options=[...]: 선택지 제시 (A/B/C 형식 권장)
Returns: { "success": bool, "answer": str | None, "selected_option": str | None, "question_id": str, "timed_out": bool, "aborted": bool, }
Inputs: question (required), context (required), options, timeout_seconds, +1 more. Returns: object
discord_check_pendingA
세션 시작 시 미해결 pending 질문이 있는지 확인한다. pending이 있으면 반드시 처리 후 새 작업을 시작해야 한다.
Returns: { "has_pending": bool, "pending_questions": list of { question_id, question, thread_id, asked_at, status } }
Inputs: no named parameters. Returns: object
discord_clear_inboxC
Discord inbox에서 메시지를 삭제한다.
Args: read_only: true면 읽은 메시지만 삭제
Returns: {"success": true, "deleted_count": 5}
Inputs: read_only. Returns: object
discord_delete_messageA
Discord에서 메시지를 삭제한다.
⚠️ 주의: 삭제된 메시지는 복구할 수 없습니다.
Inputs: channel_id (required), message_id (required). Returns: object
discord_delete_messagesA
Discord에서 여러 메시지를 일괄 삭제한다.
⚠️ 주의: 삭제된 메시지는 복구할 수 없습니다.
Inputs: channel_id (required), message_ids (required). Returns: object
discord_notifyA
진행 상황을 Discord에 알린다 (논블로킹). 결정이 필요 없는 상태 업데이트, 경고, 완료 알림에 사용한다.
Inputs: message (required), level, thread_id. Returns: object
discord_read_inboxA
Discord inbox에 저장된 메시지를 조회한다.
감시 데몬(discord-watch)이 수집한 Discord 메시지를 조회합니다. Claude Code는 이 Tool을 호출하여 사용자가 Discord에서 보낸 메시지를 확인할 수 있습니다.
Returns: { "success": true, "messages": [ { "message_id": "1234567890", "channel_id": "1234567890", "thread_id": null, "author": "username", "author_id": "1234567890", "content": "메시지 내용", "timestamp": "2024-01-01T00:00:00Z", "read": false } ], "count": 1, "unread_count": 1 }
Inputs: unread_only, mark_read. Returns: object
discord_report_progressA
작업 완료 또는 단계 완료 시 결과를 Discord에 리포트한다. 결정 질문 없이 진행 상황만 공유할 때 사용한다.
Inputs: title (required), summary (required), details, thread_id. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Most tools have distinct purposes, but discord_notify and discord_report_progress could be confused as both handle non-blocking notifications. The others clearly target different actions like asking decisions, checking pending items, reading/deleting messages, and clearing inboxes.
All tools follow a consistent discord_verb_noun naming pattern with snake_case throughout. The naming is predictable and readable, making it easy to understand each tool's function at a glance.
With 8 tools, this server is well-scoped for Discord interaction and decision management. Each tool serves a specific purpose in the workflow, from asking decisions to managing messages and notifications, without feeling bloated or sparse.
The toolset covers core Discord interaction needs well, including decision-making, message management, and notifications. A minor gap exists in message creation/sending tools, but the described domain focuses more on receiving and managing user input, which is adequately covered.
Related MCP Connectors
Let your AI agents ask you for decisions and get your answers back, from your phone or the web.
Give any AI agent a way to ask a person — for approval, a decision, an answer or a review.
Human approvals, notifications, inbound webhooks, wake-ups for headless agents. Free trial: /try
Reach your own phone from an AI agent: notifications, approval questions, reminders, ring, files.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to send messages to human users via chat platforms (currently Discord) and optionally wait for human responses, facilitating human-in-the-loop interactions.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to send notifications and request user input via Discord during long-running tasks. It allows users to remotely interact with their AI assistants and provide feedback through the Discord messaging platform.26 npm2MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Discord by sending notifications, creating channels, and managing interactive questions with support for two-way responses. It allows for streamlined communication through channel keys and supports various question types like multiple-choice and extended-answer modals.-
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to send a distress call to a Discord channel and wait for human input, capturing replies or reactions to resume work.-