Atlas / MCP servers / sarg338 / steam-mcp

steam-mcpSAFE

mcp/sarg338/steam-mcp

Read-only Steam MCP server for AI agents: 41 tools + prompts + resources across library, friends, achievements, store, reviews, sales, discovery, recommendations, and co-op planning. Official Steam Web API, bring-your-own-key, open source. On PyPI + the MCP Registry.

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
20 18r · 2w · 0d
Transport
stdio
License
NOASSERTION
Stars
7
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://pypi.org/project/steam-mcp/) [](https://pypi.org/project/steam-mcp/) [](https://github.com/Sarg338/steam-mcp/actions/workflows/ci.yml) [](LICENSE) [](https://registry.modelcontextprotocol.io)

A read-only Model Context Protocol server for the public Steam Web API and storefront — 41 tools, 5 prompts, and 2 resources that let any MCP client (Claude Desktop, Claude Code, Cursor, ...) answer questions about Steam: your friends, games, playtime, and achievements, plus account-independent things like sales, reviews, live player counts, Steam Deck compatibility, discovery, recommendations, and co-op planning.

Read-only · official Steam APIs only · open source. Nobody logs in, and the server never writes, trades, posts, launches games, or makes purchases.

Quick start — no API key needed

Install `uv`, then:

Claude Code

claude mcp add steam -- uvx steam-mcp

That's the whole setup. 19 of the 41 tools work with no credential at all — anything about the store or a game itself:

"Is Baldur's Gate 3 worth buying, and how are its recent reviews trending?" "What co-op games are on sale under £20 right now?" "How many people are playing Helldivers 2 this minute?" "Will Hades II run properly on my Steam Deck?"

The three game-finders (steam_discover, steam_should_i_buy, steam_recommend) work without a key too, as long as you don't personalize them.

Adding your own account

A [free Steam Web API key](https://steamcommunity.com/d

Read from source at commit b7c6df1524e4OBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (pypi)
claude mcp add steam-mcp --env STEAM_API_KEY=${STEAM_API_KEY} -- uvx steam-mcp==1.19.0
03

Exposed tools (20)

18 read · 2 write · 0 destructive.

ToolRiskDescription
steam_analyze_app_reviewsreadAnalyze thousands of a game
steam_compare_gamesreadCompare 2-5 games side by side — price, reviews and their trend, players now, Deck, co-op, tags — for
steam_discoverreadDiscover games by criteria — tags, max price, on-sale, platform — optionally personalized to a user
steam_get_app_detailsreadGet comprehensive store details for a game — the best
steam_get_app_newswriteGet recent news/update posts for a game (patch notes, announcements).
steam_get_app_regional_pricingreadCompare a game
steam_get_app_reviewsreadGet the review score and sample reviews for a game (lifetime and/or recent).
steam_get_app_tagsreadGet a game
steam_get_current_playersreadGet the number of players currently in-game for a title (live concurrency).
steam_get_deck_compatibilityreadSteam Deck rating for a game: Verified, Playable, Unsupported, or Unknown.
steam_get_dlcreadList a game
steam_get_featured_specialsreadList games currently ON SALE (featured specials) on the Steam store.
steam_get_game_schemareadGet the achievement and stat definitions for a game (not user-specific).
steam_get_global_achievement_percentagesreadGet the global unlock percentage (rarity) of each achievement in a game.
steam_get_market_pricereadGet the Community Market price for a single item, with rarity and condition.
steam_get_package_detailsreadGet store details for a Steam package (a sub/bundle of one or more games).
steam_get_store_highlightsreadList a Steam storefront section: top sellers, new releases, or coming soon.
steam_get_update_impactwriteShow how a game
steam_get_workshop_itemreadGet metadata for a Steam Workshop item (mod, map, guide, collection, ...).
steam_search_appsreadLook up a game
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (3 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (9)

LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcpbignore
.mcpbignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/test_steam_mcp.py:1178
"http://169.254.169.254/latest/meta-data"):
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/test_steam_mcp.py:1193
for bad in ("http://169.254.169.254/latest/meta-data",  # cloud metadata
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/test_steam_mcp.py:1231
"https://steamcommunity.com/profiles/[email protected]"))
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/test_steam_mcp.py:1178
"http://169.254.169.254/latest/meta-data"):
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/test_steam_mcp.py:1193
for bad in ("http://169.254.169.254/latest/meta-data",  # cloud metadata
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
requirements.txt
mcp, httpx2, pydantic
Why it matters. 3 requirement(s) not pinned with ==
Fix. pin exact versions
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
SECURITY.md:18
read from the `STEAM_API_KEY` environment variable. It is never written to disk,
Why it matters. asks the agent to read credentials
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
llms-install.md:10
- macOS / Linux: `curl -LsSf https://astral.sh/uv/install.sh | sh`

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha b7c6df1524e4full audit observations/trust-audit/mcp-server/sarg338__steam-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-10b7c6df1524e4SAFEB89first audit
06

Questions

What is the steam-mcp MCP server?

Read-only Steam MCP server for AI agents: 41 tools + prompts + resources across library, friends, achievements, store, reviews, sales, discovery, recommendations, and co-op planning. Official Steam Web API, bring-your-own-key, open source. On PyPI + the MCP Registry.

What tools does steam-mcp expose?

20 in total: 18 read-only, 2 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is steam-mcp safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does steam-mcp need?

It reads STEAM_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does steam-mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as steam-mcp.

How current is this page?

The grade is for one exact copy of the source (b7c6df1524e4), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement