steam-mcp
steam-mcp
MCP server exposing Steam Web API tools to Claude Code, Claude Desktop and Gemini CLI.
Installation
One-liner (no clone needed)
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/stealthsrc/steam-mcp/main/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/stealthsrc/steam-mcp/main/install.ps1 | iexThe installer will:
Clone the repo and build it
Ask for your Steam API key (get one free at https://steamcommunity.com/dev/apikey)
Register the MCP server with Claude Code
Install all
/steam:*slash commands
Restart Claude Code after install to activate.
Prerequisites
Node.js 18+
Claude Code CLI
A Steam Web API key → https://steamcommunity.com/dev/apikey
Add to Claude Desktop
Edit your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"steam-mcp": {
"command": "node",
"args": ["/absolute/path/to/steam-mcp/dist/index.js"],
"env": {
"STEAM_API_KEY": "YOUR_KEY_HERE"
}
}
}
}Restart Claude Desktop after saving.
Add to Gemini CLI
Edit ~/.gemini/settings.json:
{
"mcpServers": {
"steam-mcp": {
"command": "node",
"args": ["C:/absolute/path/to/steam-mcp/dist/index.js"],
"env": {
"STEAM_API_KEY": "YOUR_KEY_HERE"
}
}
}
}Slash Commands (Claude Code)
Slash commands are available after adding this project to Claude Code. They chain multiple MCP tools automatically and return formatted results with clickable Steam links.
Command | Arguments | Description |
|
| Public profile + links to profile, friends, library |
|
| Search by name - price, Metacritic, live player count |
|
| Health report - price, Metacritic, player count + verdict |
|
| Full overview: profile + top games + recent activity + friends |
|
| Deep library analysis: backlog %, total hours, gamer profile |
|
| Achievement progress crossed with global rarity stats |
|
| Find games both players own - sorted by combined playtime |
|
| VAC/ban check for one or multiple players at once |
Examples
/steam:profile stealthylabs
/steam:game Battlefield 6
/steam:trend Rust
/steam:all gabelogannewell
/steam:library stealthylabs
/steam:achievements stealthylabs Resident Evil Requiem
/steam:coop stealthylabs gabelogannewell
/steam:vac gabelogannewell robinwalkerAvailable MCP Tools
Tool | Description |
| Convert a vanity URL (e.g. |
| Public profile: name, status, avatar, country, currently playing |
| Friend list with names and dates ( |
| VAC/game/community ban status for 1-100 accounts |
| Game library with playtime, sortable and filterable |
| Games played in the last 2 weeks |
| Player achievement progress - filter by |
| Global unlock rates (easiest/hardest achievements) |
| Full list of achievements and stats defined by a game |
| Search by name - returns AppID, price, Metacritic score |
| Number of players currently in-game for any app |
| Rich store details: price, reviews, genres, platforms, media, DLC |
| Export profile, bans, friends, library, recent activity, optional achievements |
| Infer play style, backlog, favorite genres/categories, top games |
| Broad Steam search across apps, games, DLC, software, demos with filters |
| Recommend unowned games from a player's Steam library and taste profile |
Example prompts
Look up the Steam profile for "stealthylabs"
What are my 10 most played games? (SteamID: 76561198XXXXXXXXX)
Show me the global achievement stats for Grand Theft Auto V Legacy
Which games have I bought but never launched?
Is Rust still worth buying in terms of player activity?
Export a Steam profile as JSON for analysis
Analyze what kind of games this Steam user likes: stealthylabs
Search Steam for Linux co-op games under $10
Recommend discounted games for this SteamID: 76561198XXXXXXXXXLocal test (without Claude Code)
# Test the server responds to MCP protocol
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | STEAM_API_KEY=YOUR_KEY node dist/index.js
# Or with .env file
npm start
# then pipe JSON manually or use MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.jsDevelopment
npm run dev # hot reload via tsx
npm run build # compile TypeScript → dist/
npm run lint # tsc type-check only
npm test # unit tests