steam-mcp
Provides integration with the Steam Web API to fetch player profiles, owned games, achievements, store app details, reviews, search, news, and more from Steam.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@steam-mcp How many hours have I put into Team Fortress 2?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
steam-mcp
An MCP server that exposes the Steam Web API to any AI harness — Claude Desktop, Claude Code, Cursor, Cline, Windsurf, or anything that speaks the Model Context Protocol.
Ask your assistant things like "How many hours have I put into Team Fortress 2?", "What are the most-played games my friend owns?", or "Summarize the reviews for Baldur's Gate 3" — and it fetches the answer live from Steam.
Why
The Steam Web API is powerful but sprawling: dozens of interfaces, inconsistent shapes, 64-bit SteamIDs, an undocumented store API, and a mandatory key for anything player-related. steam-mcp wraps the useful parts behind a small, well-documented set of workflow-oriented MCP tools that return LLM-friendly, token-efficient responses.
Related MCP server: mcp-server-steam
Quickstart
You need a Steam Web API key for player/profile tools. Get one (free) at https://steamcommunity.com/dev/apikey. Store tools (app details, reviews, search) work without a key.
Run it straight from GitHub with no install using uv
(works today — PyPI release pending):
STEAM_API_KEY=xxxxxxxx uvx --from git+https://github.com/rachittshah/steam-mcp steam-mcpOr install it from source:
uv pip install git+https://github.com/rachittshah/steam-mcp
# once published to PyPI: uv pip install steam-mcpClaude Desktop / Claude Code
Add to your MCP config (claude_desktop_config.json, or .mcp.json for Claude Code):
{
"mcpServers": {
"steam": {
"command": "uvx",
"args": ["--from", "git+https://github.com/rachittshah/steam-mcp", "steam-mcp"],
"env": { "STEAM_API_KEY": "your-key-here" }
}
}
}(After a PyPI release the args simplify to ["steam-mcp"].)
Cursor / Cline / Windsurf
Point the MCP server command at the same uvx --from git+... steam-mcp invocation and
set STEAM_API_KEY in the environment. See docs/clients.md for
per-client instructions.
Configuration
Variable | Required | Default | Description |
| for player tools | — | Steam Web API key. |
| no |
| HTTP request timeout (seconds). |
| no |
| Language for localized store responses. |
| no |
| ISO country code for store pricing. |
Tools
The full, generated tool reference lives in docs/tools.md. Highlights:
Identity —
resolve_vanity_url,get_player_summary,get_player_bans,get_steam_levelLibrary —
get_owned_games,get_recently_played_games,get_friend_listAchievements & stats —
get_player_achievements,get_game_schema,get_global_achievement_percentages,get_current_player_countStore —
get_app_details,get_app_reviews,search_storeNews —
get_news_for_app
Example prompts
Once connected, try asking your assistant:
"How many people are playing Counter-Strike 2 right now?" →
search_store→get_current_player_count"What's the rarest achievement in Team Fortress 2?" →
get_global_achievement_percentages"Summarize the recent reviews for Elden Ring." →
search_store→get_app_reviews"Whose profile is steamcommunity.com/id/gabelogannewell, and what are they playing?" →
get_player_summary"What are my 5 most-played games?" (needs your SteamID) →
get_owned_games"Any recent patch notes for Dota 2?" →
get_news_for_app
Development
git clone https://github.com/rachittshah/steam-mcp
cd steam-mcp
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
ruff check . && mypy src && pytestContributing
Contributions welcome — see CONTRIBUTING.md.
License
MIT © Rachitt Shah. Not affiliated with or endorsed by Valve Corporation. Steam and the Steam logo are trademarks of Valve Corporation.
Available Tools
15 toolsget_app_detailsARead-onlyIdempotent
Get full store details for a game/app by appid.
Returns type, description, developers/publishers, release date, price, genres, platforms, Metacritic score, and review recommendation count. No API key required. Use search_store first if you only have a name.
Inputs: appid (required). Returns: result
get_app_reviewsARead-onlyIdempotent
Summarize store reviews for a game and show a sample of recent ones.
Returns the overall review label (e.g. "Very Positive"), positive/total counts, and a sample of recent reviews with their up/down vote and the reviewer's playtime. No API key required.
Inputs: appid (required), limit, review_type. Returns: result
get_current_player_countARead-onlyIdempotent
Get the number of players currently in a game, right now.
Returns the live concurrent player count for an app. Great for "how many people are playing X right now?". No API key required. Use search_store to find the appid from a game name.
Inputs: appid (required). Returns: result
get_friend_listARead-onlyIdempotent
List a player's friends, newest-friended first, with names.
The friend list must be public. Names are resolved in one batch call. Requires an API key.
Inputs: steam_id (required), limit. Returns: result
get_game_schemaARead-onlyIdempotent
Get a game's achievement and stat definitions (its schema).
Returns the game's display name, the count and names of its achievements, and any tracked stats. Use this to learn what achievements exist before checking a player's progress. Requires an API key.
Inputs: appid (required). Returns: result
get_global_achievement_percentagesARead-onlyIdempotent
Show how rare each achievement is across all players of a game.
Returns achievements sorted from rarest to most common (global unlock percentage). Great for "what's the rarest achievement in X?". No API key required.
Inputs: appid (required). Returns: result
get_news_for_appARead-onlyIdempotent
Get the latest news / patch notes for a game.
Returns recent announcements with title, source feed, date, a short excerpt, and a link. No API key required. Use search_store to find the appid from a game name.
Inputs: appid (required), count. Returns: result
get_owned_gamesARead-onlyIdempotent
List the games a player owns, with total playtime per game.
Returns a ranked table plus library-wide totals (game count and summed hours). The profile's game details must be public. Requires an API key.
Use sort='recent' to answer "what have they been playing lately?" and
limit to control response size.
Inputs: steam_id (required), sort, limit. Returns: result
get_player_achievementsARead-onlyIdempotent
Show a player's achievement progress in one game.
Returns overall completion (unlocked / total) and a list of unlocked achievements with dates. The profile must be public and must own the game. Requires an API key.
Inputs: appid (required), steam_id (required). Returns: result
get_player_bansARead-onlyIdempotent
Check a player's VAC, game, economy, and community ban status.
Useful for trust/reputation questions. Requires an API key.
Inputs: steam_id (required). Returns: result
get_player_summaryARead-onlyIdempotent
Fetch a player's public profile summary.
Returns persona name, online state, profile visibility, account creation date, country, and the game they're currently playing (if public). Private profiles return limited fields. Requires an API key.
Inputs: steam_id (required). Returns: result
get_recently_played_gamesARead-onlyIdempotent
List games a player has played in the last two weeks.
Returns each game with its 2-week and lifetime playtime. The profile must be public. Requires an API key.
Inputs: steam_id (required), count. Returns: result
get_steam_levelARead-onlyIdempotent
Get a player's Steam community level. Requires an API key.
Inputs: steam_id (required). Returns: result
resolve_vanity_urlARead-onlyIdempotent
Resolve a Steam custom (vanity) URL name to its SteamID64.
Use this when you only have a person's custom URL name and need the numeric id that other tools consume. Requires an API key.
Returns the SteamID64 in all common formats, or a not-found message.
Inputs: vanity (required). Returns: result
search_storeARead-onlyIdempotent
Search the Steam store by name and return matching apps with appids.
This is the entry point for most store workflows: turn a game name the user mentioned into the appid that get_app_details, get_app_reviews, and the stats tools require. No API key required.
Inputs: term (required), limit. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Each tool targets a distinct resource and action: player basics, friend lists, owned games, achievements, store search, reviews, and news. The only potential overlap is between owned games and recent playtime, but the descriptions make the timeframe distinction clear.
All tool names follow the same verb_noun snake_case pattern (get_, search_, resolve_). Even the two non-get verbs are still consistent with the pattern, resulting in a very predictable and uniform API surface.
15 tools is at the upper end of the ideal range, but every tool covers a meaningful feature: player info, game stats, store details, and reviews. No tool feels redundant, and the count aligns well with Steam's broad domain.
The set covers the major workflows: resolving users, fetching profiles/bans/friends, listing owned and recent games, checking achievements, and getting store details/reviews/news. Minor gaps exist (e.g., no wishlist access or player review listing), but these are not dead ends for standard queries.
Maintenance
Related MCP Connectors
Steam games, Dev.to articles, events and podcasts as agent tools.
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
Web search, data extraction and controlled browser automation for AI assistants via OAuth.
Query your Twitch streams, events, supporters, raids & rankings from an AI assistant via OAuth.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides tools for interacting with the Steam Web API to access player profiles, game libraries, achievements, statistics, inventories, and game information through natural language.3458 npm5MIT
- AlicenseAqualityDmaintenanceIntegrates with Steam Web API to enable querying user profiles, game libraries, store data, and community features like reviews and workshop items.16MIT
- AlicenseAqualityBmaintenanceEnables interaction with Steam: search games, get store details, reviews, prices, discounts, news, and player profiles, libraries, and achievements via the Steam Web API.26611 npm5MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to recommend Steam games from natural language by searching games, finding similar titles, filtering by tags and platform, and retrieving detailed game metadata.1MIT