Steam y Game Server MCP
Servidor MCP (Model Context Protocol) para consultar, diagnosticar y administrar perfiles de Steam, bibliotecas de juegos, jugadores concurrentes y estado de servidores de juegos.
Se utiliza en clientes MCP como Cursor, Claude Desktop, VS Code, Windsurf, etc.
1. Introducción
| Categoría | Contenido |
|---|
| Rol | Integración de Steam Web API + servidores de juegos (Query/RCON/logs) |
| Steam | Consulta de perfiles, bibliotecas de juegos, jugadores concurrentes, noticias de aplicaciones |
| Game Server | Consulta de estado del servidor basada en gamedig, RCON (kick/ban/restart), parseo de logs |
2. Requisitos
- Node.js 18+
- Cliente MCP (Cursor, Claude Desktop, VS Code, Windsurf, etc.)
STEAM_API_KEY — Obtener clave de API de Steam
Se toma como base la inclusión de variables de entorno en env de la configuración MCP. .env se usa solo para desarrollo local.
3. Configuración MCP
3.1 Configuración estándar (npx)
# 사전 설치 없이 npx로 최신 버전 실행 (최초 1회 실행 시 패키지를 내려받습니다)
npx steam-game-server-mcp@latest --help
{
"mcpServers": {
"steam-game-server": {
"command": "npx",
"args": ["steam-game-server-mcp@latest"],
"env": {
"STEAM_API_KEY": "your_key",
"STEAM_ID": "your_steam_id",
"STEAM_MCP_SERVERS_PATH": "C:/path/to/servers.json"
}
}
}
}
STEAM_MCP_SERVERS_PATH: si no se configura, se usa ./servers.json. Si no hay ninguno, solo funcionan las herramientas de Steam
3.2 Cursor
Settings → MCP → Add new MCP Server
- Ingresar el JSON anterior (o especificar la ruta de compilación local con
command como node y args como ["/path/to/dist/index.js"])
3.3 Resumen por clave de env
| Clave de env | Obligatorio | Uso |
|---|
STEAM_API_KEY | O | Autenticación de la API de Steam. Obligatorio al usar herramientas de Steam |
STEAM_ID | X | ID de Steam predeterminado. Si no existe, se requiere el argumento steamId al llamar a la herramienta |
STEAM_MCP_SERVERS_PATH | X | Ruta de servers.json. Necesaria al usar herramientas de Game Server |
SERVER_RCON_PASSWORD etc. | X | Contraseña RCON. Al usar herramientas de Admin, configurar con un nombre que coincida con passwordEnv de servers.json |
STEAM_MCP_ADMIN_TOKEN | X | Necesaria al llamar a add_server, remove_server. Debe coincidir tanto el env como el parámetro adminToken para ejecutarse |
3.4 Conjuntos de env según el escenario de uso
| Escenario | env | Archivo |
|---|
| Solo consulta de Steam | STEAM_API_KEY, STEAM_ID (opcional) | - |
| Consulta de Game Server | STEAM_API_KEY, STEAM_MCP_SERVERS_PATH | servers.json |
| Game Server + RCON Admin | Lo anterior + SERVER_RCON_PASSWORD | servers.json (incluye config RCON) |
| add_server, remove_server | Lo anterior + STEAM_MCP_ADMIN_TOKEN | servers.json |
4. Herramientas MCP (26)
Steam (7)
| Herramienta | Descripción |
|---|
steam_resolve_vanity_url | Conversión de URL personalizada → SteamID |
steam_get_player_summary | Resumen de perfil |
steam_get_owned_games | Lista de juegos en propiedad |
steam_get_recently_played | Juegos jugados recientemente |
steam_get_current_players | Jugadores concurrentes por aplicación |
steam_get_servers_at_address | Consulta de servidor de juego por IP |
steam_get_app_news | Noticias/notas de parche de la aplicación |
Game Server (3)
| Herramienta | Descripción |
|---|
game_server_query | Estado del servidor (nombre, mapa, jugadores, ping) |
game_server_players | Lista de jugadores |
game_server_rules | Reglas del servidor (cvars) |
Monitoring (6)
| Herramienta | Descripción |
|---|
server_overview | Consulta de estado de todos los servidores |
server_health | Diagnóstico de un solo servidor |
server_diagnose | Diagnóstico para IA |
server_compare | Comparación de servidores + recomendación |
server_alert | Filtrado de servidores con problemas |
server_trend | Tendencia de jugadores |
Admin (4) — requiere RCON
| Herramienta | Descripción |
|---|
server_admin_kick_player | Expulsar jugador |
server_admin_ban_player | Banear jugador |
server_admin_restart_server | Reiniciar servidor |
server_admin_rcon_command | Comando RCON de whitelist |
Inventory (4)
| Herramienta | Descripción |
|---|
add_server | Agregar servidor a servers.json |
remove_server | Eliminar servidor de servers.json |
list_servers | Lista de servidores registrados |
auto_discover_servers | Búsqueda de candidatos con Steam Master Server |
Discovery (1)
| Herramienta | Descripción |
|---|
steam_discover_servers | Búsqueda de servidores de juego con Steam Master Server Query |
Log (1)
| Herramienta | Descripción |
|---|
log_recent_events | Extrae player_join/leave y errores desde logPath (ruta de archivo local) de servers.json |
5. Pruebas
Pruebas automáticas (Vitest)
npm test
- config/servers, server-tools, inventory-tools, admin-tools, discovery-tools, log-tools, steam-tools, rcon/client — 76 en total
Pruebas manuales
- Consulta de Game Server: registrar un servidor público de Minecraft (Hypixel, etc.) en servers.json y llamar a
game_server_query, server_overview
- RCON: ejecutar un servidor mock con
npm run rcon:server → STEAM_MCP_SERVERS_PATH=./test/rcon/servers.rcon-test.json SERVER_RCON_PASSWORD=test123 npm run rcon:test -- my-rust status
6. Advertencias y restricciones de implementación
Condiciones de error
- Tipo gamedig:
type debe coincidir con GAMES_LIST
- RCON: si es
rcon.enabled: true pero no existe un env correspondiente en passwordEnv, se devuelve "RCON not configured for this server."
- STEAM_API_KEY: si no se configura, todas las herramientas de Steam devuelven
"STEAM_API_KEY 환경 변수를 확인하세요."
Restricciones de implementación
| Elemento | Restricción |
|---|
log_recent_events | logPath solo admite rutas de archivo locales accesibles por el proceso MCP. No se permiten URL remotas/SSH. Juegos compatibles: rust, counterstrike2/csgo/tf2 y otros motores Source, minecraft |
server_trend | Al llamar a game_server_query se acumulan muestras. Si se llama solo a trend, puede que no haya datos |
add_server, remove_server | Se debe ingresar el mismo valor que el env STEAM_MCP_ADMIN_TOKEN en el parámetro adminToken para que se ejecute |
7. Configuración de desarrollo
npm install
npm run build
npm run dev # 또는 npm start
Al ejecutar localmente, configure STEAM_API_KEY, STEAM_ID, contraseñas RCON, etc. en .env.