steam-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STEAM_API_KEY | No | Steam Web API key. Enables the full owned library and wishlist while Steam is closed. | unset |
| STEAM_ACCOUNT_ID | No | Override account detection (the userdata/<id> directory name). | auto |
| STEAM_DEBUG_PORT | No | Comma-separated ports to probe. The first is what steam_restart asks Steam to bind. | 8080,8081 |
| STEAM_MCP_CACHE_DIR | No | Cache and collection backups. | ~/.cache/steam-mcp |
| STEAM_MCP_ALLOW_WRITES | No | Master switch for every mutation. Without it, writes return WRITES_DISABLED. | unset |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| steam_statusA | Report Steam client state, debugger reachability, which data sources are usable, and which capabilities are currently available. Never fails - it reports problems instead of throwing. Call this first whenever a Steam operation is unexpectedly unavailable. |
| steam_restartA | Quit Steam and relaunch it with its Chromium debugger enabled, then wait for the library UI to finish loading. WARNING: this closes the Steam client. Any running game will be interrupted and unsaved progress may be lost - the tool refuses to run if it detects a game, unless allow_interrupt_game is set. Required before any collection write when steam_status reports collections_write unavailable. Typically takes 25-60s. |
| steam_library_listA | List, filter and sort games in the Steam library. Returns a compact projection and is paginated - it never dumps the whole library. Hidden games are excluded unless hidden=true. Always check the returned 'total' before assuming you have seen everything. |
| steam_library_searchA | Find games by name. Fuzzy and punctuation-insensitive, ranked best-first. Use this to turn a game name into an appid before calling any tool that takes appids. |
| steam_game_detailsA | Everything known about one game: install state, playtime, tags, which collections contain it, plus store metadata (description, genres, developers, release date, review score). Store data is fetched on demand and cached for two weeks; it draws on a shared budget of roughly 200 store requests per 5 minutes, so avoid calling this in a loop over many games. |
| steam_tags_listA | List the store tags present across the library with how many games carry each. Use this to discover valid values for the 'tag' filter of steam_library_list. |
| steam_recently_playedB | Games played recently, newest first. |
| steam_wishlistA | List wishlisted games. Requires STEAM_API_KEY to be configured. |
| steam_collections_listA | List every library collection with its id, name, game count, and whether it is dynamic (filter-based, therefore read-only) or a Steam system collection. Works with Steam closed, reading the last state Steam wrote to disk, in which case degraded=true. |
| steam_collection_getA | Return one collection with its games. Paginated. |
| steam_collection_createA | Create a static collection, optionally seeded with games. If a collection with this name already exists it is REUSED and the games are added to it - Steam deletes a same-named collection when creating a duplicate, so this tool never blind-creates. Requires Steam to be running with debugging enabled. |
| steam_collection_add_gamesA | Add games to an existing static collection. Refuses dynamic (filter-based) collections, where such edits are silently reverted by Steam. |
| steam_collection_remove_gamesA | Remove games from a static collection. The games stay in the library; only the collection membership changes. |
| steam_collection_replace_gamesA | Replace the entire membership of a collection. DESTRUCTIVE: any game not in appids is removed from the collection. Requires confirm=true when it would remove more than 10 games. Run with dry_run=true first to see the diff. |
| steam_collection_renameA | Rename a collection, keeping its id and membership. Renaming is preferred over delete-and-recreate because your library shelf layout references collection ids. |
| steam_collection_deleteA | Delete a collection. DESTRUCTIVE: the collection and its id are gone, and recreating it produces a NEW id. The games themselves are untouched, and Steam's collection files are backed up first. Requires confirm=true. Run with dry_run=true first to see exactly which games would lose their membership. |
| steam_set_favoriteB | Add games to, or remove them from, Steam's Favorites collection. |
| steam_set_hiddenA | Hide games from the Steam library, or unhide them. This affects the library view on every device signed into this account. |
| steam_install_gameA | Open Steam's install wizard for a game. NOT a silent install: Steam has no silent install API. This opens a dialog in the Steam window that must be clicked through by hand; nothing happens until then. Returns as soon as the wizard is open; check steam_game_details later to see whether the download actually started. |
| steam_uninstall_gameA | Open Steam's uninstall wizard for a game. NOT silent: Steam has no silent install API. This opens a dialog in the Steam window that must be clicked through by hand; nothing happens until then. Deleting game files is irreversible and any saves kept inside the game folder go with them; Steam Cloud saves are unaffected. Requires confirm=true. |
| steam_cache_refreshA | Re-read the library from Steam, and optionally pre-fetch store metadata for specific games. Store fetches are rate-limited to roughly one every 1.6s (Steam allows about 200 per 5 minutes), so at most 60 appids are accepted per call and the call can take a couple of minutes. |
| steam_cache_clearA | Delete this server's cached data. Steam's own files are never touched, and collection backups are preserved. |
| steam_cache_statusB | Report how fresh this server's cached library snapshot is. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 23 tools
Each tool targets a distinct resource-action combination, and the collection CRUD tools are clearly separated from library listing, search, and details. The cache/status cluster (steam_status, steam_cache_status, steam_cache_refresh, steam_cache_clear) could cause mild confusion by name, but the descriptions cleanly differentiate them.
Most tools follow a steam_<domain>_<action> pattern (steam_library_list, steam_collection_create, steam_cache_refresh), which is predictable and readable. A few exceptions like steam_restart, steam_set_favorite, steam_set_hidden, and steam_wishlist break the pattern slightly, but they are still easy to infer.
At 23 tools, the server sits in the heavy range and includes several housekeeping utilities (status, cache_status, cache_refresh, cache_clear) beyond core functionality. The breadth of Steam's library and collection features justifies most tools, but the count is borderline rather than ideal.
The collection lifecycle is fully covered with list/get/create/rename/add/remove/replace/delete, and library browsing, search, details, favorites, and hidden toggles are present. Wishlist support is read-only and install/uninstall depend on external UI wizards, but these are reasonable limitations given the server's focus.