Skip to main content
Glama
CharityDEX

VoiceOS Discord MCP Server

by CharityDEX

MCP-сервер VoiceOS для Discord

Это автономный MCP-сервер на TypeScript, который позволяет VoiceOS читать и отправлять сообщения в Discord через инструментарий DISCORDBOT от Composio.

VoiceOS по-прежнему запускает его как локальный stdio MCP-сервер, но аутентификация в Discord и обработка токенов делегируются Composio.

Функции

  • connect_discord_bot: Возвращает ссылку Composio Connect для аутентификации бота/аккаунта Discord.

  • list_discord_servers: Объясняет процесс обнаружения гильдий/серверов для потока бота на базе Composio.

  • list_discord_channels: Выводит список каналов для известного ID гильдии/сервера Discord.

  • read_discord_messages: Получает последние сообщения из ID канала Discord.

  • send_discord_message: Отправляет сообщение в ID канала Discord.

  • reply_discord_message: Отвечает на конкретный ID сообщения Discord.

Действия по записи четко описаны в определениях инструментов MCP, чтобы VoiceOS могла показать подтверждение перед отправкой чего-либо в Discord.

Related MCP server: poke_discord

Требования

  • Node.js 20+

  • API-ключ Composio

  • Стабильный ID пользователя для локального тестирования

Для рабочей версии VoiceOS ID пользователя должен внедряться автоматически из учетной записи VoiceOS, в которую выполнен вход. Пользователи не должны определять или вводить его вручную.

Установка

npm install

Настройка окружения

Создайте локальный файл .env:

COMPOSIO_API_KEY=your_composio_api_key
VOICEOS_USER_ID=local-test-user
COMPOSIO_TOOLKIT=DISCORDBOT
# Recommended/required for reliable DISCORDBOT channel and message tools.
COMPOSIO_AUTH_CONFIG_ID=your_discordbot_auth_config_id

COMPOSIO_AUTH_CONFIG_ID должен указывать на пользовательскую конфигурацию аутентификации DISCORDBOT в Composio, которая включает ID клиента Discord, секрет клиента, токен бота и целочисленное значение разрешений. Стандартное OAuth-соединение, управляемое Composio, может отображаться как ACTIVE, даже если в нем отсутствует токен бота, необходимый для конечных точек каналов/сообщений сервера, что приводит к ответам Discord 401 Unauthorized.

Опциональные ID серверов для обнаружения каналов:

DISCORD_GUILD_IDS=server_id_1,server_id_2

DISCORD_GUILD_IDS полезен, поскольку текущий MCP на базе Composio сопоставляет список каналов с DISCORDBOT_LIST_GUILD_CHANNELS, для чего требуется ID гильдии/сервера.

Локальный запуск

npm run start

Подключение к VoiceOS

  1. Откройте настройки VoiceOS.

  2. Перейдите в Custom Integrations (Пользовательские интеграции).

  3. Нажмите Add (Добавить).

  4. Назовите интеграцию, например Discord.

  5. Вставьте команду запуска:

/Users/makslas/Desktop/Development-Repos/VoiceOS-Discord-MCP/run-discord-mcp.sh
  1. Нажмите Connect (Подключить).

Процесс аутентификации

После подключения MCP в VoiceOS спросите:

Connect Discord

VoiceOS должна вызвать connect_discord_bot, что откроет ссылку Composio Connect. Если установлен COMPOSIO_AUTH_CONFIG_ID, ссылка создается для этой конкретной конфигурации аутентификации, а не для стандартной управляемой OAuth-конфигурации Composio.

Если пользователь пытается выполнить любое действие в Discord до аутентификации, MCP возвращает сообщение о необходимости аутентификации. Обычные действия в Discord намеренно не открывают Composio автоматически, что предотвращает циклы повторных попыток аутентификации.

Discord Bot authentication is required before I can access Discord.

Please explicitly ask: `Connect Discord` when you want me to open the Composio connection page.

Подробности об инструментах

connect_discord_bot

Создает ссылку Composio Connect для DISCORDBOT.

Используйте это при запросе к VoiceOS:

Connect Discord

list_discord_servers

Если настроен DISCORD_GUILD_IDS, получает подробную информацию об этих гильдиях. В противном случае объясняет, что для получения списка каналов DISCORDBOT в Composio требуется ID гильдии/сервера.

list_discord_channels

Выводит список каналов Discord для сервера/гильдии.

