codex-discord-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CODEX_MODEL | No | Override Codex model (optional) | |
| CODEX_COMMAND | No | Codex executable (default: codex) | |
| CODEX_PROFILE | No | Use a Codex profile (optional) | |
| CODEX_SANDBOX | No | Codex sandbox mode (default: read-only) | |
| CODEX_WORKDIR | No | Working directory for Codex (default: process cwd) | |
| CODEX_EXTRA_ARGS | No | Extra arguments passed to Codex (optional) | |
| CODEX_TIMEOUT_MS | No | Codex process timeout in milliseconds (default: 900000) | |
| DISCORD_BOT_TOKEN | Yes | Discord bot token (required) | |
| CODEX_APPROVAL_POLICY | No | Codex approval policy for non-interactive bot mode (default: never) | |
| CODEX_DISCORD_STATE_DIR | No | Bridge state directory (default: ~/.codex/discord) | |
| CODEX_RESUME_BY_CHANNEL | No | Resume one Codex thread per Discord channel (default: false) | |
| CODEX_DISCORD_ASSUME_YES | No | Suppress writable unattended bot warning (default: false) | |
| CODEX_SKIP_GIT_REPO_CHECK | No | Pass --skip-git-repo-check to codex exec (default: true) | |
| CODEX_DISCORD_ATTACHMENT_ROOTS | No | Allowed outbound file roots (default: cwd, workdir, inbox) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| replyA | Reply in Discord. Pass chat_id from a queued message. Optional reply_to threads under a Discord message id. Optional files are absolute local paths. |
| send_messageA | Send a Discord message to an allowlisted chat. Same behavior as reply, but the name is explicit for non-reply sends. |
| reactA | Add an emoji reaction to a Discord message. Unicode emoji work directly; custom emoji use Discord custom emoji syntax. |
| edit_messageA | Edit a Discord message previously sent by the bot. |
| fetch_messagesB | Fetch recent Discord channel history, oldest first. Discord's bot API does not expose full search. |
| download_attachmentA | Download all attachments from a Discord message into the local bridge inbox and return absolute paths. |
| latest_generated_imagesA | Return absolute paths of the most recently generated images from Codex's built-in image_gen output directory (default ~/.codex/generated_images), newest first. Use this to recover the path of an image you just generated so you can attach it via the files array of reply or send_message. |
| recover_generated_imageA | Recover the most recently generated image(s) from the active Codex session rollout and write them to disk. Codex's built-in image_gen shows an inline preview but usually writes no file; this decodes the image from the session log and saves it to the generated-images dir, returning absolute path(s) ready to pass to the files array of reply/send_message. Optional count (default 1) and session_file (absolute rollout path; defaults to the newest session). |
| list_pending_messagesA | List queued inbound Discord messages that have not been marked handled. Use this because Codex MCP has no Discord push channel. |
| mark_message_handledA | Mark a queued Discord message as handled after replying or deciding no reply is needed. |
| bridge_statusA | Show bridge state path, queue counts, and Discord login status. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
reply and send_message are described as identical in behavior, causing clear overlap and potential misselection. latest_generated_images and recover_generated_image also serve similar purposes with subtle differences that could confuse. Other tools are distinct enough.
Naming mixes verb_noun patterns (send_message, edit_message) with bare verbs (reply, react) and noun phrases (latest_generated_images, bridge_status). While most names are readable, the inconsistency undermines predictability.
At 11 tools, the count is reasonable for a Discord integration, though a few tools (reply/send_message) appear redundant and could be consolidated. Not excessive or thin.
Core Discord operations (send, edit, react, fetch, attachments) are covered, along with a queue mechanism and status check. Missing delete message and channel listing are minor gaps; agents can work around them using existing tools.