mcp-server-steam-backlog
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BACKLOG_URL | No | The URL of the backlog server. | http://127.0.0.1:8484 |
| BACKLOG_DEBUG | No | Enable debug logging. | off |
| CF_ACCESS_AUD | No | Cloudflare Access application AUD tag. | |
| MCP_HTTP_BIND | No | The HTTP service bind address. | 127.0.0.1 |
| MCP_HTTP_PATH | No | The HTTP service path. | /mcp/backlog |
| MCP_HTTP_PORT | No | The HTTP service port. | 8486 |
| BACKLOG_DRY_RUN | No | Report writes without sending them. | off |
| MCP_PUBLIC_HOSTS | No | Public hostname(s) for HTTP behind Cloudflare Access. | |
| BACKLOG_WRITE_RATE | No | Writes per minute (1–600). | 60 |
| MCP_ALLOWED_EMAILS | No | Allowed emails for Cloudflare Access. | |
| CF_ACCESS_TEAM_DOMAIN | No | Cloudflare Access team domain. | |
| BACKLOG_LOG_UNREDACTED | No | Show LAN addresses in logs; secrets and SteamIDs stay hidden. | off |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| backlog_get_overviewA | <use_case> Start here. Summarizes the user's Steam library and backlog (pile of shame): how many games are never played, tried or played; Steam Deck ratings; the backlog by Deck rating and length; triage lane counts; the Up next queue length; how old the library export is; and how complete each data source is. </use_case> <important_notes>
|
| backlog_find_gamesA | <use_case> Search and filter the whole Steam library with the dashboard's filters: name or genre words, genres, HowLongToBeat length, ProtonDB tier, Metacritic, release year, Steam Deck rating, controller support, play state, triage lane (list/bucket/shelf) and notes. Use it to find a game's app id before changing it, or to answer questions like "which Verified RPGs have I never played?". </use_case> <important_notes>
|
| backlog_get_gameA | <use_case> Everything about one game: playtime and Deck playtime, last played, Steam Deck rating, ProtonDB tier and report count, HowLongToBeat times, genres, Metacritic, controller support, triage lane, note, position in Up next, couch score with its breakdown, and the Steam store link. </use_case> <important_notes>
|
| backlog_suggest_picksA | <use_case> Answer "what should I play (tonight / next / on the Steam Deck)?": the best backlog games for the couch, ranked by the dashboard's couch score, each with a score breakdown (e.g. never played +30, Verified +30, 8 h +18, MC 86 +5.5) so you can explain why it was picked. </use_case> <important_notes>
|
| backlog_get_next_queueA | <use_case> The Up next lane (queue, play soon) in the user's order, with each game's note. </use_case> <important_notes>
|
| backlog_set_laneA | <use_case> Put games in a triage lane (list, bucket, shelf): next (up next, play soon), someday, skip, or done (finished, beaten), or take them out of every lane (none). Saved to the user's dashboard immediately. </use_case> <important_notes>
|
| backlog_set_noteA | <use_case> Write, replace or clear the note on one game (shown on the dashboard), e.g. "save for the flight" or "stuck at the second boss". </use_case> <important_notes>
|
| backlog_reorder_nextA | <use_case> Change the order of the Up next lane (queue): move one game to a position ("put Celeste first"), or give the order of several games. </use_case> <important_notes>
|
| backlog_start_exportA | <use_case> Refresh the library: re-export the Steam library with fresh playtime, new purchases, Deck ratings, ProtonDB and HowLongToBeat data. Use when the user just bought or played something and the overview's export is older than that. </use_case> <important_notes>
|
| backlog_get_export_statusA | <use_case> How the library refresh is going: running, finished or failed, with the phase (deck, details, proton, hltb), progress, elapsed time, the last lines of its log, and whether the library changed. </use_case> <important_notes>
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| triage_session | Walk through untriaged, unplayed games one at a time, proposing a lane for each. |
| pick_for_tonight | Suggest three games to play tonight, with reasons from the couch score. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| scoring_resource | The couch score's rules, term by term, as the dashboard computes them. |
TDQS
Scored across 10 tools
Each tool targets a distinct resource+action: search (find_games), single-game detail (get_game), summary (get_overview), recommendation (suggest_picks), queue read vs. reorder, note write, lane write, and export start vs. status. The descriptions explicitly cross-reference each other (e.g. find_games says to use suggest_picks for recommendations), eliminating the main potential overlap.
All ten tools share the backlog_ prefix and follow a consistent snake_case verb_noun pattern (find_games, get_game, set_lane, reorder_next, start_export). No mixed conventions or vague verbs.
Ten tools is well within the ideal 3-15 range and each maps to a clear, non-redundant capability for a backlog dashboard: read, filter, recommend, triage, annotate, order, and refresh. Nothing feels padded or missing a counterpart.
The lifecycle is well covered: overview, filtered search, per-game detail, ranked picks, lane transitions, note management (including clearing), queue ordering, and export start/status. Minor gaps exist (no dedicated lane-listing beyond filter-by-lane in find_games, no batch note operations), but agents can work around them.