Skip to main content
Glama

steam-mcp

MCP-сервер для подбора игр Steam под конкретного человека. Он сверяет магазин с тем, во что игрок реально наигрывает часы, и смешивает это с тем, что игрок сам говорит, что ему сейчас хочется.

Инструментов десять. recommend_games — парадная дверь; остальные существуют для того, чтобы рейтинг можно было расспросить, а не принимать на веру.

Инструмент

Нужен ключ

Что делает

recommend_games

нет (лучше с ключом)

Ранжирует магазин по заявленному предпочтению с персонализацией по библиотеке

get_taste_profile

да

Приверженность тегам, взвешенная по игровому времени; главные жанры; фирменные игры

search_games

нет

Структурный поиск по каталогу: теги, цена, платформа, дата выхода, скидка

get_game_details

нет

Описание, теги, цена, обзоры, Metacritic, совместимость со Steam Deck

find_similar_games

нет

«Похоже на Hades»: поиск по суммарным тегам исходных игр

get_game_reviews

нет

Расклад оценок плюс текст самого полезного отзыва

list_tags

нет

Словарь тегов Steam — чтобы точно называть имена

get_my_library

да

Приобретённые игры с часами, сначала самые наигранные

get_wishlist

нет (публичный профиль)

Список желаемого с текущей ценой и скидкой

get_recently_played

да

Игра за последние две недели

Запуск

npm install && npm run build
claude mcp add -s user steam-mcp -e STEAM_ID=<your SteamID64> -- node /path/to/steam-mcp/dist/index.js

Переменные окружения:

  • STEAM_ID (необязательно): игрок по умолчанию в виде SteamID64. Инструменты также принимают vanity-имя или URL профиля при каждом вызове.

  • STEAM_API_KEY (необязательно): со страницы https://steamcommunity.com/dev/apikey. Ключ нужен только путям библиотеки, недавних сессий и разрешения vanity-имён. Всё остальное, включая список желаемого в публичном профиле, работает без ключа, поэтому сервер полезен и вовсе без учётных данных — просто не может персонализировать.

Дисковый кэш лежит в $XDG_CACHE_HOME/steam-mcp (по умолчанию ~/.cache). Эндпоинт appdetails магазина ограничен примерно 200 запросами за пять минут на IP; клиент держит на нём паузу 1,5 с, а остальные опрашивает заметно быстрее и агрессивно кэширует (детали — шесть часов, теги и данные Deck — неделю), так что повторная рекомендация в тот же присест почти бесплатна. Каждый инструмент, обогащающий список, работает с дедлайном и сообщает, сколько игр он пропустил — поэтому длинный запрос вернётся частичным ответом, а не таймаутом на прокси.

Related MCP server: Steam Review and Forum MCP

Как работает ранжирование

Вся модель находится в src/taste.ts.

Профиль. Часы каждой сыгранной игры раскладываются по тегам сообщества пропорционально их доле голосов, поэтому часы милсима уходят в основном в Military и Tactical, а в Multiplayer — лишь тоненькая струйка. Поверх этого работают три правки:

  • Теги взвешиваются по редкости, выведенной из порядка популярности словаря тегов самого Steam (без дополнительных запросов). Без этого любой профиль начинался бы с Action, Open World, Simulation — кем бы игрок ни был.

  • Игры одной студии объединяются в пул перед сжатием. Три записи Arma — это три замера одного вкуса, а не утроенное количество доказательств.

  • Часы берутся под квадратный корень. Один выброс по-прежнему лидирует, но не переписывает весь профиль.

Игра за последние две недели, когда есть ключ, считается ещё вторым проходным поверх часов за всё время: один раз как история, а ещё раз — как то, что игроку интересно теперь.

Оценка. Два сигнала на одной шкале 0..1, смешиваемые поровну: fit — косинус между теговым вектором кандидата и профилем, нормированный относительно того, что вообще способна выдать какая-либо игра; и want — насколько его теговая масса совпадает с запрошенным игроком. Затем игровые отзывы штрафуют кандидата ниже линии Steam «Mostly Positive» (70%) и просто не поощряют выше, потому что кандидаты уже приходят отсортированными по отзывам, а поощрять популярность ещё раз — это считать её дважды. Любая возвращённая запись matchedOn даётся в баллах и сообщает, где её заработали — в библиотеке или в запросе.

Порядок. Итоговый список жадно перестраивается ради разнообразия: кандидат теряет до 40% своих баллов, если похож на уже подготовленного. Баллы отдаются как есть; меняется только порядок — и это отмечено в описании инструмента.

Тесты

npm test

Обе комплекта запускаются против живого API намеренно. test/smoke.mjs ведёт собранный сервер через настоящий MCP stdio — это единственное место, где вскрывается молча брошенная схема или изменившийся эндпоинт магазина. test/taste.ts прогоняет модель на test/fixtures/library.json, реальной библиотеке из 45 игр, и проверяет поведение ранжирования, а не точные числа, потому что теговые голоса дрейфуют. Задайте STEAM_API_KEY, чтобы покрыть также инструменты с ключом.

Развёртывание с ключом

Долгоживущий stdio-сервер не может получить ключ из брокера секретов с областью действия запроса, поэтому развёртывание с ключом уходит туда, куда можно вставить переменную окружения при старте процесса: строку environment= в supervisord, переменную Nomad или EnvironmentFile в systemd. Сервер читает STEAM_API_KEY один раз при запуске и никогда никуда его не пишет.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Steam Web API: profiles, owned games, achievements, app news, player counts.

  • Explore and discover video games from the Internet Game Database. Search titles, view detailed inf…

  • Steam concurrent player trends for any game over time. Free key at trendsapi.ai

View all MCP Connectors

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/312-dev/steam-mcp'

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