VoiceOS Discord MCP Server
VoiceOS Discord MCP 서버
이것은 Composio의 DISCORDBOT 툴킷을 통해 VoiceOS가 Discord 메시지를 읽고 쓸 수 있게 해주는 독립형 TypeScript MCP 서버입니다.
VoiceOS는 여전히 이를 로컬 stdio MCP 서버로 실행하지만, Discord 인증 및 토큰 처리는 Composio에 위임됩니다.
기능
connect_discord_bot: Discord 봇/계정 인증을 위한 Composio Connect 링크를 반환합니다.list_discord_servers: Composio 기반 봇 흐름을 위한 길드/서버 검색 방법을 설명합니다.list_discord_channels: 알려진 Discord 길드/서버 ID에 대한 채널 목록을 표시합니다.read_discord_messages: Discord 채널 ID에서 최근 메시지를 가져옵니다.send_discord_message: Discord 채널 ID로 메시지를 보냅니다.reply_discord_message: 특정 Discord 메시지 ID에 답장합니다.
쓰기 작업은 MCP 도구 정의에 명확하게 설명되어 있어 VoiceOS가 Discord로 무언가를 보내기 전에 확인 알림을 표시할 수 있습니다.
Related MCP server: poke_discord
요구 사항
Node.js 20+
Composio API 키
로컬 테스트를 위한 안정적인 사용자 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_idCOMPOSIO_AUTH_CONFIG_ID는 Discord 클라이언트 ID, 클라이언트 시크릿, 봇 토큰 및 권한 정수를 포함하는 사용자 지정 Composio DISCORDBOT 인증 구성을 가리켜야 합니다. 기본 Composio 관리 OAuth 연결은 서버 채널/메시지 엔드포인트에 필요한 봇 토큰이 부족한 상태에서도 ACTIVE로 표시될 수 있으며, 이로 인해 Discord 401 Unauthorized 응답이 발생합니다.
채널 검색을 위한 선택적 서버 ID:
DISCORD_GUILD_IDS=server_id_1,server_id_2DISCORD_GUILD_IDS는 현재 Composio 기반 MCP가 채널 목록을 DISCORDBOT_LIST_GUILD_CHANNELS에 매핑하는데, 이는 길드/서버 ID가 필요하기 때문에 유용합니다.
로컬 실행
npm run startVoiceOS에 연결
VoiceOS 설정을 엽니다.
Custom Integrations로 이동합니다.
Add를 클릭합니다.
통합 이름을 지정합니다(예:
Discord).실행 명령을 붙여넣습니다:
/Users/makslas/Desktop/Development-Repos/VoiceOS-Discord-MCP/run-discord-mcp.shConnect를 클릭합니다.
인증 흐름
MCP가 VoiceOS에 연결된 후 다음을 요청하세요:
Connect DiscordVoiceOS는 connect_discord_bot을 호출하여 Composio Connect 링크를 엽니다. COMPOSIO_AUTH_CONFIG_ID가 설정된 경우, 링크는 Composio의 기본 관리 OAuth 구성 대신 해당 인증 구성에 대해 생성됩니다.
사용자가 인증하기 전에 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
DISCORDBOT을 위한 Composio Connect 링크를 생성합니다.
VoiceOS에 다음을 요청할 때 사용하세요:
Connect Discordlist_discord_servers
DISCORD_GUILD_IDS가 구성된 경우 해당 길드에 대한 세부 정보를 가져옵니다. 그렇지 않으면 Composio DISCORDBOT 채널 목록을 보려면 길드/서버 ID가 필요함을 설명합니다.
list_discord_channels
서버/길드에 대한 Discord 채널 목록을 표시합니다.
매개변수:
guild_id: 선택적 Discord 서버/길드 ID. 생략하면 도구는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: Discord 채널 ID.channel_name:general과 같은 Discord 채널 이름.channel_id가 생략될 때 사용됩니다.guild_id:channel_name을 확인하는 데 사용되는 선택적 Discord 서버/길드 ID. 생략하면 도구는DISCORD_GUILD_IDS를 사용합니다.limit: 가져올 메시지 수(1~100). 기본값은 10입니다.before: 페이지 매김을 위한 선택적 메시지 ID. 이 메시지 이전의 메시지를 가져옵니다.after: 페이지 매김을 위한 선택적 메시지 ID. 이 메시지 이후의 메시지를 가져옵니다.around: 페이지 매김을 위한 선택적 메시지 ID. 이 메시지 주변의 메시지를 가져옵니다.author_filter: 선택적 사용자 ID, 사용자 이름 또는 표시 이름 필터.
send_discord_message
DISCORDBOT_CREATE_MESSAGE를 통해 채널로 메시지를 보냅니다.
매개변수:
channel_id: Discord 채널 ID.channel_name:general과 같은 Discord 채널 이름.channel_id가 생략될 때 사용됩니다.guild_id:channel_name을 확인하는 데 사용되는 선택적 Discord 서버/길드 ID. 생략하면 도구는DISCORD_GUILD_IDS를 사용합니다.content: 정확한 메시지 내용. 최대 2000자.tts: 텍스트 음성 변환으로 보낼지 여부. 기본값은false입니다.allowed_mentions: 멘션 파싱 정책.none,users,users_and_roles,everyone중 하나. 기본값은none입니다.
reply_discord_message
message_reference와 함께 DISCORDBOT_CREATE_MESSAGE를 사용하여 특정 메시지에 답장합니다.
매개변수:
channel_id: 원본 메시지가 포함된 Discord 채널 ID.channel_name:general과 같은 Discord 채널 이름.channel_id가 생략될 때 사용됩니다.guild_id:channel_name을 확인하는 데 사용되는 선택적 Discord 서버/길드 ID. 생략하면 도구는DISCORD_GUILD_IDS를 사용합니다.message_id: 답장할 Discord 메시지 ID.content: 정확한 답장 내용. 최대 2000자.allowed_mentions: 멘션 파싱 정책.none,users,users_and_roles,everyone중 하나. 기본값은none입니다.
Discord DM 제한 사항
Composio DISCORDBOT은 봇이 액세스할 수 있는 채널 메시징, 메시지 읽기, 답장, 길드 채널 목록 표시 및 봇이 생성한 DM을 지원합니다.
사용자의 기존 개인 DM에 대한 광범위한 액세스 권한은 부여하지 않습니다. 그룹 DM 작업은 gdm.join 권한이 있는 사용자 OAuth2 액세스 토큰이 필요하며 Discord API 제한 사항의 적용을 받습니다.
프로덕션 VoiceOS 사용자 ID
프로덕션의 경우, VoiceOS는 내부 로그인 사용자 ID를 Composio에 자동으로 전달해야 합니다. 사용자가 수동으로 사용자 ID를 입력해서는 안 됩니다.
Discord 이메일을 기본 Composio user_id로 사용하지 마십시오:
연결 링크는 Discord OAuth가 완료되기 전에 사용자 ID가 필요합니다.
Discord 이메일은 범위에 따라 사용하지 못할 수 있습니다.
이메일은 변경될 수 있습니다.
한 명의 VoiceOS 사용자가 나중에 여러 Discord 계정을 연결할 수 있습니다.
보안 참고 사항
.env를 커밋하지 마십시오.COMPOSIO_API_KEY를 커밋하지 마십시오.Discord 봇 토큰이나 연결된 계정 자격 증명을 커밋하지 마십시오.
allowed_mentions의 기본값은none이므로 생성된 메시지가 실수로 사용자, 역할,@everyone또는@here를 핑하지 않습니다.
Available Tools
6 toolsconnect_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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| guild_id | No | Optional Discord server/guild ID. If omitted, uses DISCORD_GUILD_IDS from the MCP environment. | |
| text_only | No | Only return text-like channels that can be used for reading or sending messages. Defaults to true. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | No | Discord channel ID to read messages from. If omitted, provide channel_name and a configured or explicit guild_id. | |
| channel_name | No | Discord channel name, such as general. Used when channel_id is not provided. | |
| guild_id | No | Optional Discord server/guild ID used to resolve channel_name. If omitted, uses DISCORD_GUILD_IDS from the MCP environment. | |
| limit | No | Number of recent messages to fetch. Maximum is 100. | |
| before | No | Optional Discord message ID. Fetch messages before this message. | |
| after | No | Optional Discord message ID. Fetch messages after this message. | |
| around | No | Optional Discord message ID. Fetch messages around this message. | |
| author_filter | No | Optional author filter. Matches Discord user ID, username, or display name in the fetched messages. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | No | Discord channel ID containing the message being replied to. If omitted, provide channel_name and a configured or explicit guild_id. | |
| channel_name | No | Discord channel name, such as general. Used when channel_id is not provided. | |
| guild_id | No | Optional Discord server/guild ID used to resolve channel_name. If omitted, uses DISCORD_GUILD_IDS from the MCP environment. | |
| message_id | Yes | Discord message ID to reply to. | |
| content | Yes | Exact Discord reply content to send. Discord messages are limited to 2000 characters. | |
| allowed_mentions | No | Allowed Discord mention parsing policy. Use 'none' unless the user explicitly asks to ping users, roles, @everyone, or @here. | none |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | No | Discord channel ID where the message will be sent. If omitted, provide channel_name and a configured or explicit guild_id. | |
| channel_name | No | Discord channel name, such as general. Used when channel_id is not provided. | |
| guild_id | No | Optional Discord server/guild ID used to resolve channel_name. If omitted, uses DISCORD_GUILD_IDS from the MCP environment. | |
| content | Yes | Exact Discord message content to send. Discord messages are limited to 2000 characters. | |
| tts | No | Whether this message should be sent as text-to-speech. Defaults to false. | |
| allowed_mentions | No | Allowed Discord mention parsing policy. Use 'none' unless the user explicitly asks to ping users, roles, @everyone, or @here. | none |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v1.0.0- First observed
connect_discord_bot - First observed
list_discord_channels - First observed
list_discord_servers - First observed
read_discord_messages - First observed
reply_discord_message - First observed
send_discord_message
TDQS
Scored across 6 tools
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.
All tools consistently follow verb_noun pattern (e.g., connect_discord_bot, list_discord_channels), with clear and predictable naming.
6 tools is reasonable for a Discord bot integration covering auth, listing, reading, and writing. Slightly narrow but not excessive.
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
Related MCP Connectors
Connect a Discord bot (bot token from the developer portal) to read/send messages, list guilds and c
Control your Discord community: send/read messages, manage channels and forums, and handle webhook…
Carbon Voice MCP serves as a bridge that connects AI assistants like ChatGPT, Claude, and Cursor to a user's Carbon Voice account, turning voice messages and conversations into a private, on-demand knowledge base. It provides 28 specialized tools for comprehensive voice messaging management, including creating and sending messages, accessing conversation history with instant transcription, running AI actions (summarization, TLDR generation, meeting notes), and managing workspace collaboration through folders, contacts, and team communications.
Connect AI agents to 1000+ apps with managed authentication and tool-calling.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Discord servers through a bot, supporting channel management, messaging, forum operations, reactions, and webhooks.22693 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables interaction with Discord through natural language, including reading and sending messages, managing servers, and user actions.-
- AlicenseNot gradedqualityDmaintenanceEnables 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 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to send and read messages in Discord channels, manage servers, channels, and roles via Discord's API.16 npm2MIT