Steam MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STEAM_ID | No | Your SteamID64 (optional, used as fallback for tools) | |
| STEAM_API_KEY | Yes | Your Steam Web API key from https://steamcommunity.com/dev/apikey |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| steam_resolve_vanity_urlA | Resolve a Steam custom (vanity) profile URL name into a SteamID64. Many Steam profiles use a custom URL like steamcommunity.com/id/ instead of a numeric ID. Other tools in this server need the numeric SteamID64, so use this first if you only have a custom URL name. Args: params (VanityUrlInput): Validated input containing: - vanity_name (str): The custom URL name (without the full URL). Returns: str: On success, the resolved SteamID64 and original name. On failure, an "Error: ..." string. If the name doesn't match a profile, returns a message saying no match was found. |
| steam_get_player_summaryA | Get profile summary information for a Steam user. Returns display name, profile URL, avatar, online status, and (if public) the currently played game and account creation date. Args: params (PlayerInput): Validated input containing: - steam_id (Optional[str]): SteamID64; falls back to STEAM_ID env var. - response_format (ResponseFormat): 'markdown' or 'json'. Returns: str: Markdown or JSON describing the profile, or an "Error: ..." string. |
| steam_get_owned_gamesA | List the games owned by a Steam user, with total playtime per game. This is the core library tool. It returns each owned game with its appid, name, total playtime, recent (2-week) playtime, and last-played date. The target profile's "Game details" must be public for this to return data. Args: params (OwnedGamesInput): Validated input containing: - steam_id (Optional[str]): SteamID64; falls back to STEAM_ID env var. - limit (Optional[int]): Max games to return after sorting (1-500, default 25). - sort_by (str): 'playtime' (default) or 'name'. - include_free_games (bool): Include launched free-to-play games (default True). - response_format (ResponseFormat): 'markdown' or 'json'. Returns: str: Markdown or JSON. JSON schema: { "total_games_owned": int, # total count in the library "returned": int, # number of games in this response "games": [ { "appid": int, "name": str, "playtime_hours": float, # total, all time "playtime_2weeks_hours": float, # last 2 weeks "last_played": str | null, # UTC timestamp "icon_url": str | null } ] } On error, an "Error: ..." string. |
| steam_get_recently_played_gamesA | List games a Steam user has played in roughly the last two weeks. Args: params (RecentlyPlayedInput): Validated input containing: - steam_id (Optional[str]): SteamID64; falls back to STEAM_ID env var. - count (Optional[int]): Max games to return (1-50, default 10). - response_format (ResponseFormat): 'markdown' or 'json'. Returns: str: Markdown or JSON listing recent games with 2-week and total playtime, or an "Error: ..." string. |
| steam_get_player_achievementsA | Get a player's achievements for a specific game. Args: params (AchievementsInput): Validated input containing: - appid (int): The game's Steam application ID (required). - steam_id (Optional[str]): SteamID64; falls back to STEAM_ID env var. - only_unlocked (bool): Return only unlocked achievements (default False). - response_format (ResponseFormat): 'markdown' or 'json'. Returns: str: Markdown or JSON with the game name, unlocked/total counts, and a list of achievements (name, unlocked flag, unlock time), or an "Error: ..." string. Some games have no achievements, which returns a note. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool serves a distinct Steam function: owned games, achievements, profile summary, recently played games, and vanity URL resolution. No two tools overlap in purpose.
All tools follow a consistent 'steam_verb_noun' pattern in snake_case, with clear and predictable naming.
With 5 tools, the server is focused and well-scoped, covering essential Steam user data queries without unnecessary bloat.
The set covers core user data (owned games, recent games, achievements, profile, vanity resolution). A minor gap is the lack of game detail retrieval, but it is reasonable for a focused server.