Steam account read-only library intelligence MCP with optional confirmed local actions. Provides Steam library search, game details, wishlist monitoring, storage planning, and local game management.
31 tools with consistent verb-noun naming (steam_get_*, steam_set_*, steam_open_*). All tools have descriptions (10-200 chars, within baseline). Input schemas present for all tools with proper JSON Schema types and constraints (enums, patterns, minLength). However, descriptions are often terse (e.g., 'Open a game's Steam Store page in the default browser' for steam_open_store_page, 56 chars, below the 194-char baseline average). Parameter descriptions are minimal but present. Output schemas are not explicitly documented in the source, responses are inferred from toolResult() calls. Error handling is basic (errorResult() wrapper) without recovery guidance or categorization. No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications in the spec. Composition is strong: tools chain well (e.g., steam_search_library → steam_get_game → steam_game_brief). Security: no secrets in parameters, but action tools (steam_run_game, steam_install_game, steam_uninstall_game) require confirmation via requireConfirmation(), good pattern. Overall: solid baseline definitions with room for richer descriptions and explicit output schemas.
Add a local note to a game record.
Check for price drops, releases, and news signals on the wishlist.
Clear cached data for a specific target or all caches.
Discover new games based on library taste profile and local playtime heuristics.
Find featured games and deals on the Steam Store.
Get a comprehensive brief on a game including Store details, reviews, and DLC.
Get achievement data for a game.
Output schemas not explicitly documented. Tools return via toolResult() but no formal schema definitions visible in source. LLMs cannot plan downstream calls without knowing response structure.
Tool annotations missing. All tools lack readOnlyHint, destructiveHint, or idempotentHint despite clear risk classifications (READ_ONLY, WRITE, DESTRUCTIVE). Agents cannot infer safety properties.
Error handling lacks recovery guidance. errorResult() returns bare error messages without categorization (retryable vs user-fixable vs fatal) or actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2025-06-18+ | v2 |
Get detailed information about a specific game.
Get the local game record (notes, tags, backlog status).
List games installed locally on this computer.
List owned games with optional sorting and filtering.
Get my Steam profile summary from Steam ID or vanity name.
Get recently played games.
Get the user's Steam wishlist.
Install a game via Steam protocol (requires confirmation).
Get aggregate statistics about the owned game library.
Open a friend chat window (does not send a message).
Open a game's achievements page in the default browser.
Open a game's Steam Community Hub in the default browser.
Open the Steam Downloads window.
Open a game's Steam Store page in the default browser.
Read the action audit log (local actions taken via MCP).
Get game recommendations from the owned library based on mood and constraints.
Resolve a Steam vanity URL to a SteamID64.
Launch a game via Steam protocol (requires confirmation).
Search owned games by name or app ID.
Set the backlog status of a game (backlog, playing, completed, abandoned).
Set mood/genre tags for a game.
Analyze and plan local game storage (audit, find large games, make room, uninstall planning).
Uninstall a game via Steam protocol (requires preview and confirmation).
Generate a comprehensive weekly report on wishlist updates, new discoveries, and library insights.
Descriptions are terse (avg 70 chars vs 194-char baseline). E.g., 'Open a game's Steam Store page in the default browser' lacks context on when to use vs similar tools (steam_open_community_hub, steam_open_achievements).
Confirmation mechanism relies on exact text matching (confirmText parameter). If user provides slightly different text, action silently fails. No clear error message or retry guidance.