MCP server for the Discord <-> Claude Code bridge. Exposes tools for inspecting Discord traffic, checking daemon health, and sending messages to Discord from a live Claude Code session.
Six tools with clear naming (verb_noun pattern) and reasonable descriptions (avg 180 chars). However, critical gaps: input schemas are present but lack proper JSON Schema type declarations for most parameters. Parameter descriptions exist but are often terse (20-40 chars). No output schemas documented. Error handling is minimal, tools return raw data without recovery guidance. Missing tool annotations (readOnlyHint, destructiveHint). send_message is a write operation but lacks confirmation/dry-run pattern. No pagination support despite tools returning lists (inbox_list, outbox_list). Overall: functional but below production baseline.
Check the bridge daemon's health: PID alive, session info, file sizes. Use this to verify bridge.py is actually running before assuming Discord messages will be picked up.
List the most recent Discord messages received by the bridge daemon. Returns JSON with the last N entries from inbox.jsonl, plus the total count. Use this to see what 總裁 has sent through Discord recently.
List the most recent auto-replies the bridge has dispatched (status records). Each entry tells you whether the underlying `claude -p` call succeeded, its response length, and how long it took.
Post a message to the configured Discord channel via the bridge bot. Use this when you want to push something to 總裁 from the live Claude Code session — for example, "fyi I just finished X". The message arrives as the same bot that handles auto-replies.
Tail the last N lines of bridge.log for diagnostics.
Sum token usage and cost from outbox.jsonl for a given day. Aggregates per-call token counts that bridge.py recorded after each `claude -p --output-format json` invocation. Useful to estimate how fast you're burning Max-subscription rate-limits or API budget.
Input schemas lack proper JSON Schema type declarations. Parameters show 'type' field but no minLength, maxLength, pattern, or enum constraints. Example: 'limit' parameter has no bounds (should be 1-200), 'date' has no format validation (should be ISO 8601 pattern).
No output schemas documented. Tools return JSON but LLMs cannot infer response structure. Example: inbox_list returns 'JSON with last N entries' but field names, types, and nesting are undocumented.
send_message is a destructive write operation but lacks confirmation/dry-run pattern and has no destructiveHint annotation. Discord message sends are irreversible, agents should confirm before executing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Five tools are read-only but unmarked; send_message is destructive but unmarked. LLMs cannot distinguish safe from unsafe operations.
Error handling is absent. Tools return raw data or fail silently. No recovery guidance (e.g., 'If bridge.py is not running, start it with: python bridge.py'). No error categorization (retryable vs fatal).