{"name":"io.github.Grinv/steam-games-mcp","slug":"grinv-steam-games-mcp","title":"Steam MCP Server","description":"Steam store/game data (no key) plus player profiles, libraries and achievements (Steam Web API).","url":"https://mcp.market/server/grinv-steam-games-mcp","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"ecommerce","tags":["ecommerce"],"presence":{"score":35,"stars":4,"forks":1,"downloads_week":121,"last_push_at":"2026-09-20T06:23:05.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Grinv/steam-games-mcp","website":"https://github.com/Grinv/steam-games-mcp#readme","version":"0.14.0","remotes":[],"packages":[{"registryType":"npm","identifier":"steam-games-mcp","version":"0.14.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Free Steam Web API key (optional). Unlocks player profile, library and achievement tools.","isSecret":true,"name":"STEAM_API_KEY"},{"description":"Default player: 17-digit SteamID64 or vanity name (the part after /id/).","name":"STEAM_ID"},{"description":"Two-letter ISO country code for store prices (e.g. US, GB, DE).","default":"US","name":"STEAM_COUNTRY"},{"description":"Store language (e.g. english, russian, german).","default":"english","name":"STEAM_LANGUAGE"}]},{"registryType":"mcpb","identifier":"https://github.com/Grinv/steam-games-mcp/releases/download/v0.14.0/steam-games-mcp.mcpb","version":"0.14.0","fileSha256":"00c7c8d9fa9b1bd8d5b7cc4de9203c9ec2bee4b36e022fe9e43b6a1bab4da107","transport":{"type":"stdio"},"environmentVariables":[{"description":"Free Steam Web API key (optional). Unlocks player profile, library and achievement tools.","isSecret":true,"name":"STEAM_API_KEY"},{"description":"Default player: 17-digit SteamID64 or vanity name (the part after /id/).","name":"STEAM_ID"},{"description":"Two-letter ISO country code for store prices (e.g. US, GB, DE).","default":"US","name":"STEAM_COUNTRY"},{"description":"Store language (e.g. english, russian, german).","default":"english","name":"STEAM_LANGUAGE"}]}],"tools":[{"name":"compare_players","description":"Find 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"discover_games","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_friends_who_own","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_current_players","description":"Get 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_featured","description":"Get 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_followed_games","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_friend_list","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_game","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_game_achievements","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_game_news","description":"Get 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_game_reviews","description":"Get 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 ","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_global_achievements","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_items","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_owned_games","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_player_achievements","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_player_bans","description":"Check 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 ","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_player_summary","description":"Get 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_prices","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_recently_played","description":"List 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","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_recommended_games","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_review_histogram","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_specials","description":"List 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_wishlist","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_vanity_url","description":"Convert 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_games","description":"Search 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","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":75,"grade":"B","scanned_at":"2026-09-20T11:35:37.131Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:35:37.065Z","components":{"code":{"score":20,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/index.js: …&(A=this.opts.code.process(A,y));let ee=new Function(`${o.default.self}`,`${o.default.scope}`…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"steam-games-mcp","version":"0.14.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-09-20T06:25:03.624Z","repositoryUrl":"git+https://github.com/Grinv/steam-games-mcp.git","weeklyDownloads":121}],"repo":{"found":true,"owner":"Grinv","repo":"steam-games-mcp","archived":false,"pushedAt":"2026-09-20T06:23:05Z","stars":4,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/4070730?v=4","ownerCreatedAt":"2013-04-05T16:23:24Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/4070730?v=4&s=128","source":"github"},"presence":{"stars":4,"forks":1,"downloadsWeek":121,"license":"MIT","lastPushAt":"2026-09-20T06:23:05.000Z","score":35}}}},"grade_history":[],"reviews":[]}