Skip to main content
Glama

steam-mcp-server

MCP server that exposes the Steam Web API as tools for Claude Desktop or Claude Code, running locally over stdio.

Available tools

Tool

Description

get_player_profile

Public profile for one or more users (name, avatar, status)

get_owned_games

Games owned by a user, including playtime

get_family_owned_games

Unified family game library with ownership information

get_recently_played_games

Games played within the last two weeks

get_player_achievements

A user's achievements for a specific game

get_friend_list

A user's Steam friend list

get_friends_current_status

Current status and games being played by your friends

get_friends_recent_activity

Recent activity from your friends

compare_owned_games

Games owned in common with another user

get_app_news

Latest news and updates for a Steam game

get_global_achievement_percentages

Percentage of players who unlocked each achievement

get_current_players

Current player count for a game

resolve_vanity_url

Converts a vanity URL to a SteamID64

search_game

Searches for a game and returns its AppID

get_player_bans

VAC, community, economy, and game ban status

The Steam profile being queried must be public, except when querying your own SteamID with your own API key.

Related MCP server: steam-mcp

1. Get a Steam API key

Go to https://steamcommunity.com/dev/apikey, sign in with your Steam account, and generate an API key. Steam requires at least one game in your library to issue a key.

2. Installation

Requirements: Node.js 18 or later.

npm install
cp .env.example .env       # macOS/Linux
# Windows PowerShell: Copy-Item .env.example .env
# Edit .env and add your STEAM_API_KEY
npm run build

The .env file contains secrets and must not be published. If your network uses SSL inspection, set STEAM_EXTRA_CA to the path of your private CA certificate. Use STEAM_TLS_INSECURE=1 only as a last resort on a trusted network.

Family library

Configure the SteamID64 values of family members as a comma-separated list. MY_STEAM_ID is included automatically:

MY_STEAM_ID=76561199080486814
STEAM_FAMILY_MEMBER_IDS=76561100000000001,76561100000000002

The get_family_owned_games tool returns each game's appid, name, and owner's SteamID64. If a game appears in multiple accounts, owner contains multiple IDs. The Steam Web API does not directly expose games borrowed exclusively through Steam Families; it only returns games that each account exposes as owned.

3. Test with MCP Inspector

This is recommended before connecting the server to a real client.

npm run inspector

This opens a browser UI where you can list and execute the tools manually to verify that they respond correctly.

4. Connect to Claude Desktop

Edit the Claude Desktop configuration file:

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

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

  • Linux: ~/.config/Claude/claude_desktop_config.json

Add the server using the absolute path to your project:

{
  "mcpServers": {
    "steam": {
      "command": "npx",
      "args": ["-y", "@j.meyer/steam-mcp-server"],
      "env": {
        "STEAM_API_KEY": "your_api_key_here"
      }
    }
  }
}

Restart Claude Desktop. The steam server should appear in the tools menu.

5. Connect to Claude Code

claude mcp add steam -- npx -y @j.meyer/steam-mcp-server

Claude Code inherits STEAM_API_KEY if it is defined in your .env file or in the shell environment where you run claude.

Publishing the project

This server is designed to run locally over stdio. Each user must configure their own STEAM_API_KEY and MY_STEAM_ID. Never copy your .env file or include an API key in the published configuration.

Before creating a release, verify the installation from a clean copy:

npm ci
npm run build
npm test
npm run inspector

If you publish it as an npm package, npm publish builds the project automatically and only distributes dist, README.md, .env.example, and LICENSE. The package is available as @j.meyer/steam-mcp-server.

License

This project is licensed under the MIT License. See LICENSE for details.

How to get a SteamID64

Most tools expect a 64-bit steamid (for example, 76561197960435530) rather than a username. You can use the resolve_vanity_url tool to convert a custom Steam URL, or use an external service such as SteamID.io.

Possible next steps

  • Cache responses because Steam has rate limits.

Available Tools

15 tools
compare_owned_gamesComparar juegos en común con un amigoA
Read-only

Cruza tu biblioteca con la de otro usuario para saber qué juegos comparten y cuántas horas tiene cada uno.

