๐ŸŽฉ You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP โ†’
Sign In

@hypark5540/discord-mcp

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hypark5540/discord-mcp

A safe, configurable Model Context Protocol server for Discord

latest
Source
npmnpm
Version
0.1.1
Version published
Maintainers
1
Created
Source

Discord MCP

CI Coverage CodeQL Deploy npm PyPI License: MIT

Discord ์„œ๋ฒ„์™€ ์ฑ„๋„์„ ์ฝ๊ณ , ๋ช…์‹œ์ ์œผ๋กœ ํ—ˆ์šฉํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋กœ์ปฌ Model Context Protocol ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

  • TypeScript + MCP SDK v1
  • ๋กœ์ปฌ stdio ์ „์†ก
  • Discord REST API v10 (Gateway ์—ฐ๊ฒฐ ๋ถˆํ•„์š”)
  • ์„œ๋ฒ„/์ฑ„๋„ allowlist
  • ๊ธฐ๋ณธ read-only
  • ๋ฉ˜์…˜ ์•Œ๋ฆผ ๊ฐ•์ œ ์ฐจ๋‹จ
  • ์ž๊ธฐ ๋ด‡์ด ์ž‘์„ฑํ•œ ๋ฉ”์‹œ์ง€๋งŒ ์ˆ˜์ •/์‚ญ์ œ

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://bot
  • discord://guilds
  • discord://guilds/{guild_id}
  • discord://guilds/{guild_id}/channels
  • discord://channels/{channel_id}
  • discord://channels/{channel_id}/messages/{message_id}

1. Discord ๋ด‡ ์ค€๋น„

  • Discord Developer Portal์—์„œ Application์„ ๋งŒ๋“ค๊ณ  Bot ๋ฉ”๋‰ด์—์„œ ๋ด‡์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Bot Token์„ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์œผ๋ฏ€๋กœ ์ฝ”๋“œ๋‚˜ Git์— ๋„ฃ์ง€ ๋งˆ์„ธ์š”.
  • ์ผ๋ฐ˜ ์ฑ„๋„์˜ ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ์„ ์ฝ์œผ๋ ค๋ฉด Bot ๋ฉ”๋‰ด์˜ Message Content Intent๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. REST๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์„ ๋•Œ๋„ ์ด ์„ค์ •์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • OAuth2 URL Generator์—์„œ bot scope๋ฅผ ์„ ํƒํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์— ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒ์žฅ ์ตœ์†Œ ๊ถŒํ•œ:

  • ์ฝ๊ธฐ: View Channels, Read Message History
  • ๋ฉ”์‹œ์ง€ ์ „์†ก๋„ ์‚ฌ์šฉํ•  ๋•Œ: Send Messages
  • thread์— ์ „์†กํ•  ๋•Œ: Send Messages in Threads
  • voice channel์˜ ํ…์ŠคํŠธ ํƒ€์ž„๋ผ์ธ์„ ์ฝ์„ ๋•Œ: Connect

Administrator, Manage Messages, Mention Everyone ๊ถŒํ•œ์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฑ„๋„๋ณ„ permission overwrite๊ฐ€ ์„œ๋ฒ„ ๊ถŒํ•œ๋ณด๋‹ค ์šฐ์„ ํ•˜๋ฏ€๋กœ, ํŠน์ • ์ฑ„๋„์ด ๋ณด์ด์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ์ฑ„๋„ ๊ถŒํ•œ๋„ ํ™•์ธํ•˜์„ธ์š”.

2. ์„ค์น˜

๊ถŒ์žฅ ๋Ÿฐํƒ€์ž„์€ Node.js 22 ์ด์ƒ์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ ์ฑ„๋„์— ๋”ฐ๋ผ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ MCP ์„ค์ •์„ ์œ„ํ•ด latest ๋Œ€์‹  ์ •ํ™•ํ•œ ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜์„ธ์š”.

