MCP server exposing Steam Web API tools to Claude Code and Gemini CLI
16 tools with consistent naming (verb_noun pattern), detailed descriptions (avg 180 chars), and Zod schemas. All tools are read-only with proper annotations. However, several tools lack parameter descriptions, output schemas are not documented, and error handling guidance is minimal. Parameter constraints (enums, ranges) are missing for most tools. Tool composition is sound but some tools (steam_export_profile_data, steam_analyze_player, steam_recommend_games) lack implementation visibility.
Analyzes a Steam player profile to infer playtime, backlog, top games, favorite genres/categories, recent activity, and player tendencies.
Exports a structured Steam profile dataset with profile, bans, friends, library, recent activity, and optional achievements. Supports markdown or JSON output.
Returns a player's achievement progress for a specific game. Accepts SteamID64 or vanity URL, and a Steam AppID (e.g. 730 for CS2). Use status="locked" to see missing achievements, "unlocked" for completed ones, "all" for everything. Returns total progress percentage and a table of achievements. Requires the player's game stats to be public.
Returns the number of players currently in-game for a Steam app. Accepts a Steam AppID. Useful for checking if a game is still active/popular. Example: AppID 730 (CS2) typically has 500k+ concurrent players.
Returns the friend list of a Steam player. Accepts a SteamID64 or vanity URL. Shows up to 50 most recent friends with names and the date they became friends. Set resolve_names=false to skip name resolution and return SteamIDs only. Returns an error message if the profile or friend list is set to private.
Output schemas not documented. Tools return text responses but LLMs cannot infer structure of returned data (fields, types, pagination). Downstream tool chaining requires explicit schema documentation.
Parameter constraints missing. 'sort_by' in steam_get_owned_games, 'status' in steam_get_achievements, 'format' in steam_export_profile_data lack enum definitions. LLMs may pass invalid values.
Vague tool descriptions. steam_search_any ('Searches across Steam for games, users, or other content') and steam_recommend_games lack specificity on when to use vs similar tools. Ambiguous names conflate tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Returns rich Steam store details for any AppID: price, discount, release date, developers, publishers, genres, categories, platforms, media, DLC, reviews, and store URL.
Returns the full schema of stats and achievements defined by a game. Accepts a Steam AppID. Returns achievement names, descriptions, hidden status, and icon URLs. Also returns the count of available stats. Useful before querying player-specific achievement data.
Returns global completion rates for all achievements in a game. Accepts a Steam AppID. Shows the 10 easiest and 10 hardest achievements with their global unlock percentages. Useful for understanding how rare an achievement is across all players.
Returns the game library of a Steam player. Accepts SteamID64 or vanity URL. Supports filtering to played-only, sorting by playtime/name/last_played, and limiting results (default: 50, max: 500). Returns game names, AppIDs, and total playtime in a table. Returns an error if the library is set to private.
Checks VAC (Valve Anti-Cheat), game ban, and community ban status for one or more Steam accounts. Accepts a single SteamID64 or an array of up to 100 SteamID64s. Returns ban counts, days since last ban, and economy ban status for each account.
Fetches the public profile of a Steam player. Accepts a SteamID64 (e.g. "76561197960287930") or a vanity URL (e.g. "gabelogannewell"). Returns: display name, avatar URL, online status, last online date, account creation date, country, currently playing game, and profile visibility. Returns limited data if the profile is private.
Returns games played by a Steam user in the last 2 weeks. Accepts SteamID64 or vanity URL. Returns up to 20 games with recent and total playtime. Returns an error if the profile is private.
Recommends games based on a player's library and playtime patterns.
Converts a Steam vanity URL (custom profile name) to a SteamID64. Use this when you have a username like "gabelogannewell" and need the numeric SteamID64 required by most other Steam tools.
Searches across Steam for games, users, or other content by query.
Searches for games on Steam by name. Returns AppID, name, current price, discount percentage, and Metacritic score. Use this to find a game's AppID before calling other tools that require it. Example: search "Counter-Strike" to get AppID 730.
No error recovery guidance. Descriptions mention 'Returns an error if profile is private' but do not guide LLM on next steps (e.g., 'Try steam_get_player_summary for limited public data').
Implementation visibility gap. steam_analyze_player, steam_recommend_games, and steam_search_any handlers not shown in source excerpt. Cannot verify schema completeness or error handling for these tools.