Skip to main content
Glama
README.md
<div align="center">
  <h1>⚔ Discp</h1>
  <p><strong>The Feature-Complete Discord Model Context Protocol (MCP) Server</strong></p>
  <p>Providing any AI assistant (Claude Desktop, Claude Code, Cursor, Antigravity, OpenCode, Windsurf, n8n) with native, granular control over Discord.</p>

  <p>
    <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-Server-8A2BE2.svg?style=for-the-badge&logo=anthropic&logoColor=white" alt="MCP Server"></a>
    <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge&logo=typescript&logoColor=white" alt="TypeScript"></a>
    <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-%3E%3D18-339933?style=for-the-badge&logo=node.js&logoColor=white" alt="Node.js"></a>
    <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge" alt="License: MIT"></a>
    <a href="https://github.com/SharimAli/discp/stargazers"><img src="https://img.shields.io/github/stars/SharimAli/discp?style=for-the-badge&logo=github&color=gold" alt="GitHub Stars"></a>
    <a href="https://github.com/SharimAli/discp/issues"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge" alt="PRs Welcome"></a>
  </p>
</div>

---

## šŸ“– Overview

**Discp** is a production-grade Discord MCP server written in TypeScript. It bridges AI assistants to Discord with **117 native tools**, supporting both **User/Alt Accounts** and **Bot Accounts** seamlessly without requiring bot verification or developer portal setup.

### šŸ›”ļø Anti-Abuse Human Pacing (Zero Warning Flags)
To prevent accounts from triggering Discord security checkpoints, rate-limits, or password resets, Discp enforces **natural human pacing** (1.2s – 2.5s randomized intervals) across sensitive write operations (creating channels, roles, categories, webhooks, and assigning permissions).

### šŸŽØ Creative Variation (No Repetitive Designs)
Discp equips AI models with tools to discover fresh aesthetic symbols and channel architectures dynamically:
* `get_discord_symbols`: Curated offline library of dividers, channel prefixes, role badges, sparkles, and layout templates.
* `search_discord_symbols`: Searches online databases (**emojicombos**, **emojidb**) live on demand so every server gets unique aesthetics.
* `get_discord_syntax_guide`: Complete cheatsheet of Discord markdown techniques, timestamps, mentions, and internal navigation links.

---

## šŸ› ļø Complete Tool Catalog (117 Tools)

| Domain | Count | Highlight Tools |
| :--- | :---: | :--- |
| **Server Operations** | 11 | `list_servers`, `get_server_info`, `modify_server_settings`, `create_server`, `setup_community_server`, `get_audit_logs`, `modify_server_widget`, `prune_members` |
| **Channels & Categories** | 14 | `create_text_channel`, `create_voice_channel`, `create_stage_channel`, `create_category`, `edit_channel`, `edit_category`, `delete_channel`, `delete_category`, `list_channels`, `list_channels_in_category`, `find_channel`, `get_channel_info`, `move_channel` |
| **Permissions** | 4 | `list_channel_permissions`, `upsert_role_channel_permissions`, `upsert_member_channel_permissions`, `delete_channel_permission` |
| **Messages & Reactions** | 12 | `send_message`, `edit_message`, `delete_message`, `read_messages`, `bulk_delete_messages`, `pin_message`, `unpin_message`, `list_pinned_messages`, `add_reaction`, `remove_reaction`, `clear_reactions`, `get_message_attachments` |
| **Formatting & Mentions** | 3 | `format_discord_mention`, `resolve_discord_mentions`, `get_discord_syntax_guide` |
| **Symbols & Aesthetics** | 2 | `get_discord_symbols`, `search_discord_symbols` |
| **Users & Direct Messages** | 6 | `get_user_info`, `get_user_id_by_name`, `send_direct_message`, `edit_direct_message`, `delete_direct_message`, `read_direct_messages` |
| **Members & Moderation** | 11 | `kick_member`, `ban_member`, `unban_member`, `timeout_member`, `remove_timeout`, `set_member_nickname`, `list_bans`, `get_ban_info`, `list_members`, `search_members`, `get_member_info` |
| **Roles** | 7 | `list_roles`, `get_role_info`, `create_role`, `edit_role`, `delete_role`, `assign_role`, `remove_role` |
| **AutoModeration** | 5 | `list_automod_rules`, `get_automod_rule`, `create_automod_rule`, `edit_automod_rule`, `delete_automod_rule` |
| **Interactive Polls** | 3 | `create_poll`, `end_poll`, `get_poll_answer_voters` |
| **Threads** | 6 | `create_thread`, `modify_thread`, `join_thread`, `leave_thread`, `list_active_threads` |
| **Forums** | 7 | `create_forum_channel`, `edit_forum_channel`, `list_forum_channels`, `get_forum_channel_info`, `list_forum_tags`, `create_forum_post`, `list_forum_posts` |
| **Voice Channels** | 4 | `move_voice_member`, `disconnect_voice_member`, `modify_voice_state` |
| **Scheduled Events** | 5 | `create_scheduled_event`, `edit_scheduled_event`, `delete_scheduled_event`, `list_scheduled_events`, `get_scheduled_event_users` |
| **Invites** | 4 | `create_invite`, `list_invites`, `delete_invite`, `get_invite_details` |
| **Webhooks** | 4 | `create_webhook`, `delete_webhook`, `list_webhooks`, `send_webhook_message` |
| **Emojis & Stickers** | 8 | `list_emojis`, `get_emoji_details`, `create_emoji`, `edit_emoji`, `delete_emoji`, `list_stickers`, `create_sticker`, `delete_sticker` |
| **Bot Utilities** | 2 | `get_bot_info`, `generate_bot_invite_url` |

---

## ⚔ Quickstart

### 1. Clone & Build
```bash
git clone https://github.com/SharimAli/discp.git
cd discp
npm install
npm run build
```

### 2. Environment Configuration
Copy `.env.example` to `.env`:
```env
# 'user' (for user/alt account token) or 'bot' (for Discord bot token)
DISCORD_ACCOUNT_TYPE=user

# Your Token
DISCORD_TOKEN=your_token_here

# Default Server ID (Optional: commands will default to this guild)
DISCORD_GUILD_ID=your_default_server_id_here
```

---

## šŸ”Œ Client Integration Guides

### 1. Cursor IDE
In `~/.cursor/mcp.json` or `.cursor/mcp.json`:
```json
{
  "mcpServers": {
    "discp": {
      "command": "node",
      "args": ["/path/to/discp/dist/index.js"],
      "env": {
        "DISCORD_ACCOUNT_TYPE": "user",
        "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
        "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
      }
    }
  }
}
```

### 2. Claude (Desktop & Code CLI)
* **Claude Desktop:** Add to `%APPDATA%\Claude\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
```json
{
  "mcpServers": {
    "discp": {
      "command": "node",
      "args": ["/path/to/discp/dist/index.js"],
      "env": {
        "DISCORD_ACCOUNT_TYPE": "user",
        "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
        "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
      }
    }
  }
}
```
* **Claude Code CLI:**
```bash
claude mcp add discp node /path/to/discp/dist/index.js \
  --env DISCORD_ACCOUNT_TYPE=user \
  --env DISCORD_TOKEN="YOUR_DISCORD_TOKEN" \
  --env DISCORD_GUILD_ID="YOUR_SERVER_ID"
```

### 3. Google Antigravity IDE
In `~/.gemini/config/mcp_config.json`:
```json
{
  "mcpServers": {
    "discp": {
      "command": "node",
      "args": ["C:\\path\\to\\discp\\dist\\index.js"],
      "env": {
        "DISCORD_ACCOUNT_TYPE": "user",
        "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
        "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
      }
    }
  }
}
```

### 4. OpenCode Desktop / OpenClaw
In `opencode.json`:
```json
{
  "mcp": {
    "servers": {
      "discp": {
        "command": "node",
        "args": ["/path/to/discp/dist/index.js"],
        "env": {
          "DISCORD_ACCOUNT_TYPE": "user",
          "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
          "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
        }
      }
    }
  }
}
```

### 5. Other Editors (VS Code / Cline / Roo Code / Continue / Windsurf)
Use the standard MCP server definition in your tool's settings (`cline_mcp_settings.json`, `~/.codeium/windsurf/mcp_config.json`, or `.continue/config.json`):
```json
{
  "mcpServers": {
    "discp": {
      "command": "node",
      "args": ["/path/to/discp/dist/index.js"],
      "env": {
        "DISCORD_ACCOUNT_TYPE": "user",
        "DISCORD_TOKEN": "YOUR_DISCORD_TOKEN",
        "DISCORD_GUILD_ID": "YOUR_SERVER_ID"
      }
    }
  }
}
```

### 6. HTTP / SSE Mode (n8n, Flowise, Remote AI)
Run Discp as a persistent network microservice:
```bash
export MCP_TRANSPORT=http
export PORT=8085
node dist/index.js
```
* **SSE Stream:** `http://localhost:8085/sse`
* **Messages:** `http://localhost:8085/messages`
* **Health Check:** `http://localhost:8085/health`