์ฑ„๋„์‹คํ–‰ ๋ช…๋ นํ•„์š”ํ•œ ๋Ÿฐํƒ€์ž„
npm / npxnpx -y @hypark5540/discord-mcp@0.1.1Node.js 22+
pnpmpnpm dlx --package=@hypark5540/discord-mcp@0.1.1 discord-mcpNode.js 22+
Yarnyarn dlx -p @hypark5540/discord-mcp@0.1.1 discord-mcpNode.js 22+
Bun ํŒจํ‚ค์ง€ ์‹คํ–‰๊ธฐbunx --package @hypark5540/discord-mcp@0.1.1 discord-mcpBun + Node.js 22+
PyPI / uvxuvx --from hypark-discord-mcp==0.1.1 discord-mcpPython 3.9+ + Node.js 22+
PyPI / pipxpipx run --spec hypark-discord-mcp==0.1.1 discord-mcpPython 3.9+ + Node.js 22+
Docker / GHCR์•„๋ž˜ docker run ์˜ˆ์‹œDocker
Claude Desktop MCPBGitHub Release์˜ discord-mcp-0.1.1.mcpbClaude Desktop
MCP Registryio.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

3. ํด๋ผ์ด์–ธํŠธ ์›ํ„ฐ์น˜ ์—ฐ๊ฒฐ

Cursor

์•„๋ž˜ ๊ณต์‹ ๋ฒ„ํŠผ์€ ์ •ํ™•ํžˆ ๊ณ ์ •๋œ npm ํŒจํ‚ค์ง€๋ฅผ stdio MCP ์„œ๋ฒ„๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ํ† ํฐ์€ ๋งํฌ์— ๋“ค์–ด ์žˆ์ง€ ์•Š๊ณ  ${env:DISCORD_TOKEN}์„ ์ฐธ์กฐํ•˜๋ฏ€๋กœ, Cursor๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ์— ๋จผ์ € ์•ˆ์ „ํ•˜๊ฒŒ ์„ค์ •ํ•˜์„ธ์š”.

Add to Cursor

PyPI์ฒ˜๋Ÿผ cursor:// ๋งํฌ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ํŽ˜์ด์ง€์—์„œ ๋ณด๊ณ  ์žˆ๋‹ค๋ฉด GitHub README์˜ Cursor ์„น์…˜์—์„œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์„ธ์š”.

Claude Desktop

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

Gemini CLI๋Š” ์ €์žฅ์†Œ์˜ ๊ณต์‹ Extension ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gemini extensions install https://github.com/hypark5540/discord-mcp --ref=v0.1.1

์„ค์น˜ ์ค‘ Token ์„ค์ •์€ sensitive: true์ด๋ฏ€๋กœ ์‹œ์Šคํ…œ keychain์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ™•์ธ ํ™”๋ฉด์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ์˜ต์…˜์€ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.

ChatGPT Desktop, Codex์™€ ๋‚˜๋จธ์ง€ ํด๋ผ์ด์–ธํŠธ

ํด๋ผ์ด์–ธํŠธ๊ถŒ์žฅ ์—ฐ๊ฒฐ๋น„๋ฐ€ ์ „๋‹ฌ
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 ์„ค์น˜ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์†Œ์Šค์—์„œ ์‹คํ–‰

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์—๋งŒ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

5. MCP ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ

