steam-mcp
Allows importing games from Lutris as Steam shortcuts.
Fetches PCGamingWiki fixes and tweaks for games to help with compatibility and performance.
Provides tools for managing Proton/Wine compatibility, including version recommendations, prefix inspection, crash log parsing, and launch option presets (e.g., MangoHud, GameMode, Vulkan).
Fetches ProtonDB community ratings for Proton/Wine compatibility of games.
Provides comprehensive tools for managing and interacting with a user's Steam game library, including game discovery (list, search, random), installation, launching, storage analysis, player profile and achievements (with API key), and workshop management.
Supports setting Vulkan-related launch options and presets for games.
Related to Proton, includes Wine prefix inspection and compatibility log parsing.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@steam-mcpWhat games do I have installed?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Steam MCP Server
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?"
Related MCP server: mcp-steam
Installation
npm (recommended)
npx @praeses/steam-mcpNo install needed — just add it to your MCP client config (see below).
Global install
npm install -g @praeses/steam-mcpThen 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.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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_KEYis 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 |
|
| Game browsing, library stats, Steam status |
|
| Proton/Wine compatibility, log parsing |
|
| Install/launch/verify, launch options, non-Steam shortcuts |
|
| Disk usage, cleanup, shader cache, cloud saves, backups |
|
| Player profile/achievements/friends, workshop items |
|
| Sale checks, wishlist, library valuation |
|
| Completion stats, timeline, year review, play history, export |
|
| 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 installed games with filtering, sorting, pagination |
| Get full details for a game by appid |
| Smart search with abbreviation matching (e.g. "ck3" → Crusader Kings III) |
| Compare two games side-by-side |
| Pick a random installed game |
| Find games you own but haven't played |
library — Library folders and stats
Action | Description |
| List all Steam library folders with sizes and free space |
| Aggregate stats: total games, playtime, disk usage |
steam_status — Steam client status
Action | Description |
| Check if Steam is running |
| View current download queue |
| Check download progress for a game |
proton — Proton/Wine compatibility (Linux)
Action | Description |
| List all games using Proton/Wine with versions and prefix sizes |
| Get compatibility details for a specific game |
| List installed Proton versions and which games use them |
| Fetch ProtonDB community rating |
| Get a Proton version recommendation for a game |
| Inspect Wine/Proton prefix (Windows version, file count, size) |
| Find and read crash dumps and logs |
storage — Disk management
Action | Description |
| Per-game disk usage breakdown (install + compat + shader + workshop) |
| Find leftover data from uninstalled games |
| Get cleanup recommendations with space savings |
| Shader cache size for a specific game |
| Shader cache overview across all games |
| List local cloud save data per game |
| Cloud save aggregate stats |
| Back up cloud saves to a directory |
game_control — Game actions
Action | Description |
| Install a game via Steam |
| Uninstall a game |
| Launch a game |
| Verify game file integrity |
| Move a game to another library folder |
| Open the Steam store page |
game_config — Configuration and tweaks
Action | Description |
| Read current launch options |
| Set launch options |
| List/apply launch option presets (MangoHud, GameMode, Vulkan, etc.) |
| Show, set, or reset MangoHud configuration |
| View Steam client settings |
player — Player data (most actions require API key)
Action | Description |
| Player profile with online status and account info |
| Steam level, XP, and badges |
| VAC and game ban status |
| Friends list with online status and current games |
| Per-game achievement unlock status |
| Global achievement unlock percentages |
| Achievement and stat definitions for a game |
| Complete owned games list with playtime |
| Recently played games |
workshop — Steam Workshop
Action | Description |
| List installed workshop items for a game |
| Workshop stats across all games |
| Search the Steam Workshop |
shortcuts — Non-Steam game shortcuts
Action | Description |
| List all non-Steam shortcuts |
| Add a new shortcut |
| Remove a shortcut |
| Import games from Lutris |
deals — Pricing and wishlist
Action | Description |
| Check if a game is on sale |
| Find discounted games on your wishlist |
| View full wishlist with prices and reviews |
| Estimate total library value |
insights — Analytics and history
Action | Description |
| Achievement completion rates across top games |
| Month-by-month gaming activity |
| Annual gaming recap |
| Full playtime history (installed + uninstalled games) |
| Export library data as JSON or CSV |
game_info — Game content and metadata
Action | Description |
| User reviews with scores |
| Latest news articles |
| Game artwork URLs and local overrides |
| HowLongToBeat completion time estimates |
| PCGamingWiki fixes and tweaks |
diagnostics — Log parsing
Action | Description |
| Parse Proton/Wine compatibility logs |
| 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_TOOLSenv varCustom 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 buildCommands
npm run dev # Run with tsx (auto-reload)
npm run build # Compile TypeScript
npm test # Run testsArchitecture
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 utilitiesLicense
Available Tools
14 toolsdealsC
Sale checks, wishlist, deals, library value
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| appid | No | ||
| action | Yes | ||
| steamid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It only offers tags like 'Sale checks' and 'library value' and does not mention side effects, read-only behavior, required context, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but it is an under-specified comma-separated fragment rather than a structured, informative definition. It repeats the tool's general concept without earning its place through added operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four actions, four parameters, no output schema, and no annotations, the description is far too thin to support correct invocation. It gives a rough sense of the tool's purpose but lacks critical context about action-specific parameters, expected results, and invocation requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for missing parameter documentation. It does not explain name, appid, steamid, or the action values beyond broad topical hints, leaving agents to infer parameter usage from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the domain—sale checks, wishlist, deals, library value—which loosely maps to the action enum. However, it is a fragment with no verb or explicit 'does X' structure, so it does not clearly state what the tool does or how it differs from siblings like library or games.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as library, games, or insights. It lists possible topics but never states conditions, exclusions, or which action should be chosen in which scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnosticsC
Parse Proton compat or shader logs
| Name | Required | Description | Default |
|---|---|---|---|
| appid | No | ||
| lines | No | ||
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior, but it only says 'Parse logs'. It does not mention whether this reads local files, requires an installed game, produces a summary or raw output, or has side effects. The safety profile and operational behavior are left entirely unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler. It conveys the core action concisely, though it is terse and could include more useful context without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and three parameters at 0% schema coverage, the description is insufficient for an agent to confidently call the tool. Missing details include what input values are valid beyond the enum, what output to expect, and what prerequisites exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needs to explain the parameters. It indirectly maps to the action enum by mentioning 'compat or shader logs', but it gives no meaning for 'appid' or 'lines', leaving two of three parameters undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Parse') and a clear resource ('Proton compat or shader logs'), making the tool's core purpose understandable. It does not explicitly contrast with sibling tools like 'proton', but the log-parsing focus is distinct enough for basic selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as 'proton' or 'game_info'. The action enum hints at two log types, but the description does not explain what scenario calls for parsing these logs or when another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
game_configC
Launch options, presets, MangoHud, Steam settings
| Name | Required | Description | Default |
|---|---|---|---|
| appid | No | ||
| action | Yes | ||
| preset | No | ||
| options | No | ||
| settings | No | ||
| mangohud_action | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. The fragment only lists config domains and never states whether operations are reads or writes, whether settings persist, or what side effects occur. An agent cannot anticipate the behavior of actions like set_launch_opts or mangohud.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Eight words make it concise, but conciseness crosses into under-specification: no sentence structure, no front-loaded purpose, and no information that helps invocation. It resembles labels rather than a structured tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, a required action enum, and no output schema or annotations, the description is far too thin. It omits behavior, return values, and any conditions, so an agent cannot reliably construct a call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to explain the six parameters, but it only restates the broad action domains. It does not clarify required fields (action), how preset/options/settings interact, or the meaning of mangohud_action beyond its enum name. Minimal thematic mapping, no semantic depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a resource (game_config) and enumerates its domains: launch options, presets, MangoHud, Steam settings. However, it lacks a verb or explicit statement of what the tool does, and it doesn't differentiate it from sibling tools like game_control or diagnostics. This is enough for a vague orientation, not a clear purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool over siblings such as game_control, games, or diagnostics. No context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
game_controlC
Install, uninstall, launch, verify, move, or open store page
| Name | Required | Description | Default |
|---|---|---|---|
| appid | Yes | ||
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It lists mutating and potentially destructive actions like uninstall and move but gives no warnings, prerequisites, side effects, or reversibility information, leaving the safety profile unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the action list is front-loaded. It could be improved by structuring it as 'Control a game: ...', but it is appropriately brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two required parameters and no output schema, the description omits safety context, return behavior, and operation details. An agent cannot tell what happens after launch or verify, and destructive operations are unmarked, making the description insufficient for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description merely restates the enum values in prose, adding no meaning beyond the input schema. 'verify' and 'move' remain underspecified, appid is not explained, and the missing destination parameter for move is not addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists concrete operations (install, uninstall, launch, verify, move, open store page) that clearly imply a game-control tool, distinguishing it from siblings like games or library. It loses a point because the resource is never explicitly named, and 'move' is ambiguous without a destination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings, no context or exclusion criteria. With 13 sibling tools, the agent must infer which operation to route here, which the description does not help with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
game_infoD
Reviews, news, media, HLTB times, PCGamingWiki fixes
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| appid | No | ||
| count | No | ||
| action | Yes | ||
| filter | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full burden of behavioral disclosure. It only lists content categories and does not mention whether the operation is read-only, what inputs are required, how actions affect the response, or any limits. This is insufficient for safe and correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief, which is concise, but it is an under-specified fragment rather than a well-structured explanation. It conveys only a list of topics and does not earn its place by improving usability. The lack of sentences or meaningful detail makes this closer to under-specification than true conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has five parameters, one required, two enums, no output schema, and no annotations, yet the description is only seven words. There is no explanation of action semantics, parameter combinations, or return behavior. This is far too little context for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the five undocumented parameters. It does not explain name, appid, count, or filter at all; it only repeats the action categories already present in the schema enum. No parameter meaning, optionality, or interaction is clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists the content areas the tool covers (reviews, news, media, HLTB times, PCGamingWiki fixes), which indicates the general resource domain. However, it lacks a verb such as 'fetch' or 'retrieve,' so it reads as a fragment rather than a clear statement of what the tool does. It also does little to distinguish this tool from siblings like games or insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives among the many siblings. The action enum and title imply it is for game information lookups, but the description never states a preferred context, prerequisites, or exclusions. An agent would have to infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gamesC
List, get, search, compare, random pick, or find unplayed games
| Name | Required | Description | Default |
|---|---|---|---|
| appid | No | ||
| limit | No | ||
| query | No | ||
| action | Yes | ||
| appid2 | No | ||
| filter | No | ||
| offset | No | ||
| search | No | ||
| sort_by | No | ||
| sort_order | No | ||
| include_store | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only repeats the action names. It does not state whether operations are read-only, what 'random pick' selects from, how 'compare' behaves with appid/appid2, or what the response looks like. The schema enum already conveys the action set, so the description adds almost nothing beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence contains no wasted words and front-loads the six actions efficiently. However, the brevity comes at the expense of essential guidance, making this under-specification rather than genuine conciseness for an 11-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex multi-action tool with 11 parameters, 0% schema coverage, no annotations, and no output schema, yet the description offers only an action list. An agent cannot determine which parameters pair with which action, how pagination works, what filter values are valid, or what the return shape is. The description is drastically inadequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 11 parameters, so the description must compensate heavily. It does not: none of appid, limit, query, filter, offset, search, sort_by, sort_order, or include_store are explained, and the ambiguous query-vs-search and appid-vs-appid2 distinctions are left unresolved. The description only maps to the action enum, which the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states specific verbs (list, get, search, compare, random pick, find unplayed) applied to the resource 'games', so an agent knows roughly what operations exist. However, it is a bundle of six operations and does not differentiate from overlapping siblings like library (likely also lists games) or game_info (likely also gets game details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus any of the 13 siblings. No alternatives are named, no exclusions are stated, and no context is given for choosing between overlapping tools like library, game_info, or insights. An agent must infer all routing decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insightsD
Completion stats, timeline, year review, play history, export
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | ||
| limit | No | ||
| action | Yes | ||
| format | No | ||
| output | No | ||
| sort_by | No | ||
| steamid | No | ||
| resolve_names | No | ||
| installed_only | No | ||
| include_playtime | No | ||
| include_achievements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself, but it only lists action names. It does not mention data source, side effects, permission needs, export behavior, or what the returned data looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, but brevity here is under-specification rather than conciseness. It is a comma-separated fragment that restates enum values and provides no front-loaded verb or sentence structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no output schema, no annotations, and many siblings, this description is critically incomplete. An agent cannot determine required context, parameter interplay, action semantics, or expected outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 11 parameters, and the description explains none of them. It re-lists the action enum values but says nothing about year, limit, format, steamid, filters, or sorting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a fragment listing content areas ('Completion stats, timeline, year review, play history, export') rather than stating what the tool does with a verb and resource. It conveys the tool's domain but is vague and does not differentiate 'insights' from siblings like game_info or player.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided, and no alternatives are named despite 13 sibling tools. The phrase merely hints that the tool covers insights-style data, leaving the agent to infer when it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
libraryA
List library folders or get aggregate stats
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. The verbs 'list' and 'get' imply read-only behavior, but the description does not explicitly state non-mutation, output characteristics, or any external dependencies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word earns its place, and the two modes are stated efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers the core modes, but 'aggregate stats' is vague and there is no output schema to clarify return values. An agent can invoke it, but may not know what stats are included or how the result is structured.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining the two enum actions in natural language: 'list' maps to listing library folders and 'stats' maps to getting aggregate stats. This adds meaning beyond the raw enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'List library folders or get aggregate stats.' It identifies two distinct operations, but does not explicitly distinguish this tool from overlapping siblings like 'storage' or 'insights.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied by the described operations: an agent would use this when it needs library folders or aggregate stats. However, it gives no guidance on when to choose this over sibling tools, and no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playerC
Profile, level, bans, friends, achievements, owned/recent games
| Name | Required | Description | Default |
|---|---|---|---|
| appid | No | ||
| action | Yes | ||
| steamid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only lists data categories and never states whether this is a read-only operation, whether authentication is required, what rate limits apply, or what the response shape is. The lack of explicit safety/behavioral context is a meaningful gap for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and contains no filler, which is positive. But it is a bare comma-separated list rather than a structured sentence, and it omits global_achievements and schema actions, so the efficiency doesn't translate into a well-organized or complete summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 enum actions, 3 parameters, no annotations, and no output schema, this description is far too thin. It doesn't explain the per-action parameter requirements (e.g., appid for achievements), the meaning of steamid, or how this tool relates to siblings. An agent cannot reliably select and invoke the correct action based on this description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds essentially no parameter-level meaning. It doesn't explain that action selects which query to run, that steamid identifies the player, or that appid is required for achievement-related actions. The comma list in the description merely mirrors the action enum values already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as the Steam player and lists the data domains it covers (profile, level, bans, friends, achievements, owned/recent games), which is a clear indicator of purpose even without a verb. However, it doesn't explicitly differentiate itself from sibling tools like games, library, or game_info that also surface game-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus siblings or on how the action parameter dispatches between the many possible player queries. There is no mention of prerequisites or alternatives, leaving the agent to infer usage from the bare noun list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
protonC
Proton/Wine compat: list games, info, versions, DB rating, recommend, prefix, logs
| Name | Required | Description | Default |
|---|---|---|---|
| appid | No | ||
| lines | No | ||
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It merely lists action names without stating side effects, whether operations read or mutate data, prerequisites, expected outputs, or rate limits. Actions like 'prefix' or 'recommend' are especially ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact line that front-loads the domain and then lists the available sub-actions. It is efficient and scannable, though the brevity comes at the cost of explanatory depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a multi-action tool with seven possible actions, three parameters, no annotations, and no output schema. A one-line list of action names leaves the agent without critical information about required parameters per action, return formats, failure modes, or behavioral consequences, making it effectively incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it does not explain appid, lines, or the exact meaning of most action values. It only echoes the enum names already present in the schema, adding no semantic value for an agent trying to construct a valid call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the domain ('Proton/Wine compat') and enumerates the tool's capabilities (list games, info, versions, DB rating, recommend, prefix, logs), which aligns with the action enum. It is specific enough to differentiate from sibling tools like games or game_info, though it reads as a label rather than a complete sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it explain which action fits which scenario. Sibling tools like game_info, game_control, or diagnostics could plausibly overlap, but no context is given to help an agent choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shortcutsB
Non-Steam shortcuts: list, add, remove, import from Lutris
| Name | Required | Description | Default |
|---|---|---|---|
| exe | No | Absolute path to the executable | |
| name | No | ||
| tags | No | ||
| appid | No | ||
| action | Yes | ||
| game_ids | No | Lutris game IDs to import; omit for all | |
| start_dir | No | Working directory (defaults to exe's parent directory) | |
| launch_options | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotencyHint=false, covering the mutation profile. The description adds the contextual detail that this concerns Non-Steam shortcuts and Lutris import, but it does not disclose side effects beyond what the annotations and action enum imply. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded clause followed by a colon-separated list of actions. It contains zero filler and every word contributes to the core message. It is as concise as possible, though the brevity sacrifices detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with six parameters and no output schema, this description is too thin. It does not state per-action parameter requirements, the meaning of the action values, or what list returns. Annotations cover destructiveness, but an agent cannot determine correct invocation for add/remove/import_lutris without external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low: only exe and game_ids have descriptions out of six parameters. The description lists action categories but does not explain how parameters like name, tags, appid, or game_ids map to each action, nor which parameters are required for add/remove. It fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (Non-Steam shortcuts) and lists concrete verbs (list, add, remove, import), making the tool's purpose clear. It does not explicitly contrast with siblings like games or library, but the 'Non-Steam' qualifier helps distinguish its domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. An agent must infer from the action names alone that this is the right place for shortcut management.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
steam_statusC
Steam client status, download queue, or download progress
| Name | Required | Description | Default |
|---|---|---|---|
| appid | No | ||
| action | No | status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavior. It only names three aspects—status, queue, progress—and does not state whether the operation is read-only, whether Steam must be running, how appid alters behavior, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and free of filler, but it is an under-specified fragment rather than a concise explanation. It does not form a complete sentence and fails to earn its place by adding behavioral or parameter context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, multi-mode tool with no output schema and no annotations, this description is too incomplete. Key context such as when appid is required, what each action returns, and how this tool relates to siblings is missing, so an agent cannot reliably invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to document appid and action, but it only loosely mirrors the action enum. The appid parameter is entirely unexplained, and no defaults, formats, or relationships between parameters are added beyond what the schema already exposes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a resource and possible areas of interest—Steam client status, download queue, and download progress—but it lacks a verb such as 'get' or 'show,' so it is unclear whether the tool reads state or acts on it. It also does not differentiate this tool from siblings like diagnostics or game_control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of related sibling tools. No exclusions or alternative suggestions are provided, and the agent must infer usage context from the action enum and tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storageC
Disk usage, cleanup, shader cache, cloud saves, backups
| Name | Required | Description | Default |
|---|---|---|---|
| appid | No | ||
| limit | No | ||
| action | Yes | ||
| sort_by | No | ||
| destination | No | Backup destination directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It mentions 'cleanup' and 'backup', which suggest side effects, but doesn't disclose whether actions delete files, modify shader cache, require confirmation, or write to a destination. An agent cannot assess the destructiveness or safety of invoking this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and contains no filler, but it is a comma-separated fragment without a verb or sentence structure. It is compact yet not effectively structured to guide an agent's understanding of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 actions, 5 parameters, no annotations, and no output schema, yet the description is only a topic list. It does not explain which action to choose, action-specific parameter requirements, or return behavior, leaving the agent without enough context to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description loosely maps to action enum values (cleanup, shader cache, cloud saves, backups), which provides some semantic grouping. However, it says nothing about appid, limit, or sort_by, and with schema description coverage at only 20%, the description does not compensate for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a comma-separated list of topic areas ('Disk usage, cleanup, shader cache, cloud saves, backups') rather than a verb phrase stating an operation. It conveys the storage domain and hints at possible actions but does not clearly say what the tool does, leaving the purpose vague. It does not distinguish itself from sibling tools because no specific resource or operation is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus sibling tools, no context, no exclusions, and no mention of alternatives. The description only implies that storage-related tasks might belong here, but an agent gets no help deciding between storage and tools like diagnostics or game_control.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workshopC
List workshop items, stats, or search
| Name | Required | Description | Default |
|---|---|---|---|
| appid | No | ||
| count | No | ||
| query | No | ||
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits itself. It states the tool can list, fetch stats, or search, but does not say whether the operations are read-only, whether an appid context is required, or what side effects or limitations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the core operation, containing no filler or redundancy. It sacrifices completeness for brevity, but as a structural matter it is concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, zero schema descriptions, and no usage guidance, this single fragment leaves the agent with almost no context needed to invoke the tool correctly. It does not explain parameter relationships, return values, or action-specific requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions workshop items and the three actions, loosely echoing the action enum, but it adds no meaning for appid, count, or query. This is inadequate for a 4-parameter tool with no schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear resource ('workshop items') and three operations (list, stats, search) that map directly to the action enum. This differentiates it from siblings like games, library, or proton, though the phrasing is telegraphic and not fully grammatical.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use workshop versus a sibling tool, nor any direction on which action or parameters fit common scenarios. The operation names imply usage but the description leaves the selection criteria entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
v2.0.0- First observed
deals - First observed
diagnostics - First observed
game_config - First observed
game_control - First observed
game_info - First observed
games - First observed
insights - First observed
library - First observed
player - First observed
proton - First observed
shortcuts - First observed
steam_status - First observed
storage - First observed
workshop
TDQS
Most tools map to broad subdomains, but several boundaries are fuzzy: 'games' and 'game_info' both handle game data, 'proton' and 'diagnostics' both touch logs, and 'library' and 'insights' both surface stats. Agents may need to read the full descriptions carefully to avoid picking the wrong category.
Tool names consistently use lowercase noun-style labels, which is a recognizable pattern, and multi-word names use snake_case consistently. Minor inconsistencies exist between plural categories like 'games' and 'shortcuts' versus singular/more specific names like 'steam_status' and 'game_info', but there is no mixed casing or verb chaos.
14 tools is well within the ideal range and appropriate for Steam's broad scope, covering library management, game control, configuration, player data, workshop, deals, storage, and more. Each tool represents a coherent subdomain, so the count feels intentional rather than padded.
The tool set covers the main Steam workflows: discovering games, installing/launching/configuring them, managing library folders and storage, viewing player/profile data, and checking deals/workshop content. Some niche operations like workshop subscribe/unsubscribe or download queue control appear missing, but core lifecycle paths are not dead-ended.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
A Model Context Protocol server for Wix AI tools
An MCP server that gives your AI access to the source code and docs of all public github repos
Related MCP Servers
- AlicenseAqualityAmaintenanceA read-only Model Context Protocol server for Valve's public Steam Web API and storefront. Ask about your friends and games, playtime and achievements, plus account-independent things like sales, reviews, live player counts, Steam Deck compatibility, discovery, and recommendations — bring your own free Steam API key.373MIT
- AlicenseAqualityCmaintenanceMCP server for Steam that enables LLM agents to manage gaming libraries, achievements, stats, and discover store content through 20 tools.212MIT
- AlicenseNot gradedqualityBmaintenanceA Model Context Protocol server that gives AI assistants access to your self-hosted Audiobookshelf library, enabling queries about current listening, searching, and browsing.1MIT
- AlicenseAqualityBmaintenanceMCP server enabling AI assistants to search Steam games, retrieve official store metadata, and analyze player review sentiment via public Steam Storefront JSON APIs without an API key.311MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Praeses0/steam-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server