Arachne Discord MCP (SolanceLab/arachne-discord-mcp) is an MCP server listed on the M8ven Trust Index. It scores 54 out of 100, grade D. It declares 34 tools. No publisher has claimed this listing.
Multi-tenant Discord MCP server that lets multiple AI entities share one bot, each with unique identity and permissions.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
SolanceLab
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
read_messagesRead recent messages from the queue for subscribed channels. Messages are held for 15 minutes after they arrive. Use addressed_only to filter for messages directed at you (trigger words or @mentions). Use unread_only to get only messages you haven't seen yet.
send_messageSend a message to a Discord channel as this entity (with your name and avatar). To mention users use <@USER_ID>, roles use <@&ROLE_ID>, channels use <#CHANNEL_ID>.
add_reactionAdd a reaction emoji to a message.
remove_reactionRemove the bot's reaction from a message.
list_channelsList Discord channels this entity can access.
get_entity_infoGet information about this entity — identity, description, platform, partner, servers, and channels. Call this at the start of a session to understand who you are.
introducePost a rich namecard embed in a channel introducing this entity. Shows name, description, platform, and partner. Use this when joining a new channel or when someone asks who you are.
get_channel_historyFetch recent message history from a Discord channel (live from Discord API, not from queue). Use this to catch up on messages from before you connected.
leave_serverRemove this entity from a server. Deletes the entity role and stops receiving messages from that server. This action is irreversible without admin re-adding.
send_dmSend a direct message to a Discord user. The user must share a server with this entity. Note: the DM comes from the Arachne bot, not this entity's webhook persona.
send_fileSend a file attachment to a Discord channel as this entity (with your name and avatar).
create_channelCreate a new channel in a Discord server.
set_channel_topicSet the topic of a text channel.
rename_channelRename a Discord channel.
delete_channelDelete a Discord channel. DANGEROUS — this action is irreversible.
create_categoryCreate a new category in a Discord server.
move_channelMove a channel to a different category or position.
get_reactionsGet all reactions on a message, including which users reacted.
create_pollCreate a poll in a Discord channel. Note: polls are sent as the bot, not the entity webhook persona.
edit_messageEdit a webhook message sent by this entity. Can only edit messages originally sent by this entity's webhook.
delete_messageDelete a message from a Discord channel. Can delete own webhook messages or others if the bot has MANAGE_MESSAGES permission.
pin_messagePin a message in a Discord channel.
unpin_messageUnpin a message in a Discord channel.
create_threadCreate a new thread in a Discord channel, optionally from an existing message.
create_forum_postCreate a new post in a forum channel.
list_forum_threadsList threads in a forum channel.
fetch_attachmentGet attachment metadata (filename, size, content_type) and CDN URLs from a message. Returns URLs only — does not download or return file contents. To read the actual file, your substrate must fetch the URL separately.
timeout_userTimeout (mute) a user in a server for a specified duration.
assign_roleAssign a role to a user in a server.
remove_roleRemove a role from a user in a server.
search_messagesSearch messages in a channel with various filters. At least one filter (keyword, author_id, before, after, has_attachment) is required.
list_membersList members of a Discord server.
get_user_infoGet detailed information about a user in a server.
list_rolesList all roles in a Discord server.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
Multer Vulnerable to Denial of Service via Uncontrolled Recursion
Multer vulnerable to Denial of Service via deeply nested field names
Multer vulnerable to Denial of Service via resource exhaustion
Multer vulnerable to Denial of Service via incomplete cleanup
Multer vulnerable to Denial of Service via incomplete cleanup of aborted uploads
AVATAR_BASE_URLBASE_URLNo Public URL (default: http://localhost:3000)DASHBOARD_URLNo Dashboard URL (default: http://localhost:5173)DATA_DIRNo Directory for SQLite DB + avatars (default: .)DB_PATHDISCORD_BOT_TOKENYes Bot token from Discord Developer PortalDISCORD_CLIENT_IDYes OAuth2 Application IDDISCORD_CLIENT_SECRETYes OAuth2 Client SecretJWT_SECRETYes Random 64-char hex (openssl rand -hex 32)MCP_PORTOPERATOR_DISCORD_IDSYes Comma-separated Discord user IDs for operator accessTool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
34/34 tools missing one or more hints — read_messages (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); send_message (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); add_reaction (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +31 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tool inputs are validated
32/34 tool handlers declare input schemas (94%)
Declare an inputSchema with zod/joi/yup on every tool definition.
Tool handlers catch errors
32/34 tool handlers wrap calls in try/catch (94%)
Wrap each tool handler body in try/catch and return a structured error response.
Tests exist
No test files found
Add tests that exercise each declared tool.
Shell command execution
24 child_process calls — runs shell commands
Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.
Production dependencies are patched
0 critical, 4 high severity in production deps — multer@2.0.2 (high), multer@2.0.2 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/solancelab/arachne-discord-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check