npm ํŒจํ‚ค์ง€๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ๋“ฑ๋กํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋งˆ๋‹ค ์„ค์ • ํŒŒ์ผ ์œ„์น˜๋Š” ๋‹ค๋ฅด์ง€๋งŒ ์„ค์ • ํ˜•ํƒœ๋Š” ๋Œ€์ฒด๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
  "mcpServers": {
    "discord": {
      "command": "npx",
      "args": ["-y", "@hypark5540/discord-mcp@0.1.1"],
      "env": {
        "DISCORD_TOKEN": "<use-the-client-secret-store>",
        "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_WRITESfalse์ „์†ก/์ˆ˜์ • ๋„๊ตฌ ๋“ฑ๋ก
DISCORD_ENABLE_DELETESfalse์‚ญ์ œ ๋„๊ตฌ ๋“ฑ๋ก. writes๋„ true์—ฌ์•ผ ํ•จ
DISCORD_ALLOW_UNRESTRICTED_WRITESfalseallowlist ์—†๋Š” ์ „์ฒด ์ฑ„๋„ ์“ฐ๊ธฐ๋ฅผ ์˜๋„์ ์œผ๋กœ ํ—ˆ์šฉ
DISCORD_ALLOWED_GUILD_IDS๋น„์–ด ์žˆ์Œ์‰ผํ‘œ ๊ตฌ๋ถ„ ์„œ๋ฒ„ ID. ๋น„์šฐ๋ฉด ๋ด‡์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์„œ๋ฒ„ ํ—ˆ์šฉ
DISCORD_ALLOWED_CHANNEL_IDS๋น„์–ด ์žˆ์Œ์‰ผํ‘œ ๊ตฌ๋ถ„ ์ฑ„๋„ ID. ๋น„์šฐ๋ฉด ํ—ˆ์šฉ ์„œ๋ฒ„์˜ ๋ชจ๋“  guild channel ํ—ˆ์šฉ
DISCORD_MAX_RESPONSE_CHARS50000์ง๋ ฌํ™”๋œ tool/resource ๊ฒฐ๊ณผ ์ตœ๋Œ€ ๋ฌธ์ž ์ˆ˜ (1000~200000)
DISCORD_MCP_NODEPATH์˜ nodePyPI ๋Ÿฐ์ฒ˜์—์„œ ์‚ฌ์šฉํ•  Node.js ์‹คํ–‰ ํŒŒ์ผ ๊ฒฝ๋กœ

์„œ๋ฒ„ ID์™€ ์ฑ„๋„ ID๋Š” Discord์˜ Developer Mode๋ฅผ ์ผ  ๋’ค Copy ID๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ allowlist๋ฅผ ๋ชจ๋‘ ์„ค์ •ํ•˜๋ฉด ๊ต์ง‘ํ•ฉ๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. DM๊ณผ ๊ทธ๋ฃน DM์€ ํ•ญ์ƒ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ๋ชจ๋“œ์—์„œ๋Š” allowlist๊ฐ€ ๋ชจ๋‘ ๋น„์–ด ์žˆ์œผ๋ฉด ๋ด‡์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  guild channel์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ๋ชจ๋“œ๋Š” allowlist๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ์š”๊ตฌํ•˜๋ฉฐ, ์ด ๊ฒ€์‚ฌ๋ฅผ ํ•ด์ œํ•˜๋ ค๋ฉด DISCORD_ALLOW_UNRESTRICTED_WRITES=true๋ฅผ ๋ณ„๋„๋กœ ๋ช…์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์ „ ์„ค๊ณ„

  • Bot Token๋งŒ ์‚ฌ์šฉํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ํ† ํฐ/self-bot์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ž„์˜ Discord API endpoint๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฒ”์šฉ ๋„๊ตฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ์“ฐ๊ธฐ์™€ ์‚ญ์ œ ๋„๊ตฌ๋Š” ์‹œ์ž‘ ์‹œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๋ณ„๋„ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์ „์†ก/์ˆ˜์ • ์š”์ฒญ์€ allowed_mentions: { parse: [] }๋ฅผ ๊ฐ•์ œํ•˜๋ฏ€๋กœ @everyone, ์—ญํ• , ์‚ฌ์šฉ์ž ๋ฌธ์ž์—ด์ด ์žˆ์–ด๋„ ์•Œ๋ฆผ์„ ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ „์†ก์—๋Š” Discord nonce ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ˆ˜์ •/์‚ญ์ œ ์ „ ์ž‘์„ฑ์ž ID๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉฐ webhook ๋ฉ”์‹œ์ง€์™€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
  • Discord ๋ฉ”์‹œ์ง€๋Š” ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š” ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋กœ ํ‘œ์‹œํ•˜๋ฉฐ ์‘๋‹ต์„ ๋กœ์ปฌ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์บ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ์ฑ„๋„์„ ์ฐธ์กฐํ•˜๋Š” Discord ๋‹ต๊ธ€/์Šค๋ ˆ๋“œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๋ณธ๋ฌธ์„ ์ œ๊ฑฐํ•ด allowlist ๊ฒฝ๊ณ„๋ฅผ ์šฐํšŒํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • API ์˜ค๋ฅ˜๋Š” ํ† ํฐ, ์š”์ฒญ ํ—ค๋”, ์›๋ฌธ ์‘๋‹ต body๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š” ๋ฌธ๊ตฌ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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%๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

  • MCP initialize, tool/resource ๋ชฉ๋ก๊ณผ ํ˜ธ์ถœ
  • feature flag์— ๋”ฐ๋ฅธ ์“ฐ๊ธฐ/์‚ญ์ œ ๋„๊ตฌ ๋…ธ์ถœ
  • Snowflake, pagination cursor, ๋ฉ”์‹œ์ง€ ๊ธธ์ด ๊ฒ€์ฆ
  • guild/channel allowlist ์„ ์ฐจ๋‹จ
  • ํƒ€์ธ ๋ฉ”์‹œ์ง€ ์ˆ˜์ • ๊ฑฐ๋ถ€์™€ ์‚ญ์ œ ํ™•์ธ
  • ๋ฉ˜์…˜ ์ฐจ๋‹จ ๋ฐ nonce ์ ์šฉ
  • ์ตœ๋Œ€ ์‘๋‹ต ํฌ๊ธฐ ์ œํ•œ
  • ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ์™€ PyPI์šฉ ๋ฒˆ๋“ค์˜ ์‹ค์ œ MCP initialize/tools handshake
  • Claude MCPB์˜ ๊ณต์‹ CLI pack/unpack/manifest ๊ฒ€์ฆ, ๊ฒฐ์ •์  ๋ฐ”์ดํŠธ์™€ stdio handshake
  • npm, PyPI, MCP Registry, OCI ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ๋ฒ„์ „ ์ผ์น˜

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 ํ˜ธ์ถœ๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ๋ณด๊ด€ ๋ฒ”์œ„๋Š” PRIVACY.md, ์ทจ์•ฝ์  ๋น„๊ณต๊ฐœ ์ œ๋ณด ๋ฐฉ๋ฒ•์€ SECURITY.md๋ฅผ ํ™•์ธํ•˜์„ธ์š”. ๊ณต๊ฐœ issue๋‚˜ ๋กœ๊ทธ์—๋Š” Bot Token์„ ์ ˆ๋Œ€ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

๋ฌธ์ œ ํ•ด๊ฒฐ

  • 401 / ํ† ํฐ ๊ฑฐ๋ถ€: Bot ๋ฉ”๋‰ด์—์„œ ํ† ํฐ์„ ์žฌ๋ฐœ๊ธ‰ํ•˜๊ณ  DISCORD_TOKEN์„ ๊ฐฑ์‹ ํ•˜์„ธ์š”. Bot ์ ‘๋‘์‚ฌ๋Š” ์ง์ ‘ ๋ถ™์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • 403 / ๊ถŒํ•œ ์—†์Œ: ์ฑ„๋„์˜ View Channel, Read Message History, ํ•„์š” ์‹œ Send Messages๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  • ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ์ด ๋น„์–ด ์žˆ์Œ: Developer Portal์—์„œ Message Content Intent๋ฅผ ํ™œ์„ฑํ™”ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
  • ์“ฐ๊ธฐ ๋„๊ตฌ๊ฐ€ ๋ชฉ๋ก์— ์—†์Œ: MCP ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ์„ธ์Šค์˜ DISCORD_ENABLE_WRITES๊ฐ€ ๋ฌธ์ž์—ด true์ธ์ง€ ํ™•์ธํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์„ธ์š”.
  • allowlist ์˜ค๋ฅ˜: ID๋Š” ์ด๋ฆ„์ด๋‚˜ URL์ด ์•„๋‹ˆ๋ผ 17~20์ž๋ฆฌ ์ˆซ์ž ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Discord์˜ ๊ณต์‹ ๊ถŒํ•œยทintentยทrate limit ์„ธ๋ถ€์‚ฌํ•ญ์€ OAuth2 and Permissions, Gateway Intents, Message Resource, Rate Limits์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Keywords

discord

FAQs

Package last updated on 22 Jul 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts