Skip to main content

Read-only Steam MCP server (bring-your-own-key) for friends, games, playtime, achievements, sales, reviews, and live player counts.

Project description

Steam MCP

A read-only Model Context Protocol server for the public Steam Web API and storefront. It lets any MCP-compatible AI client (Claude Desktop, Claude Code, etc.) answer questions about Steam — your friends, games, playtime and achievements, plus account-independent things like sales, reviews, ratings, live player counts, and patch notes.

Bring your own key (BYOK): each user supplies their own free Steam Web API key via an environment variable. Nobody logs in, and no credentials pass through this server beyond the key you set yourself.


What it can answer

Account / profile (needs a public profile):

  • "Who's on my Steam friends list, and who's online right now?"
  • "Which of my friends own Helldivers 2 — and who's playing it right now?"
  • "What's my most-played game, and how many hours?"
  • "Which achievements am I still missing in Hollow Knight?"
  • "What are my career stats in Team Fortress 2?"
  • "What are my rarest achievements in Hollow Knight?"
  • "What's my Steam level?" / "Does this account have any VAC bans?"
  • "What's on my wishlist, and is any of it on sale right now?"
  • "Analyze my library — what's my backlog and what have I abandoned?"

Account-independent (works for any game, no SteamID needed):

  • "Is Baldur's Gate 3 any good? What's its review score?"
  • "What's on sale on Steam right now?" / "What are the current top sellers and new releases?"
  • "How many people are playing Counter-Strike 2 this minute?"
  • "What was in the latest Dota 2 update?"
  • "How much does Hades II cost and what genres is it?"
  • "What DLC does Cities: Skylines have, and is any of it on sale?"
  • "Is Elden Ring a soulslike? What are its community tags?"

Tools

Tool What it returns Needs key?
steam_resolve_vanity_url Vanity name / profile URL → SteamID64 yes
steam_get_player_summary Status (Online/Away/In-Game…), current game, for 1–100 users yes
steam_get_friend_list Friends enriched with name + live status yes
steam_find_friends_who_own Which friends own (or are playing) a game — "who can I play X with" yes
steam_get_owned_games Owned games with total/recent hours (sortable) yes
steam_analyze_library Backlog, playtime distribution, abandoned games across a whole library yes
steam_get_recently_played_games Last-2-weeks playtime yes
steam_get_steam_level Steam community level yes
steam_get_player_bans VAC / game / community / economy bans yes
steam_get_player_achievements Per-game unlocked vs locked achievements yes
steam_get_game_schema A game's full achievement/stat definitions yes
steam_get_global_achievement_percentages Achievement rarity (global %) no
steam_get_user_game_stats A user's in-game stats (kills, wins, distance…) for a game yes
steam_get_rarest_unlocks A player's rarest achievement unlocks in a game (by global rarity) yes
steam_search_apps Game title → appid (+ price) no
steam_get_app_details Full store details — play modes/co-op, controller, DLC, languages, requirements, Metacritic no
steam_get_dlc A game's DLC, with live prices and what's on sale no
steam_get_app_tags A game's top community tags (Souls-like, Roguelike, Cozy…) no
steam_get_app_reviews Lifetime verdict, +/- counts, sample reviews; optional recent (last-N-days) score via review_filter='recent' no
steam_get_featured_specials Games currently on sale (regional) no
steam_get_store_highlights Top sellers, new releases, or coming soon no
steam_get_wishlist A user's wishlist, with live prices + what's on sale yes
steam_get_player_badges Badges + the XP breakdown behind a Steam level yes
steam_get_package_details Package/bundle price + included games no
steam_compare_players Shared games between two users, with playtime yes
steam_get_current_players Live concurrent player count no
steam_get_app_news Recent news / patch notes no

Every tool supports response_format: "markdown" (default, human-readable) or "json" (structured), and all are annotated readOnlyHint: true.

Recent reviews: Steam's API only exposes a lifetime review summary — there is no "last 30 days" field. So steam_get_app_reviews with review_filter='recent' computes that score itself by paginating the newest reviews within day_range days (default 30). For games with a very high volume of recent reviews it counts up to ~600 and marks the result sampled: true.


Setup

1. Get a free Steam Web API key

Visit https://steamcommunity.com/dev/apikey, sign in, register a domain (any domain you control works; localhost is commonly used for personal keys), and copy the key. Usage is governed by the Steam Web API Terms of Use.

2. Install

git clone https://github.com/Sarg338/steam-mcp.git
cd steam-mcp
pip install -e .          # or: pip install -r requirements.txt

Requires Python 3.10+.

3. Add it to your MCP client

The server reads the key from the STEAM_API_KEY environment variable.

Claude Desktop — edit claude_desktop_config.json (%APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS):

{
  "mcpServers": {
    "steam": {
      "command": "python",
      "args": ["-m", "steam_mcp.server"],
      "env": { "STEAM_API_KEY": "YOUR_KEY_HERE" }
    }
  }
}

Claude Code (CLI):

claude mcp add steam --env STEAM_API_KEY=YOUR_KEY_HERE -- python -m steam_mcp.server

If you installed with pip install -e ., you can use the steam-mcp console script as the command instead of python -m steam_mcp.server.

Restart your client and the Steam tools appear.


Development

pip install -e ".[dev]"
pytest -q                                     # run the test suite (no network needed)
ruff check .                                  # lint (also enforced in CI)
python -m py_compile steam_mcp/server.py      # syntax check
npx @modelcontextprotocol/inspector python -m steam_mcp.server   # interactive test

Static storefront/API responses (app & package details, store highlights, game schemas, global achievement percentages) are cached in-memory with a short TTL to ease the rate limit and speed up tools that fan out many lookups. Live data (player status, current players, wishlists, friends) is never cached. All requests share one pooled HTTP client, and the fan-out tools (wishlist, DLC) enrich entries concurrently with bounded parallelism, so they resolve quickly. Prices are shown in the requested country's currency. See CHANGELOG.md for release history.

License

MIT. Not affiliated with Valve. "Steam" is a trademark of Valve Corporation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

steam_mcp-0.8.1.tar.gz (40.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

steam_mcp-0.8.1-py3-none-any.whl (33.5 kB view details)

Uploaded Python 3

File details

Details for the file steam_mcp-0.8.1.tar.gz.

File metadata

  • Download URL: steam_mcp-0.8.1.tar.gz
  • Upload date:
  • Size: 40.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for steam_mcp-0.8.1.tar.gz
Algorithm Hash digest
SHA256 f9715b62fea4f0c43179c9cc9980978620d9742ee92ec1b4e7dc7339f1fcb19c
MD5 415317edc690fbce7505512a2cab370a
BLAKE2b-256 82e8459c9a42bc54b2d242d3e3276acf44f78db6775fb0902251ef2bbccc76fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for steam_mcp-0.8.1.tar.gz:

Publisher: publish.yml on Sarg338/steam-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file steam_mcp-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: steam_mcp-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 33.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for steam_mcp-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9d487804feb1da3d9816a7d41174cb01674e155509723f6b620b267b5249d727
MD5 e451c70bdb7aa4cc3ea991a53902cd55
BLAKE2b-256 df31174581362fd69bd4f8ba78d3615ce83a03a1d687c878419dc0630fa62fa1

See more details on using hashes here.

Provenance

The following attestation bundles were made for steam_mcp-0.8.1-py3-none-any.whl:

Publisher: publish.yml on Sarg338/steam-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page