Параметры:

  • guild_id: Опциональный ID сервера/гильдии Discord. Если пропущено, инструмент использует DISCORD_GUILD_IDS.

  • text_only: По умолчанию true, возвращает только текстовые каналы, подходящие для рабочих процессов чтения/отправки сообщений.

Используйте это при запросе к VoiceOS:

What Discord channels do you have access to in server GUILD_ID?

read_discord_messages

Читает последние сообщения из канала через DISCORDBOT_LIST_MESSAGES.

Параметры:

  • channel_id: ID канала Discord.

  • channel_name: Имя канала Discord, например general. Используется, если channel_id пропущен.

  • guild_id: Опциональный ID сервера/гильдии Discord, используемый для разрешения channel_name. Если пропущено, инструмент использует DISCORD_GUILD_IDS.

  • limit: Количество сообщений для получения, от 1 до 100. По умолчанию 10.

  • before: Опциональный ID сообщения для пагинации. Получает сообщения до этого сообщения.

  • after: Опциональный ID сообщения для пагинации. Получает сообщения после этого сообщения.

  • around: Опциональный ID сообщения для пагинации. Получает сообщения вокруг этого сообщения.

  • author_filter: Опциональный фильтр по ID пользователя, имени пользователя или отображаемому имени.

send_discord_message

Отправляет сообщение в канал через DISCORDBOT_CREATE_MESSAGE.

Параметры:

  • channel_id: ID канала Discord.

  • channel_name: Имя канала Discord, например general. Используется, если channel_id пропущен.

  • guild_id: Опциональный ID сервера/гильдии Discord, используемый для разрешения channel_name. Если пропущено, инструмент использует DISCORD_GUILD_IDS.

  • content: Точное содержание сообщения. Максимум 2000 символов.

  • tts: Отправлять ли как текст в речь (text-to-speech). По умолчанию false.

  • allowed_mentions: Политика парсинга упоминаний. Одно из значений: none, users, users_and_roles или everyone. По умолчанию none.

reply_discord_message

Отвечает на конкретное сообщение через DISCORDBOT_CREATE_MESSAGE с использованием message_reference.

Параметры:

  • channel_id: ID канала Discord, содержащего исходное сообщение.

  • channel_name: Имя канала Discord, например general. Используется, если channel_id пропущен.

  • guild_id: Опциональный ID сервера/гильдии Discord, используемый для разрешения channel_name. Если пропущено, инструмент использует DISCORD_GUILD_IDS.

  • message_id: ID сообщения Discord, на которое нужно ответить.

  • content: Точное содержание ответа. Максимум 2000 символов.

  • allowed_mentions: Политика парсинга упоминаний. Одно из значений: none, users, users_and_roles или everyone. По умолчанию none.

Ограничения личных сообщений (DM) в Discord

Composio DISCORDBOT поддерживает обмен сообщениями в каналах, доступных боту, чтение сообщений, ответы, список каналов гильдии и личные сообщения, созданные ботом.

Он не предоставляет широкого доступа к существующим личным сообщениям пользователя. Операции с групповыми личными сообщениями требуют токенов доступа OAuth2 пользователя с областью gdm.join и остаются ограниченными ограничениями API Discord.

ID пользователей в рабочей версии VoiceOS

Для рабочей версии VoiceOS должна автоматически передавать свой внутренний ID вошедшего в систему пользователя в Composio. Пользователь никогда не должен вводить ID пользователя вручную.

Не используйте адрес электронной почты Discord в качестве основного user_id в Composio:

  • Ссылка для подключения требует ID пользователя до завершения OAuth Discord.

  • Адрес электронной почты Discord может быть недоступен в зависимости от областей видимости (scopes).

  • Адрес электронной почты может измениться.

  • Один пользователь VoiceOS может со временем подключить несколько учетных записей Discord.

Примечания по безопасности

  • Не добавляйте .env в систему контроля версий.

  • Не добавляйте COMPOSIO_API_KEY в систему контроля версий.

  • Не добавляйте токены ботов Discord или учетные данные подключенных аккаунтов в систему контроля версий.

  • allowed_mentions по умолчанию имеет значение none, чтобы созданные сообщения случайно не пинговали пользователей, роли, @everyone или @here.

Available Tools

6 tools
connect_discord_botA

Create a Composio Connect Link for authenticating the Discord bot/account connection. Use this whenever the user asks to connect Discord, or whenever another Discord tool reports that authentication is required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It clearly states it creates a link for authentication, which is a non-destructive action. However, it omits details about the output (e.g., returns a URL) or whether user interaction is needed, so it's not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero wasted words. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is mostly complete. It explains purpose and usage. A minor gap is not describing the return value (e.g., a URL), but it's not critical for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the description need not add parameter info. Baseline score of 4 is appropriate since no compensation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: creating a Composio Connect Link for Discord bot authentication. It uses specific verbs ('Create') and resources ('Composio Connect Link for authenticating the Discord bot/account connection'), and is distinct from sibling tools that focus on channels, servers, and messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use: 'whenever the user asks to connect Discord' or 'whenever another Discord tool reports that authentication is required.' This provides clear context and excludes alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_discord_channelsA

List Discord channels that the Composio DISCORDBOT connection can discover. Provide a server/guild ID when known. If authentication is missing, return a Composio Connect Link. Use this when the user asks what Discord channels or chats are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
guild_idNoOptional Discord server/guild ID. If omitted, uses DISCORD_GUILD_IDS from the MCP environment.
text_onlyNoOnly return text-like channels that can be used for reading or sending messages. Defaults to true.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description reveals key behaviors: only returns channels the bot can discover, and prompts for authentication if missing. However, it omits details on invalid guild IDs, pagination, or error handling, leaving gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, followed by practical guidance. Every sentence is useful and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks any information about the return format (e.g., list of channel objects) or pagination behavior. Given no output schema, this is a notable gap for a list tool, but the guidance on parameters partially compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds little beyond restating the guild_id as 'when known'. It does not mention the text_only parameter at all, relying fully on the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and resource 'Discord channels' with the context of the Composio DISCORDBOT's discoverable channels. It distinguishes from sibling tools that list servers or perform message actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises providing a guild ID when known and notes the tool returns a Connect Link if auth is missing. It specifies when to use ('user asks what channels are available'), but does not explicitly exclude alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_discord_serversC

Explain how to list Discord servers/guilds for this Composio DISCORDBOT integration. DISCORDBOT channel discovery requires a guild/server ID; if authentication is missing, this returns a Composio Connect Link.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions behavior when authentication is missing (returns a Composio Connect Link) but doesn't disclose what the tool returns on success, side effects, or any other behavioral traits. With no annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence but poorly structured, starting with 'Explain how to list' which is awkward. It tries to convey two separate points without clear organization.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should fully explain purpose and return value. It only partially covers authentication failure but not success behavior or expected output, leaving the agent uninformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so description has no burden to explain parameters. The description adds context about authentication, which is tangential but acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description says 'Explain how to list', which is ambiguous and seems like a help command rather than the actual listing operation. It doesn't clearly state that the tool performs the listing of servers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like list_discord_channels. It does not mention prerequisites or context of use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_discord_messagesA

Read recent messages from a specific Discord channel by channel ID. Use this when the user asks what is happening in a Discord channel or wants context from recent Discord messages. This is a read-only action.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idNoDiscord channel ID to read messages from. If omitted, provide channel_name and a configured or explicit guild_id.
channel_nameNoDiscord channel name, such as general. Used when channel_id is not provided.
guild_idNoOptional Discord server/guild ID used to resolve channel_name. If omitted, uses DISCORD_GUILD_IDS from the MCP environment.
limitNoNumber of recent messages to fetch. Maximum is 100.
beforeNoOptional Discord message ID. Fetch messages before this message.
afterNoOptional Discord message ID. Fetch messages after this message.
aroundNoOptional Discord message ID. Fetch messages around this message.
author_filterNoOptional author filter. Matches Discord user ID, username, or display name in the fetched messages.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It declares the tool is 'read-only', which is good, but does not disclose other behaviors like authentication requirements (bot presence in channel), rate limits, or error handling. Some behavioral context is added, but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise and front-loaded: two sentences. The first clearly states the purpose and the second provides usage context. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 optional parameters, no output schema, and no annotations, the description is adequate for the core purpose but lacks details about return format (e.g., what fields are in messages) and edge cases (e.g., channel not found or no messages). The schema covers parameters but output is not described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add significant meaning beyond what the schema already explains for each parameter. It mentions channel_id as primary but the schema already covers all parameters with descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Read recent messages from a specific Discord channel by channel ID.' It uses a specific verb and resource, and distinguishes from sibling tools like send_discord_message or reply_discord_message by emphasizing it is a read-only action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use: 'Use this when the user asks what is happening in a Discord channel or wants context from recent Discord messages.' It implies not for sending or replying by stating 'read-only action', but does not specify when not to use or alternatives in detail.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reply_discord_messageA

