Steam MCP Server
Steam store/game data (no key) plus player profiles, libraries and achievements (Steam Web API).
4 stars121 downloads/wk
Reviews
Write oneNobody has reviewed Steam MCP Server yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Steam MCP Server tools (25)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
compare_playersFind games two players both own, with each one's playtime \u2014 'what can my friend and I both play', 'do we have anything in common'. Checks each player's FULL library to find every shared game, unlike get_owned_games whose own list stops at … by playtime by default \u2014 but the returned list here is itself capped at the top … shared games by combined playtime (check `returned` vs `shared_coun
discover_gamesfind_friends_who_ownget_current_playersGet how many people are playing a game right now (live concurrent player count) by appid. Get the appid from search_games. No API key required. Errors clearly if the appid is unknown/invalid rather than returning a null count.
get_featuredGet the Steam store's featured sections: specials, top sellers, new releases and coming soon (each a list of games with appid and price), all in one call \u2014 for a general 'what's on the store front page' overview. For just current discounts use get_specials (lighter), or discover_games for catalog-wide deals with filters. No API key required.
get_followed_gamesget_friend_listList a player's Steam friends by SteamID64: name, online state, current game and how long they've been friends, most-recently-added first (capped at the … most-recently-added; check `returned` vs `total`). Requires STEAM_API_KEY and the friends list to be public \u2014 otherwise it returns found:false, which also covers a SteamID64 with no account behind it; read `reason`. For 'which of my friends
get_gameget_game_achievementsget_game_newsGet recent news / patch notes for a game by appid (title, date, author, excerpt, link). Each excerpt is the first ~400 characters of the post with HTML stripped \u2014 follow `url` for the full text. An unknown/unassigned appid comes back as an empty list rather than an error, the same as get_global_achievements. Get the appid from search_games. No API key required.
get_game_reviewsGet the review summary (score label, positive/negative counts, %) and a few recent reviews for a game by appid. Review text over 600 characters is truncated. An unknown appid comes back as summary 'No user reviews' with zero counts rather than an error \u2014 Steam answers success for any id \u2014 so that result means either no such appid or a game nobody has reviewed yet; confirm the appid with
get_global_achievementsGet the global unlock percentage of each achievement in a game by appid \u2014 how rare each achievement is across all players. Returns each achievement's internal name and its unlock percent (no display names/descriptions \u2014 for those, use get_game_achievements), most-common first, capped at the first … (check `returned` vs `count` \u2014 most games have far fewer). An unknown appid, or one w
get_itemsget_owned_gamesget_player_achievementsget_player_bansCheck a player's VAC, game, community and economy (trade) ban status by SteamID64 \u2014 'is this player banned', useful before trading or adding a friend. Ban status is always public \u2014 this works even when the rest of the profile is private. `days_since_last_ban` is null for a player who has never been banned \u2014 Steam sends 0 there, which would otherwise read as 'banned today'. Requires
get_player_summaryGet a player's profile by SteamID64: display name, online state, country, account age, Steam level (a separate lookup that degrades to null on failure, independently of profile privacy), and the game they're currently in. found:false here means exactly one thing \u2014 no account with that SteamID64 \u2014 since this tool reads private profiles fine. Requires STEAM_API_KEY, but works even for a pr
get_pricesget_recently_playedList the games a player has played in the last two weeks, with recent and total playtime, most-played-in-those-two-weeks first (capped at …; check `returned` vs `total`) \u2014 the ordering is what decides which games the cap keeps, and it is playtime, not recency. For the all-time library by playtime instead (capped at … entries by default, either end of that ordering via `sort`), use get_owned_g
get_recommended_gamesget_review_histogramget_specialsList games currently on special (discounted) on the Steam store front page, with the discount % and original/final price. For ALL catalog discounts (not just the front page), use discover_games with min_discount. No API key required.
get_wishlistresolve_vanity_urlConvert a Steam custom (vanity) profile name \u2014 the part after /id/ in a profile URL \u2014 into the 17-digit SteamID64 that the player tools need. Requires STEAM_API_KEY. Returns found:false if the name doesn't resolve to a profile.
search_gamesSearch the Steam store by title \u2014 term can be partial or approximate, not an exact match; returns matches with their appid (needed by the other game tools), price, Metacritic score, platforms, type and a clickable store_url. Note `type` is Steam's storesearch value, which is 'app' for every store item \u2014 it does NOT distinguish a game from its DLC or soundtrack; call get_game on the appid
Public scan report
scanner v0.1.9 · 2026-09-20 · same rubric, same numbers if you re-run it
- Code scan2 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 0 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (1)
- mediumeval / new Function used
exec.evaldist/index.js: …&(A=this.opts.code.process(A,y));let ee=new Function(`${o.default.self}`,`${o.default.scope}`…
Install directly
Runs npx -y steam-games-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add steam-games-mcp -- npx -y steam-games-mcp
Steam MCP Server: common questions
- Is Steam MCP Server safe?
- Mostly: it is graded B (75/100). Read the Steam MCP Server safety report
- How do I install Steam MCP Server?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Steam MCP Server need an API key?
- Yes. The registry entry asks for
STEAM_API_KEY. - Is Steam MCP Server maintained?
- The last commit was in the last day (2026-09-20). The latest release is v0.14.0.
- What can I use instead of Steam MCP Server?
- Servers from other publishers that do the same job: Heimdall MCP server, Sherweb MCP server and Apify MCP server. Compare all Steam MCP Server alternatives.
Alternatives to Steam MCP Server
Same job from other publishers: the closest match first, then the best rated.
- HeimdallEvery App Store Connect + StoreKit 2 endpoint. 890 tools in 13 profiles, narrow to 27.not reviewedEstablishedB
Sherweb MCPEvery Sherweb Partner API capability, plus a local SQLite store, offline analytics, andnot reviewedGrowingB- ApifyExtract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡not reviewedEstablishedA
- WorkflowsStore, query, and create YAML workflow playbooks for LLM agents.not reviewedGrowingA
- HasData AmazonAmazon keyword search, product details, seller profiles and seller catalogues, as structured JSON.not reviewedGrowingA