Vexa
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
제작자가 쓴 설명(영어 원문)
Safe Discord access for reading guild data and optionally managing bot messages
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
DISCORD_TOKEN, DISCORD_ENABLE_WRITES, DISCORD_ENABLE_DELETES, DISCORD_ALLOW_UNRESTRICTED_WRITES, DISCORD_ALLOWED_GUILD_IDS, DISCORD_ALLOWED_CHANNEL_IDS, DISCORD_MAX_RESPONSE_CHARS비밀로 표시된 값은 내 계정의 열쇠예요. 절대 다른 사람과 공유하거나 채팅에 붙여 넣지 마세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"discord": {
"command": "npx",
"args": [
"-y",
"@hypark5540/discord-mcp"
],
"env": {
"DISCORD_TOKEN": "your-value",
"DISCORD_ENABLE_WRITES": "your-value",
"DISCORD_ENABLE_DELETES": "your-value",
"DISCORD_ALLOW_UNRESTRICTED_WRITES": "your-value",
"DISCORD_ALLOWED_GUILD_IDS": "your-value",
"DISCORD_ALLOWED_CHANNEL_IDS": "your-value",
"DISCORD_MAX_RESPONSE_CHARS": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add discord --env DISCORD_TOKEN=your-value --env DISCORD_ENABLE_WRITES=your-value --env DISCORD_ENABLE_DELETES=your-value --env DISCORD_ALLOW_UNRESTRICTED_WRITES=your-value --env DISCORD_ALLOWED_GUILD_IDS=your-value --env DISCORD_ALLOWED_CHANNEL_IDS=your-value --env DISCORD_MAX_RESPONSE_CHARS=your-value -- npx -y @hypark5540/discord-mcp실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"discord": {
"command": "npx",
"args": [
"-y",
"@hypark5540/discord-mcp"
],
"env": {
"DISCORD_TOKEN": "your-value",
"DISCORD_ENABLE_WRITES": "your-value",
"DISCORD_ENABLE_DELETES": "your-value",
"DISCORD_ALLOW_UNRESTRICTED_WRITES": "your-value",
"DISCORD_ALLOWED_GUILD_IDS": "your-value",
"DISCORD_ALLOWED_CHANNEL_IDS": "your-value",
"DISCORD_MAX_RESPONSE_CHARS": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"discord": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hypark5540/discord-mcp"
],
"env": {
"DISCORD_TOKEN": "your-value",
"DISCORD_ENABLE_WRITES": "your-value",
"DISCORD_ENABLE_DELETES": "your-value",
"DISCORD_ALLOW_UNRESTRICTED_WRITES": "your-value",
"DISCORD_ALLOWED_GUILD_IDS": "your-value",
"DISCORD_ALLOWED_CHANNEL_IDS": "your-value",
"DISCORD_MAX_RESPONSE_CHARS": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
DISCORD_ENABLE_WRITES envDISCORD_ENABLE_DELETES envDISCORD_ALLOW_UNRESTRICTED_WRITES envDISCORD_ALLOWED_GUILD_IDS envDISCORD_ALLOWED_CHANNEL_IDS envDISCORD_MAX_RESPONSE_CHARS env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 8일 점검
레지스트리 이름이 GitHub 계정 hypark5540 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
입력해야 할 값: DISCORD_TOKEN
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.1)은 4개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js, Python (uv), Docker도 있어야 해요.
같은 카테고리에는: Vexa, emailmd, MCP WhatsApp Cloud
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.
Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.
MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Discord 서버와 채널을 읽고, 명시적으로 허용한 경우에만 메시지를 보내는 로컬 Model Context Protocol 서버입니다.
stdio 전송Gateway 연결 불필요)TypeScript 구현 하나를 npm, PyPI, OCI 이미지와 Claude Desktop MCPB로 배포합니다. PyPI 패키지도 서버를 Python으로 다시 구현하거나 실행할 때 npx @latest를 호출하지 않고, 릴리스와 함께 고정된 같은 JS 코드를 wheel 내부에서 실행합니다.
TypeScript source
├─ esbuild → bundle/discord-mcp.cjs │ ├─ npm (npx / pnpm / Yarn / bunx) │ ├─ PyPI wheel (uvx / pipx / pip launcher) │ ├─ GHCR image (Docker) │ └─ MCPB (Claude Desktop one-click bundle) └─ server.json → MCP Registry에서 npm / PyPI / OCI 좌표를 한 항목으로 연결
네 배포 산출물은 동일한 서버 번들을 사용하며, 번들에 실제 포함된 의존성의 라이선스 원문과 결정적인 CycloneDX 1.6 SBOM도 esbuild metafile에서 함께 생성합니다. 따라서 같은 릴리스 버전이 패키지 매니저별로 서로 다른 전이 의존성을 다시 해석하지 않습니다.
읽기 도구는 기본으로 노출됩니다.
| 도구 | 설명 |
|---|---|
discord_get_bot | 봇 계정과 현재 안전 설정 확인 |
discord_list_guilds | 봇이 참여한 서버 목록 조회 |
discord_get_guild | 서버 메타데이터 조회 |
discord_list_channels | 서버의 채널 목록 조회 |
discord_get_channel | 채널 메타데이터 조회 |
discord_get_messages | 채널 메시지 최대 100개 조회 |
discord_get_message | 단일 메시지 조회 |
DISCORD_ENABLE_WRITES=true일 때 다음 도구가 추가됩니다.
| 도구 | 설명 |
|---|---|
discord_send_message | 일반 메시지 또는 답글 전송 |
discord_edit_own_message | 이 봇이 직접 작성한 메시지만 수정 |
DISCORD_ENABLE_DELETES=true까지 설정하면 discord_delete_own_message가 추가됩니다. 삭제 호출에는 confirm: true도 필요합니다.
MCP resource도 함께 제공합니다.
discord://botdiscord://guildsdiscord://guilds/{guild_id}discord://guilds/{guild_id}/channelsdiscord://channels/{channel_id}discord://channels/{channel_id}/messages/{message_id}bot scope를 선택하고 테스트 서버에 초대합니다.권장 최소 권한:
View Channels, Read Message HistorySend MessagesSend Messages in ThreadsConnectAdministrator, Manage Messages, Mention Everyone 권한은 필요하지 않습니다. 채널별 permission overwrite가 서버 권한보다 우선하므로, 특정 채널이 보이지 않으면 해당 채널 권한도 확인하세요.
권장 런타임은 Node.js 22 이상입니다. 배포 채널에 따라 다음 명령을 사용할 수 있습니다. 재현 가능한 MCP 설정을 위해 latest 대신 정확한 버전을 고정하세요.
| 채널 | 실행 명령 | 필요한 런타임 |
|---|---|---|
| npm / npx | npx -y @hypark5540/discord-mcp@0.1.1 | Node.js 22+ |
| pnpm | pnpm dlx --package=@hypark5540/discord-mcp@0.1.1 discord-mcp | Node.js 22+ |
| Yarn | yarn dlx -p @hypark5540/discord-mcp@0.1.1 discord-mcp | Node.js 22+ |
| Bun 패키지 실행기 | bunx --package @hypark5540/discord-mcp@0.1.1 discord-mcp | Bun + Node.js 22+ |
| PyPI / uvx | uvx --from hypark-discord-mcp==0.1.1 discord-mcp | Python 3.9+ + Node.js 22+ |
| PyPI / pipx | pipx run --spec hypark-discord-mcp==0.1.1 discord-mcp | Python 3.9+ + Node.js 22+ |
| Docker / GHCR | 아래 docker run 예시 | Docker |
| Claude Desktop MCPB | GitHub Release의 discord-mcp-0.1.1.mcpb | Claude Desktop |
| MCP Registry | io.github.hypark5540/discord-mcp | 클라이언트가 선택한 패키지에 따름 |
bunx는 npm 패키지 설치 프런트엔드로 지원합니다. Node shebang을 그대로 실행하며 Bun 자체 런타임을 강제하는 bunx --bun 모드는 지원 범위가 아닙니다.
전역 설치는 기존 discord-mcp 명령이 없는 격리된 환경에서만 다음처럼 사용할 수 있습니다.
npm install --global @hypark5540/discord-mcp@0.1.1
pip install hypark-discord-mcp==0.1.1 hypark-discord-mcp --version
npm과 Python 채널 모두 고유한 hypark-discord-mcp 명령 alias를 제공합니다. 제3자의 기존 npm/PyPI 패키지도 discord-mcp라는 전역 명령을 설치하므로, 전역 설치 과정 자체가 충돌할 수 있습니다. 평소에는 격리된 npx/uvx 실행을 권장하고, 전역으로 설치했다면 고유 alias를 사용하세요. Python 패키지는 Node를 내장하지 않으며, 필요하면 DISCORD_MCP_NODE=/path/to/node로 실행 파일을 지정할 수 있습니다.
Docker에서는 -i로 stdio를 유지하고 -t는 사용하지 않습니다.
docker run --rm -i \
-e DISCORD_TOKEN \ -e DISCORD_ENABLE_WRITES=false \ ghcr.io/hypark5540/discord-mcp:0.1.1
아래 공식 버튼은 정확히 고정된 npm 패키지를 stdio MCP 서버로 등록합니다. 실제 토큰은 링크에 들어 있지 않고 ${env:DISCORD_TOKEN}을 참조하므로, Cursor를 시작하는 환경에 먼저 안전하게 설정하세요.
PyPI처럼 cursor:// 링크를 제거하는 페이지에서 보고 있다면 GitHub README의 Cursor 섹션에서 버튼을 누르세요.
Claude Desktop용 discord-mcp-0.1.1.mcpb를 다운로드한 뒤 파일을 열면 설치 화면이 나타납니다. Discord Bot Token은 MCPB 안에 저장되지 않고, 설치 화면의 sensitive 입력을 통해 운영체제 keychain/credential manager에 보관됩니다. 같은 릴리스의 SHA-256 파일로 다운로드한 번들을 확인할 수 있습니다. GitHub CLI가 있으면 gh attestation verify --repo hypark5540/discord-mcp discord-mcp-0.1.1.mcpb로 릴리스 워크플로의 서명된 provenance도 검증할 수 있습니다.
Gemini CLI는 저장소의 공식 Extension 매니페스트를 직접 설치할 수 있습니다.
gemini extensions install https://github.com/hypark5540/discord-mcp --ref=v0.1.1
설치 중 Token 설정은 sensitive: true이므로 시스템 keychain에 저장됩니다. 확인 화면을 건너뛰는 옵션은 사용하지 마세요.
| 클라이언트 | 권장 연결 | 비밀 전달 |
|---|---|---|
| ChatGPT Desktop / Codex CLI·IDE | 공유 ~/.codex/config.toml local stdio 설정 | env_vars = ["DISCORD_TOKEN"] |
| Claude Code / 기타 stdio MCP | 고정 버전 npx 설정 | 클라이언트 secret store |
| ChatGPT 웹 | local stdio 미지원 | 별도의 hosted remote MCP 필요 |
정확한 설정은 클라이언트별 가이드, keychain·환경변수와 토큰 회전은 비밀 관리 가이드에 있습니다. ChatGPT, Claude, Cursor, Gemini 같은 에이전트에게 설치 자체를 맡길 때는 AI 설치 프롬프트를 그대로 사용할 수 있습니다.
Node.js 22 이상이 필요합니다.
npm run deps:locked
cp .env.example .env npm run build
deps:locked는 모든 의존성 설치 스크립트를 차단한 뒤, 잠금·검토된 esbuild@0.28.1만 명시적으로 재빌드합니다.
.env에서 최소한 토큰을 설정합니다.
DISCORD_TOKEN=your-bot-token
DISCORD_ENABLE_WRITES=false DISCORD_ENABLE_DELETES=false DISCORD_ALLOW_UNRESTRICTED_WRITES=false
직접 확인하려면 다음 명령을 실행할 수 있습니다.
npm start
stdio는 MCP 프레임 전용이므로 실행 후 일반 프롬프트가 나타나지 않는 것이 정상입니다. 상태 로그는 stderr에만 기록됩니다.
npm 패키지를 실행하도록 등록하는 예시입니다. 클라이언트마다 설정 파일 위치는 다르지만 설정 형태는 대체로 다음과 같습니다.
{
"mcpServers": { "discord": { "command": "npx", "args": ["-y", "@hypark5540/discord-mcp@0.1.1"], "env": { "DISCORD_TOKEN": " ", "DISCORD_ENABLE_WRITES": "false", "DISCORD_ALLOW_UNRESTRICTED_WRITES": "false", "DISCORD_ALLOWED_GUILD_IDS": "123456789012345678", "DISCORD_ALLOWED_CHANNEL_IDS": "234567890123456789" } } } }
uvx를 선호하면 실행 부분만 다음처럼 바꿀 수 있습니다.
{
"command": "uvx", "args": ["--from", "hypark-discord-mcp==0.1.1", "discord-mcp"] }
소스 빌드를 직접 연결할 때는 기존처럼 command를 node, args를 ["/absolute/path/to/discord-mcp/dist/index.js"]로 지정합니다.
MCP 설정의 env가 .env보다 우선합니다. 다른 디렉터리에서 서버가 실행될 수 있으므로 MCP 클라이언트에서는 env에 토큰을 전달하는 방식을 권장합니다. 클라이언트가 native keychain이나 환경변수 참조를 지원하면 위 자리에는 토큰 원문을 저장하지 말고 그 기능을 우선 사용하세요.
| 변수 | 기본값 | 설명 |
|---|---|---|
DISCORD_TOKEN | 필수 | Discord Bot Token |
DISCORD_BOT_TOKEN | - | DISCORD_TOKEN의 호환 alias |
DISCORD_ENABLE_WRITES | false | 전송/수정 도구 등록 |
DISCORD_ENABLE_DELETES | false | 삭제 도구 등록. writes도 true여야 함 |
DISCORD_ALLOW_UNRESTRICTED_WRITES | false | allowlist 없는 전체 채널 쓰기를 의도적으로 허용 |
DISCORD_ALLOWED_GUILD_IDS | 비어 있음 | 쉼표 구분 서버 ID. 비우면 봇이 볼 수 있는 모든 서버 허용 |
DISCORD_ALLOWED_CHANNEL_IDS | 비어 있음 | 쉼표 구분 채널 ID. 비우면 허용 서버의 모든 guild channel 허용 |
DISCORD_MAX_RESPONSE_CHARS | 50000 | 직렬화된 tool/resource 결과 최대 문자 수 (1000~200000) |
DISCORD_MCP_NODE | PATH의 node | PyPI 런처에서 사용할 Node.js 실행 파일 경로 |
서버 ID와 채널 ID는 Discord의 Developer Mode를 켠 뒤 Copy ID로 얻을 수 있습니다. 두 allowlist를 모두 설정하면 교집합만 허용됩니다. DM과 그룹 DM은 항상 거부됩니다. 읽기 모드에서는 allowlist가 모두 비어 있으면 봇이 접근할 수 있는 모든 guild channel을 읽을 수 있습니다. 쓰기 모드는 allowlist를 하나 이상 요구하며, 이 검사를 해제하려면 DISCORD_ALLOW_UNRESTRICTED_WRITES=true를 별도로 명시해야 합니다.
allowed_mentions: { parse: [] }를 강제하므로 @everyone, 역할, 사용자 문자열이 있어도 알림을 보내지 않습니다.Discord의 guild channel 목록 API는 봇이 실제로 View Channel 권한을 갖지 않은 채널의 이름이나 topic 같은 메타데이터도 반환할 수 있습니다. 민감한 서버에서는 guild allowlist만 두지 말고 channel allowlist도 함께 설정하세요. 채널 목록에는 일반 채널과 현재 active thread가 포함되며, archived thread는 ID로 직접 조회해야 합니다.
allowlist 없이도 실행할 수 있지만, 실제 사용 환경에서는 봇 전용 테스트 서버와 DISCORD_ALLOWED_GUILD_IDS, DISCORD_ALLOWED_CHANNEL_IDS를 함께 사용하는 것이 좋습니다.
npm run dev
npm run typecheck npm test npm run build npm run check npm run build:mcpb npm run verify:mcpb npm run build:pypi
테스트는 실제 Discord 호출 없이 다음 항목을 검증합니다.
Vitest는 import 가능한 src 모듈에 대해 statements, branches, functions, lines를 파일별 100%로 강제합니다. 얇은 process bootstrap인 src/index.ts는 커버리지 계산 대신 컴파일 결과와 번들에 대한 실제 stdio handshake로 검증합니다. Codecov의 project/patch 상태도 허용 오차 없이 100%를 요구합니다.
CI는 Node.js 22/24에서 검사하고, 생성된 npm tarball과 Python wheel을 각각 깨끗한 환경에 설치한 뒤 stdio handshake를 다시 수행합니다. Python wheel 런처는 Ubuntu/Windows의 Python 3.9/3.14에서도 별도 확인합니다. MCPB도 독립적으로 두 번 빌드해 바이트가 같은지 확인하고, 공식 CLI로 다시 압축 해제한 서버를 실행합니다. 릴리스 준비와 OIDC Trusted Publishing 설정은 docs/releasing.md를 참고하세요.
이 서버는 telemetry를 보내거나 Discord 응답을 별도로 저장하지 않습니다. 로컬 MCP 클라이언트의 요청에 필요한 Discord REST 호출만 수행합니다. 데이터 흐름과 보관 범위는 [PR
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요