ParametersJSON Schema
NameRequiredDescriptionDefault
friend_steamidYesEl SteamID64 del amigo con el que te quieres comparar.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, and the description adds meaningful behavioral detail: it cross-references libraries and returns shared games along with playtime hours per user. It does not mention privacy limitations (e.g., friend's library must be public), but for a simple read-only comparison this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with the action front-loaded ('Cruza') and the purpose immediately stated. Every phrase contributes to understanding the tool's function and output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple tool: one parameter, read-only annotations, and a description that explains both the input (comparing with another user) and the output (shared games and hours per user). No output schema exists, but the description adequately summarizes the result for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, friend_steamid, is fully documented in the schema with a description of the SteamID64. With 100% schema description coverage, the tool description adds no further parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Cruza') and clearly states the resource (your library with another user's) and the outcome (shared games and hours per user). It is easily distinguishable from sibling tools like get_owned_games, which only return a single user's library.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly conveys the context: use this tool when you have a friend's SteamID64 and need the intersection of game libraries. It does not explicitly name alternatives or list exclusion criteria, but the use case is clear enough for an agent to select it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_app_newsNoticias de un juegoA
Read-only

Devuelve las últimas noticias/actualizaciones publicadas para un juego de Steam.

ParametersJSON Schema
NameRequiredDescriptionDefault
appidYesAppID del juego
countNoCantidad de noticias
maxlengthNoLargo máximo del contenido

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safe read-only nature is covered. The description adds only minimal context beyond this, such as 'últimas' implying recency, but does not disclose sorting behavior, response shape, or effects of count/maxlength. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no redundant words. It front-loads the action and resource, making it easy for an agent to quickly understand the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, the parameters are fully documented in the schema, and annotations cover the read-only nature. The description does not explain return value structure or ordering, but for a basic news-fetching tool this is a minor gap rather than a blocking omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with appid, count, and maxlength all described in the input schema. The tool description does not add any parameter-specific meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Devuelve') and names the resource ('últimas noticias/actualizaciones publicadas para un juego de Steam'). It clearly identifies what the tool does and is easily distinguishable from the sibling tools, none of which focus on game news.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: to fetch recent news/updates for a Steam game. However, it does not explicitly state selection criteria, exclusions, or alternatives. The context is clear but left to inference rather than stated directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_playersJugadores conectados ahoraA
Read-only

Devuelve la cantidad total de jugadores activos en un juego en este momento en Steam.

ParametersJSON Schema
NameRequiredDescriptionDefault
appidYesAppID del juego

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only and open-world, so no safety warning is required. The description adds behavioral specificity beyond the annotations by defining the exact output as the current total active player count, which is valuable context for invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. It front-loads the key output and immediately specifies the context, making it easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only Steam endpoint with no output schema and full schema coverage, the description is sufficient. It tells the agent what value is returned, for what kind of input, and the temporal context, which is enough to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the only parameter, 'appid', as 'AppID del juego', providing 100% coverage. The description does not add meaningful parameter detail beyond that, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Devuelve'), a concrete resource ('cantidad total de jugadores activos en un juego'), and a temporal scope ('en este momento en Steam'), which distinguishes it from sibling tools focused on recent games, achievements, friends, and profiles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description's focus on current active player count makes the usage context obvious, but it does not explicitly name alternatives or when-not conditions. The sibling names and the clear temporal wording are enough for an agent to select it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_family_owned_gamesBiblioteca familiar unificadaA
Read-only

Devuelve una lista unificada de juegos de MY_STEAM_ID y los miembros configurados en STEAM_FAMILY_MEMBER_IDS, indicando sus dueños.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description appropriately does not repeat safety semantics. It adds useful context by naming the data sources and noting that owners are included, but it does not disclose return shape, ordering, or error behavior, so the added behavioral detail is moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the core behavior, scope, and output emphasis without filler or repeated schema information. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only tool this is largely complete: it specifies what is returned, which accounts are included, and that ownership is shown. It leaves minor ambiguity about the exact fields of the returned game list, but the absence of an output schema and the simple nature of the request make this acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the input schema fully documents that fact, so there is no parameter burden for the description to carry. The description still adds value by identifying the configuration constants (MY_STEAM_ID and STEAM_FAMILY_MEMBER_IDS) that determine what data is returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Devuelve') and clearly defines the resource: a unified list of games drawn from MY_STEAM_ID and configured family member IDs, with ownership indicated. This effectively distinguishes it from sibling tools like get_owned_games, which focuses on a single user's library.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended use case clear: query the merged family library across configured Steam accounts. However, it does not explicitly state when not to use this tool or directly mention alternative siblings such as get_owned_games or compare_owned_games.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_friend_listLista de amigos de un usuarioB
Read-only