Reply to a specific Discord message ID in a channel. This is a write action and should be shown to the user as a VoiceOS confirmation pill before execution. Confirm the channel ID, message ID, and exact reply content with the user before calling this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idNoDiscord channel ID containing the message being replied to. If omitted, provide channel_name and a configured or explicit guild_id.
channel_nameNoDiscord channel name, such as general. Used when channel_id is not provided.
guild_idNoOptional Discord server/guild ID used to resolve channel_name. If omitted, uses DISCORD_GUILD_IDS from the MCP environment.
message_idYesDiscord message ID to reply to.
contentYesExact Discord reply content to send. Discord messages are limited to 2000 characters.
allowed_mentionsNoAllowed Discord mention parsing policy. Use 'none' unless the user explicitly asks to ping users, roles, @everyone, or @here.none

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses it's a write action and should be shown as a confirmation pill, providing some behavioral context. However, no annotations exist, and the description lacks details on error handling, rate limits, or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each serving a purpose: stating the action and specifying user confirmation. Efficient but could be slightly tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, no output schema, and no annotations, the description is incomplete. It does not explain return values, error conditions, or how to use optional parameters (channel_name/guild_id) effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The tool description repeats the need to confirm parameters but adds no new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Reply to a specific Discord message ID in a channel', which is a specific verb-resource combination. Distinguishes from siblings like 'send_discord_message' and 'read_discord_messages'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Indicates it's a write action requiring user confirmation, but does not explicitly contrast with sibling tools like 'send_discord_message' for new messages or 'read_discord_messages' for reading. No when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_discord_messageA

Send a new message to a specific Discord channel by channel ID. This is a write action and should be shown to the user as a VoiceOS confirmation pill before execution. Confirm the channel ID and exact message content with the user before calling this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idNoDiscord channel ID where the message will be sent. If omitted, provide channel_name and a configured or explicit guild_id.
channel_nameNoDiscord channel name, such as general. Used when channel_id is not provided.
guild_idNoOptional Discord server/guild ID used to resolve channel_name. If omitted, uses DISCORD_GUILD_IDS from the MCP environment.
contentYesExact Discord message content to send. Discord messages are limited to 2000 characters.
ttsNoWhether this message should be sent as text-to-speech. Defaults to false.
allowed_mentionsNoAllowed Discord mention parsing policy. Use 'none' unless the user explicitly asks to ping users, roles, @everyone, or @here.none

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It labels itself as a 'write action' and mentions confirmation, but fails to disclose permissions, rate limits, side effects, or success/failure behavior. This is inadequate for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and no output schema, the description covers purpose and usage but omits behavioral details like return value, error handling, and synchronization. This leaves agents with incomplete context for handling the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description adds minimal extra meaning, only repeating 'exact message content' and 'Discord messages limited to 2000 characters' which are already in schema. No further insight on how parameters interact.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Send a new message to a specific Discord channel by channel ID.' It uses a specific verb (send) and resource (Discord channel), differentiating from sibling tools like read_discord_messages (read) and reply_discord_message (reply).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to show as a confirmation pill and confirm channel ID and message content with user before execution. This provides clear when-to-use and user interaction protocol, though it does not directly compare to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedconnect_discord_bot
    • First observedlist_discord_channels
    • First observedlist_discord_servers
    • First observedread_discord_messages
    • First observedreply_discord_message
    • First observedsend_discord_message

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have distinct purposes (connect, list channels, read, send, reply), but list_discord_servers is ambiguous as it 'explains how to list' rather than listing, potentially overlapping with list_discord_channels.

Naming Consistency5/5

All tools consistently follow verb_noun pattern (e.g., connect_discord_bot, list_discord_channels), with clear and predictable naming.

Tool Count4/5

6 tools is reasonable for a Discord bot integration covering auth, listing, reading, and writing. Slightly narrow but not excessive.

Completeness3/5

Covers core operations but list_discord_servers only explains rather than actually retrieving servers, creating a functional gap. Missing update/delete message and server management tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with Discord through natural language, including reading and sending messages, managing servers, and user actions.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with Discord through the REST API and real-time events, supporting message management, user info, channel operations, and more with security controls.
    15 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to send and read messages in Discord channels, manage servers, channels, and roles via Discord's API.
    16 npm
    2
    MIT