Discord MCP
Discord MCP
Удалённый MCP-сервер (Streamable HTTP), который предоставляет Discord в виде инструментов, предназначен для подключения из Claude → Настройки → Коннекторы → Add custom connector (https://claude.ai/ask-your-org/setup, опция Custom).
Что предоставляет
Инструменты (tools) для работы с API Discord с использованием discord.py:
list_guilds— серверы, к которым имеет доступ бот.list_channels(guild_id)— каналы сервера.list_members(guild_id, limit)— участники сервера.list_roles(guild_id)— роли сервера.send_message(channel_id, content)— отправить сообщение.read_messages(channel_id, limit, before_message_id)— читать историю.create_thread(channel_id, name, message_id?, auto_archive_minutes)— создать ветку.add_reaction(channel_id, message_id, emoji)/remove_reaction(...)— реакции.add_role_to_member(guild_id, user_id, role_id)/remove_role_from_member(...)— роли.
Все идентификаторы (сервера, канала, сообщения, пользователя, роли) — это snowflake-идентификаторы Discord, передаваемые строкой.
Related MCP server: Discord MCP Server
1. Создание бота Discord
Перейдите на Discord Developer Portal и создайте New Application.
В разделе Bot создайте бота и скопируйте Token (кнопка Reset Token). Это значение
DISCORD_BOT_TOKEN.В том же разделе Bot → Privileged Gateway Intents включите:
Server Members Intent (необходим для
list_membersи управления ролями).Message Content Intent (необходим для чтения содержимого сообщений в
read_messages).
В OAuth2 → URL Generator:
Scopes:
bot.Bot Permissions (настройте в соответствии с тем, что вы собираетесь использовать):
View Channels,Send Messages,Read Message History,Create Public Threads,Add Reactions,Manage Roles.Откройте сгенерированный URL и пригласите бота на сервер, где вы будете его использовать.
Если вы собираетесь использовать
add_role_to_member/remove_role_from_member, убедитесь, что роль бота находится выше (имеет более высокую иерархию), чем роли, которые вы хотите назначать.
2. Настройка переменных окружения
Скопируйте .env.example в .env и заполните:
cp .env.example .envDISCORD_BOT_TOKEN: токен из предыдущего шага.MCP_AUTH_TOKEN: собственный секрет для защиты сервера (сгенерируйте его с помощьюpython -c "import secrets; print(secrets.token_urlsafe(32))"). Claude.ai будет отправлять его как заголовокAuthorization: Bearer <token>в каждом запросе (см. шаг 4).Остальные переменные имеют разумные значения по умолчанию — см. комментарии в
.env.example.
3. Запуск сервера
Локально (без Docker)
python -m venv .venv && source .venv/bin/activate
pip install -e .
python -m discord_mcp # o: discord-mcpПо умолчанию слушает http://0.0.0.0:8000/mcp.
С Docker
docker compose up --buildили вручную:
docker build -t discord-mcp .
docker run --env-file .env -p 8000:8000 discord-mcpРазвёртывание (Render / Railway / Fly.io / любой VPS)
Образ — это универсальный HTTP-контейнер без собственного постоянного состояния (состояние бота хранится в памяти и в Discord), поэтому он работает на любом провайдере, поддерживающем Docker:
Настройте переменные окружения из шага 2 в панели провайдера.
Обеспечьте доступ к порту
8000(или тому, который вы зададите вPORT) по HTTPS — Claude.ai требует, чтобы MCP-сервер был доступен поhttps://.После развёртывания URL коннектора будет
https://<tu-dominio>/mcp.
Чтобы усилить защиту от DNS rebinding в продакшене, задайте ALLOWED_HOSTS (публичное имя хоста сервера) и ALLOWED_ORIGINS (например, https://claude.ai).
4. Подключение в claude.ai в качестве custom-коннектора
Перейдите на
https://claude.ai/ask-your-org/setup(или Настройки → Коннекторы) и выберите Add custom connector / Custom.Name:
Discord(или какой хотите).URL:
https://<tu-dominio>/mcp.В Request headers / Advanced settings добавьте:
Заголовок:
AuthorizationЗначение:
Bearer <el mismo valor que pusiste en MCP_AUTH_TOKEN>
Сохраните и проверьте, попросив Claude что-то вроде "Перечисли доступные серверы Discord" — он должен вызвать
list_guilds.
Если вы предпочитаете не использовать аутентификацию (только для быстрых тестов, никогда в продакшене), оставьте MCP_AUTH_TOKEN пустым и не добавляйте заголовок.
Разработка
pip install -e ".[dev]"
pytestТесты покрывают конфигурацию, middleware аутентификации и логику DiscordService, которая не требует реального подключения к Discord (интеграционных тестов с реальным API Discord нет).
Заметки по архитектуре
Бот
discord.pyработает как фоновая задача в том же event loop, что и ASGI-сервер (Starlette/uvicorn); он запускается и останавливается вместе с lifespan приложения (src/discord_mcp/server.py).MCP-сервер использует транспорт Streamable HTTP (
mcp.server.MCPServerиз официального SDKmcp) — удалённый транспорт, поддерживаемый custom-коннекторами Claude.Аутентификация — это статический bearer-токен, проверяемый собственным ASGI-middleware (
auth_middleware.py), предназначенным для механизма "Request headers" custom-коннекторов — он не реализует полный поток OAuth.
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that integrates with Discord to provide AI-powered features.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server for AI dialogue using various LLM models via AceDataCloud
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for Discord that enables AI assistants to interact with Discord servers, channels, and messages via the Discord API.65 npmMIT
- AlicenseNot gradedqualityDmaintenanceA Dockerized MCP server that enables Discord integration, offering tools for role management, messaging, moderation, and server administration via natural language.1MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables LLMs to control Discord servers via a bot token, providing comprehensive management tools for messages, members, roles, channels, permissions, and more.6736 npmMIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI assistants to manage Discord servers, including roles, channels, members, messages, and moderation, via natural language commands.1MIT