Devuelve tus amigos de Steam (o los de un ID específico).

ParametersJSON Schema
NameRequiredDescriptionDefault
steamidNoSteamID64 (opcional, por defecto el tuyo)
relationshipNoFiltrofriend

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe read-only nature is established. The description adds no further behavioral context such as response format, rate limits, or error behavior, but it also does not contradict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It communicates the essential purpose immediately and is highly efficient for its level of detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two optional parameters, the description is functional but leaves gaps: there is no output schema, so the return shape is undisclosed, and the relationship parameter's distinction between 'all' and 'friend' is not explained. These are minor for this lightweight operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with steamid described as optional and defaulting to the caller's ID, and relationship described as a filter with an enum. The description's mention of 'tus amigos' versus 'un ID específico' only restates the steamid property and adds no new semantic information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Devuelve' / returns) and a clear resource ('amigos de Steam' / Steam friends), with an optional scope for a specific ID. It is consistent with the title, but it does not explicitly compare itself to any sibling tool, so it lacks explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives such as get_friends_current_status or get_friends_recent_activity. The description only says what it returns; it gives no conditions, exclusions, or recommendations for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_friends_current_statusEstado y juegos actuales de mis amigosA
Read-only

Obtiene en tiempo real qué amigos están online y qué juego específico están jugando en este instante.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already cover safety and data scope, so the description only adds the real-time behavior of the data. This is useful but modest; it does not disclose return shape, pagination, latency expectations, or how the status is determined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence conveys the full purpose and the real-time qualifier without any redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool, the description adequately conveys what data is returned: online friends and their current game. However, the absence of an output schema leaves response format unspecified, and the description does not clarify whether offline friends are also included.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline of 4 applies. There are no parameter semantics for the description to clarify beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Obtiene') and a clear resource ('amigos online y qué juego específico están jugando'), with a strong real-time qualifier ('en tiempo real', 'en este instante'). It conceptually distinguishes the tool from siblings like get_friend_list or get_friends_recent_activity, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided about when to use this tool versus siblings such as get_friends_recent_activity or get_recently_played_games. The use case is only implicitly conveyed by the wording, with no when-to-use or when-not-to-use direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_friends_recent_activityJuegos jugados recientemente por mis amigosA
Read-only

Escanea la actividad de tus amigos más activos en las últimas 2 semanas para saber qué se está jugando.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoCantidad máxima de amigos activos a analizar para evitar saturar la API.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, lowering the burden on the description. The description adds meaningful behavioral context by specifying that only the most active friends are scanned and that a two-week window is used, which goes beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and purpose. Every phrase earns its place, with no filler or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only tool with one optional parameter and no output schema, the description provides enough context to understand what the tool does and when to call it. It does not describe the exact return structure, but the simplicity of the tool and the clear purpose make this a minor gap rather than a critical omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the limit parameter is already fully documented in the schema. The description does not add additional meaning to the parameter beyond the schema's own explanation about limiting active friends to avoid saturating the API, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Escanea la actividad'), the target resource ('tus amigos más activos'), and the time window ('últimas 2 semanas'). It distinguishes the tool from current-status siblings by emphasizing recent activity over a two-week period, though it does not explicitly name any alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the intended use case ('para saber qué se está jugando') and gives a temporal scope, but it does not provide explicit guidance on when to prefer this tool over siblings like get_recently_played_games or get_friends_current_status. No exclusion criteria or alternative routing is mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_global_achievement_percentagesPorcentaje global de logros de un juegoB
Read-only

Devuelve el porcentaje de todos los jugadores de Steam que desbloquearon cada logro.

