Discord MCP
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_ENABLE_WRITES=true์ผ ๋ ๋ค์ ๋๊ตฌ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
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}
1. Discord ๋ด ์ค๋น
- Discord Developer Portal์์ Application์ ๋ง๋ค๊ณ Bot ๋ฉ๋ด์์ ๋ด์ ์์ฑํฉ๋๋ค.
- Bot Token์ ๋ฐ๊ธํฉ๋๋ค. ํ ํฐ์ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ผ๋ฏ๋ก ์ฝ๋๋ Git์ ๋ฃ์ง ๋ง์ธ์.
- ์ผ๋ฐ ์ฑ๋์ ๋ฉ์์ง ๋ณธ๋ฌธ์ ์ฝ์ผ๋ ค๋ฉด Bot ๋ฉ๋ด์ Message Content Intent๋ฅผ ํ์ฑํํฉ๋๋ค. REST๋ก ๋ฉ์์ง๋ฅผ ์ฝ์ ๋๋ ์ด ์ค์ ์ด ์ ์ฉ๋ฉ๋๋ค.
- OAuth2 URL Generator์์
botscope๋ฅผ ์ ํํ๊ณ ํ ์คํธ ์๋ฒ์ ์ด๋ํฉ๋๋ค.
๊ถ์ฅ ์ต์ ๊ถํ:
- ์ฝ๊ธฐ:
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 ๋์ ์ ํํ ๋ฒ์ ์ ๊ณ ์ ํ์ธ์.
bunx๋ npm ํจํค์ง ์ค์น ํ๋ฐํธ์๋๋ก ์ง์ํฉ๋๋ค. Node shebang์ ๊ทธ๋๋ก ์คํํ๋ฉฐ
Bun ์์ฒด ๋ฐํ์์ ๊ฐ์ ํ๋ bunx --bun ๋ชจ๋๋ ์ง์ ๋ฒ์๊ฐ ์๋๋๋ค.
์ ์ญ ์ค์น๋ ๊ธฐ์กด discord-mcp ๋ช
๋ น์ด ์๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์๋ง ๋ค์์ฒ๋ผ ์ฌ์ฉํ ์
์์ต๋๋ค.
npm install --global @hypark5540/[email protected]
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๋ฅผ
์์ํ๋ ํ๊ฒฝ์ ๋จผ์ ์์ ํ๊ฒ ์ค์ ํ์ธ์.

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์ ๋๋จธ์ง ํด๋ผ์ด์ธํธ
์ ํํ ์ค์ ์ ํด๋ผ์ด์ธํธ๋ณ ๊ฐ์ด๋, keychainยทํ๊ฒฝ๋ณ์์ ํ ํฐ ํ์ ์ ๋น๋ฐ ๊ด๋ฆฌ ๊ฐ์ด๋์ ์์ต๋๋ค. ChatGPT, Claude, Cursor, Gemini ๊ฐ์ ์์ด์ ํธ์๊ฒ ์ค์น ์์ฒด๋ฅผ ๋งก๊ธธ ๋๋ AI ์ค์น ํ๋กฌํํธ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
4. ์์ค์์ ์คํ
Node.js 22 ์ด์์ด ํ์ํฉ๋๋ค.
npm run deps:locked
cp .env.example .env
npm run build
deps:locked๋ ๋ชจ๋ ์์กด์ฑ ์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ์ฐจ๋จํ ๋ค, ์ ๊ธยท๊ฒํ ๋
[email protected]๋ง ๋ช
์์ ์ผ๋ก ์ฌ๋น๋ํฉ๋๋ค.
.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/[email protected]"],
"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์ด๋ ํ๊ฒฝ๋ณ์ ์ฐธ์กฐ๋ฅผ ์ง์ํ๋ฉด ์ ์๋ฆฌ์๋ ํ ํฐ ์๋ฌธ์
์ ์ฅํ์ง ๋ง๊ณ ๊ทธ ๊ธฐ๋ฅ์ ์ฐ์ ์ฌ์ฉํ์ธ์.
ํ๊ฒฝ๋ณ์
์๋ฒ 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์ ์ฐธ๊ณ ํ์ธ์.