Mcp Client Discord — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Client Discord (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Discord Event Listener with Claude-Powered Auto-Response via KADI Broker.
mcp-client-discord is a TypeScript-based MCP server that listens for Discord @mentions and queues them for template-agent-typescript to process. It uses Discord Gateway to receive real-time events.
Discord Channel → Gateway Event → Mention Queue → template-agent-typescript → Claude API → mcp-server-discord → Discord Replyget_discord_mentions tool for KADI broker integrationnpm installCopy .env.example to .env:
cp .env.example .envEdit .env with your Discord bot token:
DISCORD_TOKEN=your_discord_bot_token_here
DISCORD_GUILD_ID=your_discord_guild_id_here # Optional
MCP_LOG_LEVEL=infonpm run buildDevelopment mode (with hot-reload):
npm run devProduction mode:
npm startget_discord_mentionsRetrieve pending Discord @mentions from the queue.
Input:
limit (optional): Maximum number of mentions to retrieve (1-50, default: 10)Output:
{
"mentions": [
{
"id": "message_id",
"user": "user_id",
"username": "username",
"text": "message text without @bot mention",
"channel": "channel_id",
"channelName": "channel_name",
"guild": "guild_id",
"ts": "ISO_timestamp"
}
],
"count": 1,
"retrieved_at": "ISO_timestamp"
}The MCP server is registered in kadi-broker/config/mcp-upstreams.json:
{
"id": "discord-client",
"name": "Discord Event Listener (mcp-client-discord)",
"type": "stdio",
"prefix": "discord_client",
"enabled": true,
"stdio": {
"command": "node",
"args": ["C:\\p4\\Personal\\SD\\mcp-client-discord\\dist\\index.js"],
"env": {
"DISCORD_TOKEN": "your_token",
"DISCORD_GUILD_ID": "your_guild_id"
}
},
"networks": ["discord"]
}All KĀDI events follow the standardized topic pattern: `{platform}.{event_type}.{bot_id}`
slack, discord, etc.)app_mention, mention, etc.)Why bot_id is required:
Validation: Topics are automatically validated by @agents/shared package. Invalid patterns will log warnings but still publish.
See TOPIC_PATTERN.md for complete documentation.
discord.mention.{BOT_USER_ID}Published when the bot is @mentioned in Discord.
Event Payload (DiscordMentionEvent):
{
id: string; // Unique message ID
user: string; // Discord user ID who mentioned the bot
username: string; // Discord username
text: string; // Message text (with @bot mention removed)
channel: string; // Discord channel ID
channelName: string; // Discord channel name
guild: string; // Discord guild/server ID
ts: string; // ISO 8601 timestamp
timestamp: string; // ISO 8601 datetime when event was published
}Agent_TypeScript polls this MCP server for new @mentions:
// In Agent_TypeScript
const protocol = client.getBrokerProtocol();
const result = await protocol.invokeTool({
targetAgent: 'discord-client',
toolName: 'discord_client_get_discord_mentions',
toolInput: { limit: 5 },
timeout: 10000
});
const mentions = JSON.parse(result.content[0].text).mentions;Required bot permissions:
Required Gateway Intents:
The server logs to console with emoji indicators:
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.