ParametersJSON Schema
NameRequiredDescriptionDefault
appidYesAppID del juego

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the tool is clearly safe to call. The description reinforces that it only reads global percentages, adding modest context beyond the annotation. It does not disclose details like whether hidden achievements are included or how the response is structured, but with the safety annotations present, this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence that immediately conveys the core function. It contains no redundant phrases or padding, making it highly scannable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, read-only tool with no output schema, the description sufficiently explains what the result represents (percentages per achievement for all players). It could be slightly more explicit about the response being a list of achievements, but the overall context is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% because appid is described as 'AppID del juego'. The description does not add significant parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Devuelve'), the resource (achievement percentages), and the scope ('todos los jugadores de Steam'). It is easy to understand what the tool does, but it does not explicitly contrast with related sibling tools like get_player_achievements, so it loses the last point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance about when to use this tool versus alternatives. Although the term 'global' and 'todos los jugadores de Steam' imply this is for aggregate data rather than per-player data, the description never explicitly states that get_player_achievements should be used for a specific player's achievements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_owned_gamesJuegos que posee un usuarioA
Read-only

Lista los juegos que un usuario posee en Steam. Si se omite el ID, lista tus propios juegos.

ParametersJSON Schema
NameRequiredDescriptionDefault
steamidNoSteamID64 del usuario (opcional, por defecto el tuyo)
include_appinfoNoIncluir nombre e ícono de cada juego
include_played_free_gamesNoIncluir juegos free-to-play

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Las anotaciones readOnlyHint y openWorldHint ya cubren la seguridad de la operación. La descripción añade contexto útil sobre el comportamiento por defecto (omisión del ID), pero no detalla paginación, privacidad del usuario o posibles limitaciones de la respuesta.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Una sola oración que comunica el propósito y el comportamieno por defecto, sin relleno ni repetición. La información clave está al inicio y es proporcionada.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Para una herramienta simple de solo lectura con cero parámetros obligatorios y esquema rico, la descripción es suficiente: indica qué devuelve y el comportamiento por defecto. No faltta información esencial para invocarla correctmente, aunque podría mencionar si hay limitaciones de privacidad en cuentas ajenas.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

El esquema documenta el 100% de los parámetros, incluyendo valores por defecto y descripciones. La descripción solo refuerza el comportamieno del parámetr steamid, sin añadir informaación semántica nueva sobre los otross parámetros.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

La descripción usa un verbo específico ('Lista') y un recurso claro ('los juegos que un usario posee en Steam'). El propósito es inambiguo y se distingue por nombre de hermanos como get_recenly_played_games, pero no hay diferenciación explícita respecto a get_family_owned_games o compare_owned_games.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Indica claraente que el ID es opcional y que al omitirlo se listan los juegos propios. Da contexto de uso suficiente para el caso común, pero no menciona cuándo usar alternativas como get_family_owned_games ni excluyes usos.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_player_achievementsLogros de un usuario en un juegoA
Read-only

Devuelve los logros de un usuario (o los tuyos por defecto) para un juego.

ParametersJSON Schema
NameRequiredDescriptionDefault
appidYesAppID del juego (ej: 730)
steamidNoSteamID64 del usuario (opcional)
languageNoIdioma (ej: 'spanish')

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, so the description does not need to restate safety. It adds one useful behavioral detail: the default to 'tus' when no user is specified. It does not describe the response format, possible empty results, or authentication requirements, but for a simple read-only lookup this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the main outcome before the default-user nuance. There is no filler, redundant restatement, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a low-complexity tool with one required parametter, full schema coverage, and read-only annotations. The description's 'Devuelve los logros de un usuario ... para un juego' is sufficient for an agent to understand the basic invocation. It could mention the shape of the returned achievements, but the absence of an output schema is partially mitigated by how simple the operation is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters with 100% description coverage, so the baseline is already strong. The description contributes additional meaning by clarifying that steamid is optional and that omitting it returns the caller's own achievements, which is not explicit in the schema. 'para un juego' also maps naturally to the required appid parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Devuelve') and a clear resource ('logros de un usuario ... para un juego'), and it adds the useful nuance that omitting the user returns the caller's own achievements. It does not explicitly name or contrast a sibling tool, though 'de un usuario' implies it is player-specific rather than global.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives enough context to know when to call it: pass an appid and optionally a steamid, with a sensible default to the caller's own achievements. However, there are no explicit exclusions or alternative tool suggestions, so the usage guidance remains implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_player_bansEstado de bans de un jugadorA
Read-only

