Skip to main content
Glama

Steam MCP Server

An MCP (Model Context Protocol) server that provides tools for interacting with the Steam Web API.

Setup

1. Get a Steam API Key

Obtain an API key from Steam's developer portal.

2. Install Dependencies

npm install

3. Build

npm run build

4. Configure Your MCP Client

Claude Code

Add to your Claude Code settings file (~/.claude/settings.json):

{
  "mcpServers": {
    "steam": {
      "command": "node",
      "args": ["/path/to/steam-mcp-server/dist/index.js"],
      "env": {
        "STEAM_API_KEY": "your-api-key-here",
        "STEAM_ID": "your-64-bit-steam-id"
      }
    }
  }
}

Or use npx (no build required):

{
  "mcpServers": {
    "steam": {
      "command": "npx",
      "args": ["-y", "@sharkusmanch/steam-mcp-server"],
      "env": {
        "STEAM_API_KEY": "your-api-key-here",
        "STEAM_ID": "your-64-bit-steam-id"
      }
    }
  }
}

Claude Desktop

Add to your Claude Desktop configuration:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "steam": {
      "command": "npx",
      "args": ["-y", "@sharkusmanch/steam-mcp-server"],
      "env": {
        "STEAM_API_KEY": "your-api-key-here",
        "STEAM_ID": "your-64-bit-steam-id"
      }
    }
  }
}

Cursor

Add to Cursor's MCP settings (.cursor/mcp.json in your project or global config):

{
  "mcpServers": {
    "steam": {
      "command": "npx",
      "args": ["-y", "@sharkusmanch/steam-mcp-server"],
      "env": {
        "STEAM_API_KEY": "your-api-key-here",
        "STEAM_ID": "your-64-bit-steam-id"
      }
    }
  }
}

Windsurf

Add to Windsurf's MCP configuration (~/.windsurf/mcp.json):

{
  "mcpServers": {
    "steam": {
      "command": "npx",
      "args": ["-y", "@sharkusmanch/steam-mcp-server"],
      "env": {
        "STEAM_API_KEY": "your-api-key-here",
        "STEAM_ID": "your-64-bit-steam-id"
      }
    }
  }
}

Related MCP server: mcp-server-steam

Environment Variables

Variable

Required

Description

STEAM_API_KEY

Yes

Your Steam Web API key

STEAM_ID

No

Default Steam ID to use when not specified in tool calls

STEAM_HTTP_TIMEOUT_MS

No

Per-request timeout for Steam API calls in milliseconds (default 10000)

When STEAM_ID is set, you can call tools like get_owned_games without passing a Steam ID - it will use your default profile automatically.

Reliability & Pagination

  • Every Steam API request is bounded by a timeout (STEAM_HTTP_TIMEOUT_MS) and automatically retries transient failures (timeouts, HTTP 429, and 5xx) with exponential backoff. Non-retriable errors (401/403/404) fail fast with a clear, actionable message, and failures are returned with isError: true.

  • List-returning tools accept limit and offset and return a consistent envelope with the pre-slice total and a has_more flag, e.g. { "total_games": 412, "returned": 50, "offset": 0, "has_more": true, "games": [...] }. get_inventory additionally returns a next_cursor (Steam start_assetid) for deep paging.

  • search_apps uses Steam's relevance-ranked storefront search (no full-catalog download), so it returns the top matches quickly and reliably.

Available Tools

Social & Profile

Tool

Description

get_player_summary

Get player profile info (name, avatar, status, current game)

get_friends_list

Get a player's friends list

get_steam_level

Get player's Steam account level

get_badges

Get player's badges, XP, and level progression

get_badge_progress

Get trading card collection progress

get_player_bans

Check for VAC bans, game bans, or trade bans

get_user_groups

Get Steam groups a player belongs to

resolve_vanity_url

Convert vanity URL to 64-bit Steam ID

Game Library

Tool

Description

get_owned_games

Get all games owned with playtime stats (supports pagination)

get_recently_played

Get games played in last 2 weeks

get_game_details

Get detailed game info (description, price, requirements)

is_playing_shared_game

Check if playing via Steam Family Sharing

search_apps

Search Steam catalog by game name

Achievements & Stats

Tool

Description

get_achievements

Get player's achievements for a game

get_game_stats

Get player's statistics for a game

get_global_achievement_percentages

Get global achievement unlock rates

get_global_game_stats

Get global aggregated stats for a game

get_perfect_games

Get games where player has 100% achievements

get_achievement_summary

Get condensed achievement progress across games

get_game_schema

Get achievement/stat definitions for a game

Game Info

Tool

Description

get_game_news

Get latest news and patch notes for a game

get_player_count

Get current number of players in a game

get_servers_at_address

Get game servers at a specific IP

check_app_update

Check if an app version is up to date

Inventory

Tool

Description

get_inventory

Get inventory for any game (requires public profile)

get_tf2_inventory

Get Team Fortress 2 inventory

get_csgo_inventory

Get CS2/CSGO inventory

get_dota2_inventory

Get Dota 2 inventory

Finding Your Steam ID

