Skip to main content
Glama

Discord MCP Server for VS Code

An MCP (Model Context Protocol) server that lets VS Code Copilot (or any MCP-compatible agent) send and receive Discord messages as your own user account — enabling real-time testing of Discord bot commands directly from your editor.

⚠️ Discord ToS Notice: Automating a user account ("self-botting") is against Discord's Terms of Service. This tool is intended strictly for local development/testing of your own bots on your own servers. Do not use it for spam, abuse, or on servers you don't control. Use at your own risk.


Why a user account?

Many bot commands check server state tied to the command invoker — e.g., message.member.voice.channel to verify the user is in a voice channel before playing audio. A separate bot account cannot satisfy these checks. Messages must originate from your real Discord user to test these commands properly.


Prerequisites

  • Node.js 18+ (uses native fetch)

  • VS Code with GitHub Copilot (or another MCP host like Claude Desktop / Cursor)

  • Your Discord user token (see below)

Obtaining your Discord user token

  1. Open Discord in a browser or the desktop app

  2. Open Developer Tools (F12 / Ctrl+Shift+I)

  3. Go to the Network tab

  4. Perform any action in Discord (send a message, switch channels)

  5. Find any request to discord.com/api

  6. Copy the Authorization header value — that's your user token

Your user token grants full access to your Discord account. Treat it like a password and never commit it to version control.


Installation

# 1. Clone the repository
git clone https://github.com/masonbesmer/code-discord-mcp.git
cd code-discord-mcp

# 2. Install dependencies
npm install

# 3. Build
npm run build

# 4. Set your Discord user token
cp .env.example .env
# Edit .env and set DISCORD_USER_TOKEN=your-token-here

VS Code Integration

The repository includes .vscode/mcp.json which automatically registers the server with VS Code. The server reads your token from the DISCORD_USER_TOKEN environment variable.

Make sure the variable is set in your shell before launching VS Code:

# macOS / Linux
export DISCORD_USER_TOKEN="your-token-here"
code .

# Windows PowerShell
$env:DISCORD_USER_TOKEN = "your-token-here"
code .

Available Tools

Tool

Description

send_message

Send a text message to a Discord channel

read_messages

Read recent messages from a channel

wait_for_response

Send a command and wait for a bot response

list_channels

List channels in a guild

list_guilds

List guilds your account is in

delete_message

Delete a message (with confirmation prompt)

Available Resources

Resource

Description

discord://guild/{guildId}/channels

Channel list for a guild

discord://channel/{channelId}/recent

Last 25 messages in a channel


Example Workflow

  1. Open your Discord bot project in VS Code

  2. Start a Copilot Chat session in Agent Mode

  3. Ask: "Send !help to my #bot-testing channel and show me what my bot responds with"

  4. Copilot will:

    • Call list_guilds to find your server

    • Call list_channels to find #bot-testing

    • Call wait_for_response with !help

    • Show you the bot's response inline in the chat


Development

# Watch mode (recompiles on file changes)
npm run dev

# Run tests
npm test

# Debug with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js

Security

Concern

Mitigation

Token exposure

Read from env var only; never logged or returned in responses; .env in .gitignore

Discord ToS

Local dev/testing on your own servers only

Rate limiting

Automatic retry after retry_after on HTTP 429; 500ms polling interval

Accidental pings

allowed_mentions: { parse: [] } prevents @everyone/@here pings

Destructive actions

delete_message has destructiveHint: true — VS Code shows a confirmation dialog

Stdout pollution

All diagnostic output goes to stderr; stdout is reserved for MCP JSON-RPC


Dependencies

Package

Purpose

@modelcontextprotocol/sdk

MCP server framework (stdio transport, tool registration)

zod

Input schema validation

typescript (dev)

TypeScript compiler

@types/node (dev)

Node.js type definitions

vitest (dev)

Test runner

No Discord library needed. All Discord API calls use Node 18+ native fetch.

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masonbesmer/code-discord-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server