Devuelve el estado de VAC, comunidad, economy y game bans de uno o varios SteamIDs. Incluye el appid de cada game ban específico cuando aplica.

ParametersJSON Schema
NameRequiredDescriptionDefault
steamidsYesLista de SteamID64 a consultar

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Las anotaciones ya indican readOnlyHint y openWorldHint, así que la descripción no neceita repetirlo. Aporta contexto adicional sobre el contenido devuelto (tipos de bans y appid de game bans), lo que ayuda al agente a saber qué esperar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dos frases cortas y directas, con la información principal al principio y sin relleno. Cada frase aporta valor: qué devuelve y qué detalle adicional incluye.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

La herramienta es simple, con un solo parámetro y anotaciones que cubren seguridad y alcance. La descripción indica entrada (SteamiDs) y salida (estado de bans y appid), suficiente para invocarla corectamente aunque no haya esquema de salida.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

El esquema cubre el 100% del parámetro steamids, incluyendo tipo, rango y descripción. La descripción solo repite que admite uno o varios SteamiDs, sin añadir formato o detales que el esquema no contenga ya.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

La descripción usa un verbo específico ('Devuelve') y un recurso claro: el estado de VAC, comuniad, economy y game bans para uno o varios SteamiDs. Se distingue bien de los hermanos, que tratan logros, amigos, juegos y noticias, no bans.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

El contexto de uso está claro: se usa para consultar el estado de bans de jugadores. No menciona explícitamente alternativas ni exclusions, pero no hay un hermano similar que haga lo mismo, por lo que la orientación es suficiente.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_player_profilePerfil de jugador de SteamA
Read-only

Devuelve el perfil público de uno o varios usuarios. Si la lista está vacía, devuelve tu propio perfil.

ParametersJSON Schema
NameRequiredDescriptionDefault
steamidsNoLista opcional de SteamID64. Si se omite, usa tu propio ID.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Las anotaciones ya indican readOnlyHint=true y openWorldHint=true, y la descripción no las contradice. Añade valor al transparentar el comportamiento del caso vacío (fallback al propio perfil), que no está en las anotaciones.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dos frases concisas que comunican el comportamiento principal y el edge case más importante. No hay redundancia ni relleno; cada palabra aporta.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Para un tool de una sola operación de lectura con un parámetro opcional, anotaciones que cubren seguridad y sin esquema de salida, la descripción es suficiente: explica qué devuelve, sobre quién y qué ocurre cuando no se especifican IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

La cobertura del esquema es del 100%: la descripción del parámetro steamids ya documenta su opcionalidad y el valor por defecto. La descripción del tool repite casi lo mismo ('si la lista está vacía, devuelve tu propio perfil'), sin añadir significado adicional relevante.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

La descripción especifica un verbo claro y el recurso ('devuelve el perfil público de uno o varios usuarios') y añade un matiz útil (perfil propio si la lista está vacía). No hay hermanos visibles que la diferencien, pero el propósito es inequívoco.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

La descripción implica cuándo usarlo (consultar perfiles públicos de Steam) y aclara el comportamiento con lista vacía u omitida, pero no ofrece criterios explícitos de cuándo no usarlo ni alternativas. El contexto de uso es claro pero no se declaran exclusiones.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recently_played_gamesJuegos jugados recientementeA
Read-only

Lista los juegos jugados en las últimas 2 semanas. Por defecto usa tu ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoLímite opcional de juegos
steamidNoSteamID64 del usuario (opcional)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate that this is a read-only operation, and the description adds the 2-week scope and the default-ID behavior. These are useful, but richer behavioral context such as authentication assumptions, response format, or pagination is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two short sentences, front-loading the action and scope before the default behavior. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, low-complexity read-only tool with no required parameters and full schema coverage, the description is largely complete: it gives the time window and the default ID behavior. It does not describe the return payload, but no output schema exists and the tool's purpose makes the return shape reasonably inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters with 100% coverage. The description adds extra meaning by stating that steamid defaults to the caller's own ID, which clarifies the optionality beyond the schema. This pushes it above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Lista') and states the exact resource ('juegos jugados en las últimas 2 semanas'), making the tool's purpose immediately clear. The 2-week window also distinguishes it from sibling tools like get_owned_games or get_family_owned_games.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful context by specifying the time window and the default behavior of using the caller's ID. However, it does not explicitly mention any sibling alternative or state when not to use this tool, so the agent must infer selection among the many game-related sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_vanity_urlResolver vanity URL de SteamA
Read-only

