discord-unofficial-mcp
Server Quality Checklist
Latest release: v0.4.0
- Disambiguation4/5
Each tool targets a distinct action: status checking, opening login, listing DMs, reading a specific DM, catching up on unread messages, and closing the tab. There is mild overlap between catch_up and list/read_dm since catch_up can fall back to listing recent conversations, but the descriptions make the intended use cases clear.
Naming Consistency4/5All tools share a consistent discord_ prefix and mostly follow a verb_noun pattern (open_login, list_dms, read_dm, close_tab). However, discord_status is more of a noun-style status check and catch_up is a phrasal verb, creating minor deviations from the otherwise predictable convention.
Tool Count5/5Six tools is a well-scoped size for this server's purpose: managing a Discord browser session and reading DMs. Each tool has a clear role, and none feel redundant or excessive.
Completeness3/5The set covers status, login, listing DMs, reading DMs, and processing unread messages, which is solid for a read-only DM assistant. However, it notably lacks sending messages, explicit mark-as-read control, and broader Discord resource access, which are common expectations for a Discord server.
Average 4.4/5 across 6 of 6 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 3 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses ordering ('recent-activity order'), returned data ('channel_id and whether they have unread messages'), and even signals possible incompleteness ('Reports whether the sidebar walk was complete'). It does not explicitly state side effects, but as a list operation the wording implies none.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, front-loaded with the action and scope. Every clause adds operational meaning, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description names the returned fields and even includes a completion indicator. It could mention behavior on empty results or failed sidebar walks, but those are minor gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'format' and 'unread_only' are already documented. The description adds some behavioral context about unread messages that aligns with unread_only, but it does not provide additional parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Lists') and scope ('open direct conversations in the sidebar'), with useful output details such as channel_id and unread status. It does not explicitly differentiate from siblings like discord_read_dm or discord_catch_up, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this tool when you need an overview of open DM conversations with their channel IDs and unread state. There are no explicit exclusions or alternative tool references, but the purpose strongly implies the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses the bounded scan behavior, message limits, per-conversation error handling, and the unprocessed message count. It does not mention authentication requirements or whether messages are marked as read, but the core behavior is well documented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, leading with the user-facing intent and then the operational details. It is somewhat dense in a single sentence, but every clause adds meaningful behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately describes what the agent receives: latest messages, per-conversation errors, unprocessed counts, and a fallback list of recent conversations. It also communicates limits and defaults, though it could be clearer about exact return formatting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description reinforces the meaning of max_channels by explaining it controls how many conversations are walked, but it does not add significant semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the action ('walks the conversations with unread messages'), the resource (Discord conversations), and the result (returns their latest messages). It also distinguishes itself from siblings like discord_read_dm, which targets a single DM, and discord_list_dms, which lists DMs without returning message content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear usage context: use this when catching up on unread messages across conversations. It also specifies a sensible fallback behavior when nothing is unread, though it does not explicitly name alternatives or state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/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 discloses the observable states (logged_in / logged_out / loading) and that it identifies the user, but it does not clarify whether the tool may launch/alter the Chrome session, what happens if Chrome is not running, or whether any side effects occur. This is a meaningful but moderate gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key instruction ('Call this first') and packs in the essential status values and user identification. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status check with low complexity, the description is nearly complete: it states what is checked and the possible states. However, because there is no output schema, more detail about the exact return structure (e.g., how the user is identified, whether a status object is returned) would make it fully unambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema already fully reflects this. The baseline for no-parameter tools is 4, and there is no parameter information the description needs to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking whether Discord is signed in (logged_in / logged_out / loading) and which user is active. It names a specific resource ('the dedicated Chrome') and distinguishes this as a status/preflight check from sibling tools that perform login, messaging, or tab 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/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this first,' which gives clear sequencing guidance relative to sibling tools. It does not explicitly mention when not to use it or name alternatives, but for a status check the intended context is strongly implied and adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses the action (open/focus tab), the environment (dedicated Chrome), the purpose (manual sign-in), the persistence side effect (session persists), and a guarded behavior (only navigates when signed-out is confirmed). It does not describe what happens if the tab already exists or what the agent should do on failure, but it provides meaningful behavioral context beyond a bare operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The main action and purpose are front-loaded, followed by the important session-persistence and signed-out condition details. Each clause adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description covers what the tool does, why it exists, the dedicated browser context, the one-time nature, session persistence, and the condition under which it navigates. Nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema documents everything. The description does not need to explain parameter meaning, and it appropriately stays focused on behavior instead. Baseline of 4 applies for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Opens and focuses'), a specific resource ('the Discord tab in the dedicated Chrome'), and a clear purpose (manual sign-in). It is easily distinguished from sibling tools like discord_status or discord_read_dm, which involve reading or managing Discord state rather than authentication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use it: when the account owner needs to sign in by hand, one-time, because the session persists. It also states a condition: it only navigates to /login when the signed-out state is confirmed. It does not explicitly name alternatives or when-not-to-use, but the context is strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses the ordering (oldest-first), the return fields, pagination via hasMore/nextBefore/before, and the side effect that opening the conversation may mark it as read. This is especially valuable for an operation that appears read-only but has a potential state-changing effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first states the action and key constraint, the second covers return format and pagination, the third notes the side effect. Every sentence carries necessary information and the most important usage constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description specifies exactly what the response contains, the message ordering, how to page, and the read-state side effect. It also tells the agent where to obtain channel_id/name (discord_list_dms). This is sufficient for correct invocation and interpretation of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by establishing that channel_id and name are mutually exclusive, that channel_id is preferred, and that 'before' should use nextBefore from the previous response. These are semantics an agent could not derive from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Reads the most recent messages') and resource ('a direct conversation'), and distinguishes itself from siblings by scoping to DMs and referencing discord_list_dms as the source of identifiers. The naming and description together make it clear this is not for guild channels or status operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly explains the two identifier options, marks channel_id as preferred, and mandates exactly one of the two — important routing guidance. It does not explicitly contrast with discord_catch_up or state when not to use this tool, but the scope is clear enough for an agent to infer the relevant case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/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 discloses the side effect on online status, the auto-close behavior, the concurrency condition involving another agent, and the possible return states. This is unusually transparent for a tool description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact two-sentence definition with no filler. The core action and effect are front-loaded, and the return-value summary is provided efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description fully covers what the tool does, when to invoke it, what side effects it has, and what outcomes to expect. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly focuses on behavior and return values rather than parameter details, which is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Closes the Discord tab in the dedicated Chrome'. It also clarifies the observable effect ('owner stops appearing online') and is clearly distinct from sibling tools like discord_status, discord_open_login, discord_list_dms, discord_read_dm, and discord_catch_up.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'call only to force it' because the tab 'closes by itself after a few minutes of inactivity'. This directly tells the agent when to use the tool and when not to use it, which is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
shields.io Endpoint
For READMEs with an existing badge row. Append &style=flat-square (or any other shields.io style) to match the rest, and &metric=tools, &metric=maintenance or &metric=claim to badge a different dimension.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mario-hernandez/discord-unofficial-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server