Use resolve_vanity_url with your custom profile URL, or find your 64-bit Steam ID at steamid.io.

License

MIT

Available Tools

34 tools
check_app_updateC

Check if a specific version of an app is up to date

Inputs: app_id (required), version (required).

get_achievementsC

Get a player's achievements for a specific game

Inputs: app_id (required), steam_id.

get_achievement_summaryB

Get a summary of achievement progress across all games or specific games

Inputs: steam_id, app_ids.

get_badge_progressB

Get progress on community badge crafting (trading cards)

Inputs: steam_id, badge_id.

get_badgesB

Get a player's Steam badges with game names, XP, and level progression

Inputs: steam_id, include_game_names.

get_csgo_inventoryB

Get a player's CS2/CSGO inventory (via official API)

Inputs: steam_id.

get_dota2_inventoryC

Get a player's Dota 2 inventory (via official API)

Inputs: steam_id.

get_friends_listB

Get a player's Steam friends list with names and relationship info

Inputs: steam_id, include_info.

get_game_detailsC

Get detailed information about a Steam game including description, price, and requirements

Inputs: app_id (required).

get_game_newsC

Get latest news and patch notes for a game

Inputs: app_id (required), count, max_length.

get_game_schemaB

Get the achievement and stat schema for a game (names, descriptions, icons)

Inputs: app_id (required).

get_game_statsC

Get a player's statistics for a specific game

Inputs: app_id (required), steam_id.

get_global_achievement_percentagesB

Get global achievement unlock percentages for a game

Inputs: app_id (required).

get_global_game_statsB

Get global aggregated stats for a game (requires knowing stat names from schema)

Inputs: app_id (required), stat_names (required).

get_inventoryB

Get a player's inventory for any game (requires public profile)

Inputs: app_id (required), steam_id, context_id, count.

get_owned_gamesA

Get games owned by a player with playtime statistics. Use limit/offset for pagination.

Inputs: steam_id, include_free_games, limit, offset, +1 more.

get_perfect_gamesA

Get games where the player has unlocked ALL achievements (100% completion)

Inputs: steam_id.

get_player_bansC

Check if a player has VAC bans, game bans, or trade bans

Inputs: steam_id.

get_player_countB

Get the current number of players in a game

Inputs: app_id (required).

get_player_summaryB

Get Steam player profile information including name, avatar, status, and current game

Inputs: steam_id.

get_recently_playedB

Get games played by a user in the last two weeks

Inputs: steam_id, count.

get_servers_at_addressC

Get game servers running at a specific IP address

Inputs: address (required).

get_steam_levelC

Get a player's Steam account level

Inputs: steam_id.

get_tf2_inventoryC

Get a player's Team Fortress 2 inventory (via official API)

Inputs: steam_id.

get_trade_historyB

Get completed trade history with partner names. Requires API key with trade permissions.

Inputs: max_trades, include_failed, include_partner_names.

get_trade_offerB

Get details of a specific trade offer by ID. Requires API key with trade permissions.

Inputs: trade_offer_id (required).

get_trade_offersB

Get active trade offers with partner names. Requires API key with trade permissions.

Inputs: get_sent, get_received, active_only, include_partner_names.

get_trade_offers_summaryA

Get a summary of pending trade offers (counts only). Requires API key with trade permissions.

Inputs: no named parameters.

get_user_groupsB

Get the Steam groups a player is a member of

Inputs: steam_id.

get_wishlistA

Get a player's Steam wishlist with game names, priorities, and dates added

Inputs: steam_id, include_names.

get_wishlist_item_countA

Get the number of users who have a specific game on their wishlist

Inputs: app_id (required).

is_playing_shared_gameB

Check if a player is currently playing a game via Steam Family Sharing

Inputs: app_id (required), steam_id.

resolve_vanity_urlA

Convert a Steam vanity URL (custom profile name) to a 64-bit Steam ID

Inputs: vanity_url (required).

search_appsA

Search for Steam apps by name (searches the full Steam catalog)

Inputs: query (required), limit.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 34 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes targeting specific resources like achievements, inventories, player data, or trade operations. However, some overlap exists between inventory tools (e.g., get_inventory vs. game-specific inventories like get_csgo_inventory) and between trade-related tools (get_trade_offers vs. get_trade_offers_summary), which could cause minor confusion.

    Naming Consistency5/5

    All tools follow a consistent verb_noun naming pattern with clear, descriptive names. The pattern is uniformly applied across all 34 tools, using verbs like 'get', 'check', 'resolve', and 'search' followed by specific nouns, making them predictable and easy to understand.

    Tool Count2/5

    With 34 tools, the count feels excessive for a Steam API server, leading to potential bloat and complexity. While Steam has many features, the server could benefit from consolidation or better scoping, as some tools (e.g., multiple trade-related tools) might be redundant or overly granular for typical agent use cases.

    Completeness5/5

    The tool set provides comprehensive coverage of the Steam domain, including player profiles, games, achievements, inventories, trades, and community features. It supports CRUD-like operations where applicable (e.g., fetching data) and covers key workflows without obvious gaps, ensuring agents can handle most Steam-related tasks effectively.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers