steam-mcp
Server Quality Checklist
Latest release: v1.0.3
- Disambiguation5/5
Each tool targets a distinct resource and action: recently played, library, wishlist, app details, reviews, title search, library recommendations, and new discoveries. No two tools overlap in purpose, making selection unambiguous.
Naming Consistency5/5All tools follow a clear verb_noun or verb_preposition_noun pattern (get_recently_played, get_library, search_games, recommend_from_library, discover_games). The naming style is consistent throughout.
Tool Count5/58 tools is well-scoped for a Steam discovery server. Each tool addresses a core need (library, wishlist, metadata, reviews, search, recommendations) without redundancy or bloat.
Completeness4/5The tool set covers the primary discovery and recommendation workflows: assessing user preferences, evaluating specific games, and finding new titles. Minor gaps exist (e.g., no direct wishlist management or similar-game lookup), but these are not critical dead ends.
Average 3.7/5 across 8 of 8 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 7 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
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of disclosing behavior. It reveals the output content (verdict, positive %, count), but does not state side effects (though a getter is likely read-only), default behavior for the 'filter' parameter, or any rate limits/errors. This is partially transparent but lacks depth.
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 two sentences, front-loaded with the core purpose, and the second sentence adds a practical usage tip. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, no annotations, and a zero-coverage input schema. The description provides the primary output metrics but fails to explain the filter parameter, default settings, or how results vary by filter value. This leaves the tool incomplete for an agent to predict behavior across all parameter combinations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain the 'filter' parameter or its enum values, leaving ambiguity about what 'positive' or 'recent' mean in context. The parameter names are self-explanatory to some degree, but the description adds no value 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 tool's purpose: 'Steam user review sentiment for a game' and lists the specific metrics returned (overall verdict, positive %, total review count). It distinguishes itself from siblings by focusing on reviews, though it lacks an explicit verb like 'Get' or 'Retrieve'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a usage context: 'Use alongside opencritic-mcp critic scores for a complete quality picture,' suggesting when the tool is useful. However, it does not mention alternatives or when not to use this tool, leaving the guidance implied rather than explicit.
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 transparency burden. It implies a read operation by naming 'get' and listing metadata fields, but it does not mention authentication requirements, error behavior for invalid appid, or effects of the country_code parameter. It adds some context but not comprehensive behavioral disclosure.
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 two concise sentences with no fluff. It front-loads the core purpose and data fields, then adds practical usage guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, no annotations, and only a bare input schema. The description provides the key return fields and use case, but omits an explanation of country_code and any behavioral details like error responses or whether authentication is needed. For a tool with this limited schema context, the description is not complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any parameters. 'appid' is only implied by 'specific game,' and 'country_code' is completely unmentioned, leaving the agent to guess its purpose (likely regional pricing). The description fails to compensate for the schema's lack of parameter descriptions.
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 returns full Steam Store metadata for a specific game, listing concrete fields like description, genres, price, and Metacritic score. It implies a distinct resource and differentiates from siblings like get_app_reviews and search_games by focusing on raw metadata rather than reviews or search results.
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?
It instructs the agent to use this tool when evaluating a specific candidate, providing a clear use case. It also suggests pairing with get_app_reviews for sentiment and opencritic-mcp for critic scores, which gives context for complementary tools. It lacks an explicit 'when not to use' clause, but the guidance is sufficient.
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?
With no annotations, the description carries full behavioral burden. It discloses that it returns AppIDs and filters by ownership, which is useful. But it does not mention auth requirements, rate limits, or whether it's strictly read-only. The behavior is largely implied by 'Find' and 'Returns', but gaps remain around what happens with missing steam_id or how ownership is determined.
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, directly front-loaded with the core action. No filler or redundant phrasing. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must detail return values and edge cases. It mentions AppIDs but does not explain pagination, default max_results, the meaning of country_code, or the definition of 'well-reviewed'. With 4 parameters and no schema descriptions, this is incomplete for a reliable agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It only implicitly covers 'tags' (matching specific tags). The other parameters (steam_id, max_results, country_code) are left entirely unexplained, and the schema provides no descriptions. This is insufficient for correct invocation.
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 action: 'Find well-reviewed games on Steam matching specific tags that the user does NOT own.' It specifies the resource (Steam games), the criteria (tags, not owned, well-reviewed), and the output (AppIDs). This distinguishes it from siblings like search_games (which likely searches without ownership filtering) and recommend_from_library.
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 an explicit use case: 'Use when looking for new purchases.' It also directs the user to pass AppIDs to itad-mcp for pricing/deals. However, it does not explicitly mention alternatives or when not to use it, so it's clear but lacks exclusion guidance.
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?
There are no annotations, so the description carries the full burden. It implies a read-only operation with 'Retrieve' but does not disclose potential side effects, authorization requirements, rate limits, or behavior when the wishlist is empty. The description adds context about the wishlist being 'already flagged as interesting,' which is helpful, but it does not go beyond a basic getter 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 two sentences and front-loaded with the primary purpose. The first sentence is a clear verb+resource statement, and the second adds workflow context without unnecessary detail. Every sentence earns its place, making it concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 optional parameters and no output schema, the description is incomplete. It explains the overall workflow and implies the return includes AppIDs, but it does not describe the output structure, parameter effects, or edge cases. The absence of parameter semantics and output details leaves significant gaps in the agent's understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 3 parameters with 0% coverage in the description. The description does not mention 'sort', 'limit', or 'steam_id', leaving the agent to infer their meanings from the schema only. Since the schema provides enumerations and types but no semantic explanation, the description fails to compensate for this gap.
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 retrieves the user's Steam wishlist, using the specific verb 'Retrieve' and a well-defined resource. It distinguishes itself from sibling tools by focusing on the wishlist and explicitly mentioning the deal-checking workflow, which is unique among the listed siblings.
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?
The description provides clear when-to-use guidance: 'Use this to find games the user has already flagged as interesting' and explicitly names alternative/subsequent tools (get_game_prices, get_historical_low). It also frames the tool as part of 'the most targeted buy-signal workflow,' giving context on its preferred position in a sequence.
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?
The description adds useful behavioral details by stating 'Returns ranked matches with tag overlap scores' and providing an example of tag derivation. However, with no annotations available, it does not disclose other behavioral aspects such as authentication, rate limits, or error handling, leaving some transparency gaps.
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 concise, front-loaded with the primary purpose, and contains no unnecessary words. The four sentences each add value: purpose, use case, LLM guidance with example, and output behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides essential information: purpose, usage guidance, a derivation example, and output format. However, it lacks explanation for three of the four input parameters and does not detail how the ranking score is computed, making it incomplete for a tool with no annotations or output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only implicitly references the 'tags' parameter via 'specified tags/mood'. It does not explain the meaning of 'limit', 'steam_id', or 'unplayed_only', leaving these parameters underspecified.
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 function: 'Find games in the user's library that match specified tags/mood.' This is a specific verb+resource statement that distinguishes it from siblings like get_library, which simply lists, and search_games, which searches external 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 provides clear context by stating 'Ideal for backlog recommendations' and gives concrete guidance for the LLM on how to derive tags from user mood. It does not explicitly outline when not to use the tool or name alternatives, but the use case is well implied.
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?
With no annotations, the description carries the full burden of behavioral disclosure. It adds context by stating 'Returns multiple matches ranked by relevance,' which goes beyond the schema. However, it omits details like failure modes, whether the search covers all Steam games or only the user's library, and any rate limit or authentication considerations. The disclosure is adequate but not rich.
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 two sentences, front-loaded with the core purpose, and contains no filler. Every word earns its place. It is appropriately sized for a simple search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no annotations and no output schema, the description must cover more ground. It explains the purpose and the return behavior (multiple matches ranked), but does not detail the shape of 'matches' (e.g., whether they include the name plus AppID) or the 'limit' parameter's effect. Core functionality is clear, but coverage has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameter descriptions (coverage 0%). The description implicitly explains 'query' as a game title, but 'limit' is entirely unaddressed. Since the description does not compensate for the schema gap on half the parameters, the agent is left guessing what 'limit' controls. This is a significant gap.
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 function: 'Resolve a game title to a Steam AppID.' This is a specific verb-plus-resource statement that distinguishes it from sibling tools like get_app_details or get_library. The phrase 'for other tools' further clarifies its role as a helper utility.
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?
It provides explicit usage context: 'Use when you know a game's name but need its AppID for other tools.' This tells the agent when to invoke this tool, though it does not explicitly name alternatives or provide when-not-to-use scenarios. The context is clear and actionable.
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?
With no annotations provided, the description carries the full burden. It mentions the output includes playtime statistics and suggests behavioral capabilities (sorting, filtering), but it does not disclose default behavior, authentication requirements, pagination, or whether the operation is read-only. The description is not misleading but lacks deeper context.
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 three sentences, front-loaded with the primary purpose, followed by concise usage examples. No fluff or repetition; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a functional understanding but lacks details about default sort order, response format, and edge cases. For a tool with 4 optional parameters and no output schema, more clarity on defaults and return structure would improve completeness. It is adequate for basic use but not comprehensive.
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 0%, so the description must compensate. It adds meaning for two parameters: sort ('recent' as current obsessions) and filter ('unplayed' as backlog). However, it does not explain limit, steam_id, or the remaining enum values (playtime, name, all, played), leaving significant gaps for the agent.
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 retrieves the user's owned Steam library with playtime statistics, using a specific verb and resource. It distinguishes itself from siblings like get_recently_played and get_wishlist by focusing on owned games and playtime, covering both inventory and backlog use cases.
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?
It explicitly states when to use the tool: to understand ownership, identify backlog, and check playtime. It also provides specific sorting/filtering guidance ('Sort by recent', 'Filter unplayed'). However, it does not explicitly name alternative tools or state when not to use it, though the use cases imply a clear context.
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 must disclose behavior itself. It adds the temporal window ('last 2 weeks') and interpretive context ('strongest signal for mood and taste'), but it does not explicitly state that this is a read-only operation, nor does it mention return format or any side effects. The read-only nature is implied but not stated.
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 two sentences with zero filler. The first sentence front-loads the core function, and the second provides actionable usage guidance. Every word adds value.
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 single-parameter read tool, the description covers purpose and usage context effectively. It lacks an explicit read-only declaration and output format details, but these are less critical given the tool's simplicity and the presence of usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention the steam_id parameter at all. While the parameter name is self-explanatory, the description fails to compensate for the lack of schema documentation, leaving semantics like requiredness and intended owner unclear.
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 returns 'Games played in the last 2 weeks', which is a specific verb+resource combination. It distinguishes itself from siblings like get_library and get_wishlist by focusing on recent activity as a mood/taste signal.
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?
The description explicitly says 'Call this before recommend_from_library to understand recent preferences', providing unambiguous sequencing and a named alternative tool. This gives clear when-to-use 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:
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/brandikun/steam-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server