---

## šŸ’” Discord Mention & Formatting Syntax

| Component | Syntax | Rendered Result |
| :--- | :--- | :--- |
| **Channel Pill** | `<#1555613673920270347>` | Clickable `#welcome-and-faq` link |
| **Role Pill** | `<@&1555613563899347044>` | Colored `@Moderator` badge |
| **User Pill** | `<@1188806930802675745>` | Clickable `@coded2233` profile |
| **Dynamic Time** | `<t:1727888400:R>` | Relative countdown (`in 2 days`, `3 hours ago`) |
| **Server Tab** | `<id:browse>` / `<id:guide>` | Direct link to Server Channels or Onboarding |
| **Subtext** | `-# Small muted note` | Reduced-size secondary text |
| **Spoiler** | `\|\|hidden text\|\|` | Click-to-reveal black bar |

*Tip: Enable `resolveMentions: true` in `send_message` or `edit_message` to automatically convert `#general` and `@Moderator` into native Discord clickable pills!*

---

## šŸŽØ Recommended Aesthetic & Template Resources

When designing servers, AI assistants are encouraged to consult:
* **[EmojiCombos Discord Symbols](https://emojicombos.com/discord-channel-name-symbols)** — Channel prefixes & dividers
* **[EmojiDB Channel Symbols](https://emojidb.org/discord-channel-name-symbols-emojis)** — Unicode symbol collections
* **[DiscordGate Symbols](https://discordgate.com/tools/symbols)** — Aesthetic text styles
* **[Scoplidrop Symbols](https://www.scoplidrop.com/tools/discord-symbols)** — Decorative dividers & borders
* **[Xenon Templates](https://xenon.bot/templates/tag/community)** — Community server architecture layouts

---

## šŸ“œ License

Distributed under the [MIT License](LICENSE). See [`LICENSE`](LICENSE) for more details.

---

## āš ļø Disclaimer

* **Discord Terms of Service:** Automating user accounts (selfbots) is against Discord's Terms of Service and Community Guidelines. While Discp integrates natural human pacing (1.2s – 2.5s randomized intervals) to safeguard accounts, using user account tokens is done strictly at your own discretion and risk.
* **Limitation of Liability:** The authors and contributors assume no responsibility or liability for any account terminations, suspensions, rate limits, or sanctions enforced by Discord.
* **Non-Affiliation:** Discp is an independent open-source project and is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Discord Inc. or its affiliates.

TDQS

C2.9/5.0

Scored across 117 tools

Disambiguation3/5

With 117 tools, several overlapping groups exist (e.g., member lookup via search_members, get_user_id_by_name, get_user_info, get_member_info; channel discovery via list_channels, find_channel, get_channel_info; mention formatting via format_discord_mention and resolve_discord_mentions). Detailed descriptions help clarify intent, but more than a couple of tools could be confused, fitting 'some overlap exists'.

Naming Consistency4/5

Nearly all tools follow a consistent snake_case verb_noun pattern, making names highly predictable. Minor deviations exist, such as edit_ vs modify_ for update operations and unique verbs like upsert and setup, but overall the convention is strongly maintained.

Tool Count1/5

117 tools vastly exceeds the practical range for an MCP server, creating an unwieldy surface that forces agents to sift through many near-duplicate operations. The rubric explicitly defines 50+ tools as an extreme mismatch.

Completeness4/5

The tool surface covers CRUD for most Discord entities (servers, channels, messages, roles, members, emojis, webhooks, invites, scheduled events, etc.) with strong breadth. A few gaps remain, such as no edit_sticker, no get_poll details, and no forum tag creation/deletion, but these are minor and can be worked around.

Maintenance

ActivityMaintained
ResponsivenessNo issues