Convierte una URL personalizada (ej: 'miusuario' de steamcommunity.com/id/miusuario) a un SteamID64.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_typeNo1: perfil individual, 2: grupo, 3: grupo de juego oficial1
vanityurlYesFragmento de la vanity URL (sin la URL completa)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the core transformation behavior and an example, but it does not disclose behavior for invalid vanity URLs, potential API errors, or whether url_type changes resolution semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the verb and result, with the example embedded in parentheses. Every element earns its place and there is no redundant restating of the tool name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, read-only resolver with a fully described schema, the description adequately explains what the tool does and what it returns. Minor gaps remain around failure behavior and how url_type affects resolution, but these are not critical for the basic calling decision.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: both vanityurl and url_type already have descriptions in the schema. The description adds a useful concrete example for vanityurl but no additional meaning for url_type, so it sits at the baseline for schema-covered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Convierte', names the resource (URL personalizada / vanity URL), and states the output (SteamID64), backed by a concrete example. It is clearly distinct from the sibling getters, none of which resolve vanity URLs to IDs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is clear: use this tool when you have a custom Steam vanity URL and need the corresponding SteamID64. It does not explicitly name alternatives or exclusions, but no sibling tool performs this conversion, so the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_gameBuscar juego por nombreA
Read-only

Busca juegos en Steam por término y devuelve coincidencias con su appid. Útil para obtener el appid a partir del nombre.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesTérmino de búsqueda (nombre del juego)
limitNoMáximo de resultados

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to re-state safety. It adds that the tool returns matches with appid, which is useful, but does not disclose search behavior (e.g., fuzzy vs exact matching, result ordering, or pagination). This is acceptable given the annotation coverage and simple nature but not rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and effective: one sentence states what the tool does, and the second gives the primary use case. No filler or redundant repetition of the input schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only search tool with two well-documented parameters and no output schema, the description provides enough context: it names the search domain, the input concept, and the output concept (appid matches). It could add a note about exact-match behavior or result format, but the core information an agent needs to invoke it is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (term and limit) are already documented. The description references 'término' and 'appid' but adds no meaning beyond the schema. The baseline of 3 applies because the schema carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Busca juegos en Steam por término') and the output ('devuelve coincidencias con su appid'), distinguishing it from the sibling tools, which are all get_* operations with different purposes. The mention of 'Steam' and 'appid' makes the resource and use case unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a practical usage cue: 'Útil para obtener el appid a partir del nombre', which tells the agent when to use this tool (when you have a game name and need its appid). It does not explicitly mention when not to use it or alternatives, but there are no obvious sibling search tools that compete directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation4/5

Most tools target a distinct resource or action, but there is some overlap among friend-related tools (get_friend_list, get_friends_current_status, get_friends_recent_activity) and owned-game tools (get_owned_games, get_family_owned_games, compare_owned_games). The descriptions do enough to differentiate them by purpose and output, so confusion is unlikely for an agent.

Naming Consistency4/5

The vast majority of tools follow a get_<resource> pattern, making the set predictable. The exceptions are compare_owned_games, resolve_vanity_url, and search_game, which are still clear action_<resource> names but break the dominant get_ prefix convention.

Tool Count5/5

15 tools is at the upper bound of the ideal range, but each tool covers a meaningful and distinct Steam API capability. There is no apparent filler or redundant tool that could be removed without losing functionality.

Completeness5/5

The tool set covers the main public Steam domains: profiles, friends, games owned/played, achievements, bans, player counts, app news, and search. For a read-only Steam MCP server, it provides a well-rounded surface and users can resolve IDs, search games, and access both individual and aggregate data.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Connects Claude to your Steam library via the Steam Web API. Query your games, playtime, recently played history, and store metadata using natural language. Zero-config install via npx steam-mcp.
    5
    18
    5
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Exposes Steam Web API tools as MCP resources for Claude Code, Claude Desktop, and Gemini CLI, enabling profile lookups, game searches, achievement tracking, and more.
    11
    18
    1
    MIT

Latest Blog Posts

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/julianmeyerr/steam-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server