Skip to main content

Steam gaming platform MCP — library, achievements, friends, store, market data

Project description

Steam Blade MCP

A security-first, token-efficient MCP server for the Steam gaming platform. Built for the Sidereal plugin marketplace.

Why Another Steam MCP?

There are 9+ Steam MCP servers on GitHub. None of them are suitable for production use in a plugin marketplace:

Problem Existing MCPs Steam Blade
Security Mixed — most lack input validation, none block SSRF, some use undocumented APIs that risk account bans Official APIs only. Steam ID regex, SSRF protection, rate limiting, credential scrubbing
Token cost Raw JSON dumps — a library call can return 200KB+ of unfiltered data Compact pipe-delimited output. detail parameter. Pagination. 5-50x fewer tokens
Marketplace ready None have manifests, contracts, setup metadata, or conformance declarations Full sidereal-plugin.yaml with gaming-v1 contract, setup wizard metadata, credential config
Caching 1 of 9 implements proper caching TTL cache with async stampede prevention on every endpoint
Rate limiting 1 of 9 implements per-host rate limiting Per-host async limiters: Web API 1/s, Store API 0.67/s, Community 0.33/s

Competitive Landscape

Server Tools Security Tokens Maintained
sharkusmanch/steam-mcp-server 30 Good (SSRF) Poor (raw JSON) Active
XiaWan-Play/steam-tools-mcp 25 Good Good (aggregated) Active
shiyuki/steam-mcp-server 4 Good (rate limit) Excellent Active (narrow)
steam-blade-mcp 12 Best Best Active

Steam Blade has fewer raw tools than sharkusmanch's 30, but each tool is aggregated and token-optimised. steam_profile alone replaces 3 separate tools by combining profile + level + bans into a single call with compact output.

Security Posture

API surface — official only:

  • Steam Web API (api.steampowered.com) — API key, read-only, stable
  • Steam Store API (store.steampowered.com) — no auth, read-only, stable
  • Steam Community (steamcommunity.com) — inventory and market reads only

Explicitly excluded:

  • Revadike/InternalSteamWebAPI undocumented endpoints (ToS violation risk, credential escalation)
  • Steam CM protocol (full credential exposure)
  • Any write operations (no purchasing, trading, or messaging)
  • Session cookie authentication (no browser session handling)

Controls:

  • Steam ID validation: ^[0-9]{17}$ regex on all inputs
  • SSRF protection: blocks RFC 1918, loopback, link-local, multicast, documentation ranges
  • API key scrubbing: keys never appear in tool output or error messages
  • Per-host rate limiting: async limiters prevent Steam API throttling
  • Input validation: Pydantic models with constrained types on all parameters

Installation

Sidereal Marketplace

sidereal plugin add Groupthink-dev/steam-blade-mcp

The install wizard will prompt for your Steam API key and Steam ID.

Manual (uv)

# Install
uv pip install steam-blade-mcp

# Configure
export STEAM_API_KEY="your-key-from-steamcommunity.com/dev/apikey"
export STEAM_ID="76561198012345678"

# Run
steam-blade-mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "steam": {
      "command": "uvx",
      "args": ["steam-blade-mcp"],
      "env": {
        "STEAM_API_KEY": "your-api-key",
        "STEAM_ID": "your-steam-id"
      }
    }
  }
}

Claude Code

Add to ~/.claude.json:

{
  "mcpServers": {
    "steam": {
      "command": "uvx",
      "args": ["steam-blade-mcp"],
      "env": {
        "STEAM_API_KEY": "your-api-key",
        "STEAM_ID": "your-steam-id"
      }
    }
  }
}

Getting Credentials

  1. Steam API Key — Register at steamcommunity.com/dev/apikey. Requires a Steam account with at least one purchase.

  2. Steam ID — Your 17-digit SteamID64. Find it at steamid.io or from your Steam profile URL.

Tools

Tool Description Default Output
steam_profile Player overview (name, status, level, bans) One-line summary
steam_library Owned games with playtime (paginated, sortable) Name + hours, top 25
steam_recent Recently played (last 2 weeks) Name + 2wk hours
steam_search Fuzzy game search by name Name + app ID
steam_game Store details (price, rating, platforms) One-line with price
steam_achievements Per-game achievement progress Count + percentage
steam_friends Friends list (optional enrichment) Steam IDs + since date
steam_news Game news feed (truncated) Date + title
steam_stats Global achievement unlock rates Top/bottom 5
steam_inventory Game item inventory Count + sample
steam_price Community Market item price Price + volume
steam_players Current concurrent player count Single number

Every tool supports detail="summary" (default, compact) and detail="full" (all fields).

Token Efficiency

Summary mode output examples:

PlayerName | Online | Playing CS2 | Level 42 | AU
Games 1-25 of 347
Counter-Strike 2 | 1,234.5h
Elden Ring | 892.3h
Achievements: 47/50 (94%)
Current players: 1,234,567

Full mode adds structured multi-line output with all available fields when you need the detail.

See SKILL.md for the complete token efficiency guide and workflow examples.

Environment Variables

Variable Required Description
STEAM_API_KEY Yes Steam Web API key
STEAM_ID Yes Default 17-digit Steam ID
STEAM_MCP_TRANSPORT No stdio (default) or http
STEAM_MCP_HOST No HTTP host (default 127.0.0.1)
STEAM_MCP_PORT No HTTP port (default 8780)

Development

# Setup
make install-dev

# Run locally
make dev

# Test
make test

# Lint
make lint

Sidereal Contract: gaming-v1

This MCP implements the gaming-v1 domain contract:

  • Required (4/4): player_summary, library, game_details, search_games
  • Recommended (4/4): recent_games, achievements, friends, game_news
  • Optional (4/5): global_stats, inventory, market_price, player_count
  • Gated: none (entire contract is read-only)

No gated (write) operations — Steam's API does not support safe write operations without credential escalation.

License

MIT

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_blade_mcp-0.2.0.tar.gz (83.5 kB view details)

Uploaded Source

Built Distribution

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

steam_blade_mcp-0.2.0-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file steam_blade_mcp-0.2.0.tar.gz.

File metadata

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

File hashes

Hashes for steam_blade_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5a17fc7505f74fa420f2f2abff5215ffd9ded4162f6b4ddab6447cc096e8b263
MD5 199534e4d2b2a61488ff3d91ff3fb574
BLAKE2b-256 38b0e25efb8e38310936516fbb46fe1b5363e90a9c40f10aab03ae7115a04c10

See more details on using hashes here.

Provenance

The following attestation bundles were made for steam_blade_mcp-0.2.0.tar.gz:

Publisher: publish.yml on Groupthink-dev/steam-blade-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_blade_mcp-0.2.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for steam_blade_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8601252df1729d5d22dad21865e8460bd4df351a004a3bb1ae0821aabad4a15e
MD5 3cb8a41ef4cbd605d9f595963c9da6d0
BLAKE2b-256 f49236afe8f41a87b546e2fe88747a4ee6e201c8bba74bf7874c036e32c552c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for steam_blade_mcp-0.2.0-py3-none-any.whl:

Publisher: publish.yml on Groupthink-dev/steam-blade-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