Discord MCP
MCP server that exposes Discord API as tools, enabling users to manage servers, channels, messages, and roles through natural language.
README
Discord MCP
Servidor MCP remoto (Streamable HTTP) que expone Discord como herramientas,
pensado para conectarse desde Claude → Configuración → Conectores → Add
custom connector (https://claude.ai/ask-your-org/setup, opción Custom).
Qué expone
Herramientas (tools) sobre la API de Discord, usando discord.py:
list_guilds— servidores a los que tiene acceso el bot.list_channels(guild_id)— canales de un servidor.list_members(guild_id, limit)— miembros de un servidor.list_roles(guild_id)— roles de un servidor.send_message(channel_id, content)— enviar un mensaje.read_messages(channel_id, limit, before_message_id)— leer historial.create_thread(channel_id, name, message_id?, auto_archive_minutes)— crear un hilo.add_reaction(channel_id, message_id, emoji)/remove_reaction(...)— reacciones.add_role_to_member(guild_id, user_id, role_id)/remove_role_from_member(...)— roles.
Todos los ids (servidor, canal, mensaje, usuario, rol) son los snowflakes de Discord, como string.
1. Crear el bot de Discord
- Entrá al Discord Developer Portal y creá una New Application.
- En Bot, creá el bot y copiá el Token (botón Reset Token). Es el valor de
DISCORD_BOT_TOKEN. - En la misma sección Bot → Privileged Gateway Intents, activá:
- Server Members Intent (necesario para
list_membersy gestión de roles). - Message Content Intent (necesario para leer el contenido de los mensajes en
read_messages).
- Server Members Intent (necesario para
- En OAuth2 → URL Generator:
- Scopes:
bot. - Bot Permissions (ajustá según lo que vayas a usar):
View Channels,Send Messages,Read Message History,Create Public Threads,Add Reactions,Manage Roles. - Abrí la URL generada e invitá el bot al servidor donde lo vas a usar.
- Scopes:
- Si vas a usar
add_role_to_member/remove_role_from_member, asegurate de que el rol del bot esté por encima (mayor jerarquía) de los roles que quiera asignar.
2. Configurar variables de entorno
Copiá .env.example a .env y completá:
cp .env.example .env
DISCORD_BOT_TOKEN: el token del paso anterior.MCP_AUTH_TOKEN: un secreto propio para proteger el servidor (generalo conpython -c "import secrets; print(secrets.token_urlsafe(32))"). Claude.ai va a enviarlo como headerAuthorization: Bearer <token>en cada request (ver paso 4).- El resto de las variables tienen defaults razonables — ver comentarios en
.env.example.
3. Correr el servidor
Local (sin Docker)
python -m venv .venv && source .venv/bin/activate
pip install -e .
python -m discord_mcp # o: discord-mcp
Por defecto escucha en http://0.0.0.0:8000/mcp.
Con Docker
docker compose up --build
o manualmente:
docker build -t discord-mcp .
docker run --env-file .env -p 8000:8000 discord-mcp
Desplegar (Render / Railway / Fly.io / cualquier VPS)
La imagen es un contenedor genérico HTTP sin estado persistente propio (el estado del bot vive en memoria y en Discord), así que corre en cualquier proveedor que soporte Docker:
- Configurá las variables de entorno del paso 2 en el panel del proveedor.
- Exponé el puerto
8000(o el que definas enPORT) por HTTPS — Claude.ai requiere que el servidor MCP sea accesible porhttps://. - Una vez desplegado, la URL del conector va a ser
https://<tu-dominio>/mcp.
Para reforzar la protección contra DNS rebinding en producción, seteá
ALLOWED_HOSTS (el hostname público del servidor) y ALLOWED_ORIGINS
(por ejemplo https://claude.ai).
4. Conectarlo en claude.ai como conector custom
- Entrá a
https://claude.ai/ask-your-org/setup(o Configuración → Conectores) y elegí Add custom connector / Custom. - Name:
Discord(o el que prefieras). - URL:
https://<tu-dominio>/mcp. - En Request headers / Advanced settings, agregá:
- Header:
Authorization - Valor:
Bearer <el mismo valor que pusiste en MCP_AUTH_TOKEN>
- Header:
- Guardá y probá pidiéndole a Claude algo como "Listá los servidores de
Discord disponibles" — debería llamar a
list_guilds.
Si preferís no usar autenticación (sólo para pruebas rápidas, nunca en
producción), dejá MCP_AUTH_TOKEN vacío y omití el header.
Desarrollo
pip install -e ".[dev]"
pytest
Los tests cubren configuración, el middleware de autenticación y la lógica
de DiscordService que no requiere una conexión real a Discord (no hay
tests de integración contra la API real de Discord).
Notas de arquitectura
- El bot de
discord.pycorre como una tarea de background dentro del mismo event loop que el servidor ASGI (Starlette/uvicorn); arranca y se apaga junto con el lifespan de la app (src/discord_mcp/server.py). - El servidor MCP usa transporte Streamable HTTP (
mcp.server.MCPServerdel SDK oficialmcp), el transporte remoto soportado por los conectores custom de Claude. - La autenticación es un bearer token estático validado por un middleware
ASGI propio (
auth_middleware.py), pensado para el mecanismo de "Request headers" de los conectores custom — no implementa el flujo OAuth completo.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.