npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@praeses/steam-mcp

v2.0.0

Published

MCP server for Steam game library management — 14 consolidated tools, minimal context footprint, local files + optional API

Readme

Steam MCP Server

npm version License: MIT

A feature-rich Model Context Protocol server that gives AI assistants full access to your Steam game library. Works on Linux, macOS, and Windows. 14 consolidated tools covering 66 actions — most work from local files with no API key needed. Optional Steam Web API key unlocks online data like achievements, friends, and full library access.

Works with Claude Desktop, Claude Code, or any MCP-compatible client.

What can it do?

Ask your AI assistant things like:

  • "What games do I have installed?"
  • "Search for ck3" → finds Crusader Kings III via abbreviation matching
  • "How much disk space is Steam using?" → full breakdown by game
  • "Find orphaned data I can clean up" → identifies leftover compatdata/shadercache
  • "What Proton version should I use for this game?"
  • "Install Hollow Knight" → looks up the appid and tells Steam to install it
  • "Pick a random game for me to play"
  • "Show my full play history" → all-time playtime across your entire library
  • "Import my Lutris games as Steam shortcuts"
  • "Show my achievements for Hades" → unlock status, completion %, global stats
  • "Who's online right now?" → friends list with online status and current games
  • "What's on my wishlist?"
  • "Show me reviews for Elden Ring"
  • "How long to beat Hollow Knight?"

Installation

npm (recommended)

npx @praeses/steam-mcp

No install needed — just add it to your MCP client config (see below).

Global install

npm install -g @praeses/steam-mcp

Then use steam-mcp as the command instead of npx @praeses/steam-mcp.

Configure with Claude Desktop

Add to your Claude Desktop config:

  • Linux: ~/.config/Claude/claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "steam": {
      "command": "npx",
      "args": ["@praeses/steam-mcp"],
      "env": {
        "STEAM_API_KEY": "your-key-here"
      }
    }
  }
}

Configure with Claude Code

Add a .mcp.json in your project root, or add to ~/.claude.json for system-wide access:

{
  "mcpServers": {
    "steam": {
      "command": "npx",
      "args": ["@praeses/steam-mcp"],
      "env": {
        "STEAM_API_KEY": "your-key-here"
      }
    }
  }
}

Note: The STEAM_API_KEY is optional. Most tools work without it. Only a few actions (achievements, friends, owned games, wishlist, profile) require it. Get your key at steamcommunity.com/dev/apikey.

Category filtering

To reduce context window usage further, enable only specific tool categories via the STEAM_TOOLS env var:

{
  "env": {
    "STEAM_TOOLS": "core,manage,compat"
  }
}

Available categories and their tools:

| Category | Tools | Description | |----------|-------|-------------| | core | games, library, steam_status | Game browsing, library stats, Steam status | | compat | proton, diagnostics | Proton/Wine compatibility, log parsing | | manage | game_control, game_config, shortcuts | Install/launch/verify, launch options, non-Steam shortcuts | | storage | storage | Disk usage, cleanup, shader cache, cloud saves, backups | | api | player, workshop | Player profile/achievements/friends, workshop items | | market | deals | Sale checks, wishlist, library valuation | | insights | insights | Completion stats, timeline, year review, play history, export | | content | game_info | Reviews, news, media, HLTB, PCGamingWiki fixes |

When unset, all categories are enabled (14 tools, ~3,200 tokens of context).

Prerequisites

  • Node.js 18+
  • Steam installed in the default location:
    • Linux: ~/.local/share/Steam/
    • macOS: ~/Library/Application Support/Steam/
    • Windows: C:\Program Files (x86)\Steam\

Proton/Wine tools (compatibility tracking, prefix inspection, crash logs) are Linux-only. All other tools work cross-platform.

Tools

Each tool uses an action parameter to select the operation. 14 tools cover 66 actions total.

games — Game discovery and browsing

| Action | Description | |--------|-------------| | list | List installed games with filtering, sorting, pagination | | get | Get full details for a game by appid | | search | Smart search with abbreviation matching (e.g. "ck3" → Crusader Kings III) | | compare | Compare two games side-by-side | | random | Pick a random installed game | | unplayed | Find games you own but haven't played |

library — Library folders and stats

| Action | Description | |--------|-------------| | list | List all Steam library folders with sizes and free space | | stats | Aggregate stats: total games, playtime, disk usage |

steam_status — Steam client status

| Action | Description | |--------|-------------| | status | Check if Steam is running | | queue | View current download queue | | progress | Check download progress for a game |

proton — Proton/Wine compatibility (Linux)

| Action | Description | |--------|-------------| | list_games | List all games using Proton/Wine with versions and prefix sizes | | info | Get compatibility details for a specific game | | versions | List installed Proton versions and which games use them | | db_rating | Fetch ProtonDB community rating | | recommend | Get a Proton version recommendation for a game | | prefix | Inspect Wine/Proton prefix (Windows version, file count, size) | | crash_logs | Find and read crash dumps and logs |

storage — Disk management

| Action | Description | |--------|-------------| | disk_report | Per-game disk usage breakdown (install + compat + shader + workshop) | | orphaned | Find leftover data from uninstalled games | | cleanup | Get cleanup recommendations with space savings | | shader_cache | Shader cache size for a specific game | | shader_stats | Shader cache overview across all games | | saves_list | List local cloud save data per game | | saves_stats | Cloud save aggregate stats | | backup | Back up cloud saves to a directory |

game_control — Game actions

| Action | Description | |--------|-------------| | install | Install a game via Steam | | uninstall | Uninstall a game | | launch | Launch a game | | verify | Verify game file integrity | | move | Move a game to another library folder | | store_page | Open the Steam store page |

game_config — Configuration and tweaks

| Action | Description | |--------|-------------| | get_launch_opts | Read current launch options | | set_launch_opts | Set launch options | | presets | List/apply launch option presets (MangoHud, GameMode, Vulkan, etc.) | | mangohud | Show, set, or reset MangoHud configuration | | steam_settings | View Steam client settings |

player — Player data (most actions require API key)

| Action | Description | |--------|-------------| | summary | Player profile with online status and account info | | level | Steam level, XP, and badges | | bans | VAC and game ban status | | friends | Friends list with online status and current games | | achievements | Per-game achievement unlock status | | global_achievements | Global achievement unlock percentages | | schema | Achievement and stat definitions for a game | | owned | Complete owned games list with playtime | | recent | Recently played games |

workshop — Steam Workshop

| Action | Description | |--------|-------------| | list | List installed workshop items for a game | | stats | Workshop stats across all games | | search | Search the Steam Workshop |

shortcuts — Non-Steam game shortcuts

| Action | Description | |--------|-------------| | list | List all non-Steam shortcuts | | add | Add a new shortcut | | remove | Remove a shortcut | | import_lutris | Import games from Lutris |

deals — Pricing and wishlist

| Action | Description | |--------|-------------| | check_sale | Check if a game is on sale | | wishlist_deals | Find discounted games on your wishlist | | wishlist | View full wishlist with prices and reviews | | library_value | Estimate total library value |

insights — Analytics and history

| Action | Description | |--------|-------------| | completion | Achievement completion rates across top games | | timeline | Month-by-month gaming activity | | year_review | Annual gaming recap | | play_history | Full playtime history (installed + uninstalled games) | | export | Export library data as JSON or CSV |

game_info — Game content and metadata

| Action | Description | |--------|-------------| | reviews | User reviews with scores | | news | Latest news articles | | media | Game artwork URLs and local overrides | | hltb | HowLongToBeat completion time estimates | | pcgamingwiki | PCGamingWiki fixes and tweaks |

diagnostics — Log parsing

| Action | Description | |--------|-------------| | compat_log | Parse Proton/Wine compatibility logs | | shader_log | Parse shader compilation logs |

Key Highlights

  • Minimal context footprint — 14 tools, ~3,200 tokens (down from 66 tools / ~8,000 tokens in v1)
  • Cross-platform — Linux, macOS, and Windows (Proton tools are Linux-only)
  • No API key needed for most actions — reads directly from Steam's local files
  • Smart search — "ck3" finds "Crusader Kings III", "ror2" finds "Risk of Rain 2"
  • Full play history — playtime for every game you've ever played, not just installed ones
  • Storage analysis — shows exactly where disk space goes (installs + compatdata + shadercache + workshop)
  • Orphan detection — finds GBs of leftover data from uninstalled games
  • Multi-library — supports multiple Steam library folders including external drives
  • Category filtering — enable only the tool groups you need via STEAM_TOOLS env var
  • Custom VDF parsers — both text and binary formats, no external dependencies

Development

Install from source

git clone https://github.com/Praeses0/steam-mcp.git
cd steam-mcp
npm install
npm run build

Commands

npm run dev      # Run with tsx (auto-reload)
npm run build    # Compile TypeScript
npm test         # Run tests

Architecture

src/
├── index.ts                 # Server entry, category-based tool registration
├── vdf/
│   ├── parser.ts            # Text VDF recursive descent parser + serializer
│   ├── binary-parser.ts     # Binary VDF parser (shortcuts.vdf)
│   ├── binary-writer.ts     # Binary VDF writer (shortcut management)
│   └── types.ts             # VdfValue, VdfObject types
├── steam/
│   ├── paths.ts             # Cross-platform Steam dir resolution, user detection
│   ├── manifests.ts         # App manifest reading with mtime caching
│   ├── library.ts           # Library folder operations + disk info
│   ├── userdata.ts          # localconfig.vdf read/write
│   ├── compat.ts            # Proton/Wine compatibility tracking
│   ├── workshop.ts          # Workshop manifest reading
│   ├── shortcuts.ts         # Binary shortcuts.vdf read/write
│   ├── api.ts               # Steam Web API client
│   ├── api-types.ts         # Shared API response types
│   ├── wishlist.ts          # Wishlist data fetching
│   ├── logs.ts              # Steam log parsing
│   └── types.ts             # Domain types
├── tools/                   # 14 consolidated MCP tools (one file per tool)
└── util/
    ├── format.ts            # formatBytes, formatPlaytime, formatTimestamp
    ├── cache.ts             # FileCache<T> with mtime invalidation
    └── fs.ts                # Shared filesystem utilities

License

MIT