Steam MCP
Provides tools for accessing a Steam library via the Steam Web API, including resolving SteamIDs, retrieving player profiles, listing owned and recently played games, searching for games by name, and viewing achievement status, rarity, unlock dates, and progress.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Steam MCP
An MCP server that gives Claude access to a Steam library: which games you own, what you have been playing, which achievements you have and have not unlocked, and how rare they are. It exists so Claude can help you hunt achievements: what is left, what is easy, what is brutal, and how to get it.
The server only returns data from the Steam Web API. Advice, priorities and guides come from Claude, which works from that data and can search the web for a specific achievement.
Security
The server has no authentication. Anyone who can reach /mcp can call its tools using your Steam
API key, and /health returns your default SteamID.
It listens on all network interfaces, so keep the port firewalled. If you expose it to the internet
(a tunnel, a reverse proxy), treat the URL as a secret or put access control in front of it. Never
commit .env.
Related MCP server: steam-mcp
Features
Library: every game on the account, with playtime.
Recent games: what was played in the last 2 weeks.
Achievements per game: locked and unlocked, names, descriptions, unlock dates.
Rarity: the global unlock percentage of each achievement.
Game search: find an
appidby name, using a cached copy of the Steam app list.Profile lookup: get a SteamID64 from a nickname, a vanity URL or a profile link.
Requirements
Node.js 20.12 or newer.
A Steam Web API key, free from https://steamcommunity.com/dev/apikey. The "Domain Name" field is only a label, so
localhostworks. The key is permanent and tied to your account, so keep it secret.A SteamID64, the 17-digit account ID. If you don't know yours, the
resolve_steam_idtool finds it from a nickname or profile link.A public profile. In Steam, set Privacy → "Game details" to Public. Otherwise the Web API returns neither the game list nor achievements.
Setup
npm install
npm run build
cp .env.example .env # then fill in your valuesVariable | Required | Purpose |
| yes | Your Steam Web API key. |
| no | Default player. Without it, pass |
| no | Language of achievement names and descriptions. Default: |
| no | HTTP port. Default: |
| no | Where the app list is cached. Default: |
Running
npm start # runs dist/index.js, serving http://localhost:3846/mcp
npm run dev # runs from source with tsx, no build stepCheck that it is up:
curl -s localhost:3846/health
# {"status":"ok","hasApiKey":true,"defaultSteamId":"7656...","cache":{"entries":N}}Environment variables are read at startup, so restart the server after editing .env.
Connecting to Claude
Claude Code:
claude mcp add --transport http steam http://localhost:3846/mcpclaude.ai: go to Settings → Connectors → Custom connector and enter your server's public URL. This
requires exposing the server to the internet, so read Security first. The URL must
include the /mcp path. Without it, the connector posts to /, gets a 404, assumes authorization
is required, and fails with "Couldn't register…".
Tools
steam_id is always optional and falls back to STEAM_ID.
Tool | Parameters | What it does |
|
| Nickname, |
|
| Profile: name, avatar, online status, current game. |
|
| The whole library with playtime. |
|
| Games from the last 2 weeks, with recent and total playtime. |
|
|
|
|
| A game's achievements: name, description, status and date, |
The most useful call is get_player_achievements with filter=locked and sort=rarity. It lists your
remaining achievements from most common (usually easiest) to rarest.
Example prompts
"What have I played in the last 2 weeks?"
"Show my top 10 games by playtime."
"Which achievements are easiest to finish in Kingdom Come: Deliverance II? Give a short guide for each."
"How many achievements are left in Baldur's Gate 3, and which are the rarest?"
"Find the appid for Hollow Knight and show my achievement progress."
"Of my recent games, which one am I closest to 100% in?"
How it works
The server speaks stateless Streamable HTTP MCP, built with TypeScript, the official
@modelcontextprotocol/sdk and Express. Each request gets a fresh transport with no session ID, which
is what the claude.ai web connector accepts most reliably. Each tool wraps one or more Steam Web API
calls and returns cleaned-up JSON.
Mapping appids to names
Your own games need no mapping:
GetOwnedGameswithinclude_appinfo=truealready returns names.Searching by name uses
IStoreService/GetAppList/v1/. Steam removed the old keylessISteamApps/GetAppList, which now returns 404, so this needs an API key and paginated downloads. The list is large, so it is cached on disk for 24 hours.
Hidden achievements
For hidden achievements, Steam deliberately withholds the description until you unlock them, both
in GetSchemaForGame and on the community pages. Only the name, rarity and hidden flag are available.
That is enough for Claude to find a guide by name. The descriptions do exist in the client's
UserGameStatsSchema_<appid>.bin file, but this server doesn't read it, to avoid fragile parsing with
incomplete coverage.
Project structure
src/
├── index.ts # MCP server, tool registration, Express + Streamable HTTP
├── steam.ts # Steam Web API client
├── format.ts # cleans up games, merges achievements (schema + status + rarity)
└── cache.ts # TTL cache with disk persistenceLicense
This server cannot be deployed
Maintenance
Related MCP Connectors
Steam profiles, SteamID conversion, bans, FACEIT stats, friends and comparisons. Free, no API key.
Steam backlog, account value, buy-or-skip verdicts and Steam Machine checks. Hosted, keyless.
Teamfight Tactics data & AI coaching for Claude and ChatGPT — 19 tools, built-in Riot key.
Live Steam market data for AI agents: top sellers, deals, player counts. Paid per call via x402.
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
- AlicenseAqualityBmaintenanceExposes Steam Web API tools as MCP resources for Claude Code, Claude Desktop, and Gemini CLI, enabling profile lookups, game searches, achievement tracking, and more.1120 npm1MIT
- FlicenseNot gradedqualityDmaintenanceProvides access to your Steam game library data through Claude Desktop, enabling game search, filtering, details, recommendations, and statistics.7-
- AlicenseAqualityAmaintenanceEnables interaction with Steam: search games, get store details, reviews, prices, discounts, news, and player profiles, libraries, and achievements via the Steam Web API.26344 npm5MIT