mcp-ps-store
mcp-ps-store
MCP-сервер, который предоставляет собственную игровую историю учётной записи PlayStation Network — время игры, прогресс трофеев, купленную библиотеку — чтобы ИИ-ассистент мог рекомендовать игры на основе реальных данных, а не догадок.
Русская версия: README.ru.md.
О проекте
У PSN нет публичного API. Этот сервер общается с тем же внутренним API, который использует мобильное приложение PlayStation, аутентифицируясь с помощью NPSSO-куки, взятой из сессии браузера. Каждый запрос — только чтение; ничего не записывается обратно в учётную запись.
Структура следует многослойной архитектуре: слой API (инструменты MCP), основной слой (сервисы, репозитории, DTO), DI-контейнер и инфраструктурный слой.
Основные технологии
Язык: Python 3.11+
Протокол: Model Context Protocol (
mcp)HTTP-клиент: httpx (асинхронный)
DI-контейнер:
dependency-injectorНастройки:
pydantic-settingsУправление зависимостями: Poetry
Тестирование: Pytest,
pytest-asyncio
Related MCP server: PersonalizationMCP
Что предоставляется
Инструмент | Для чего |
| Основной: единый дайджест — лучшие игры по часам, любимые франшизы, привычки в стиле игры (средняя сессия, доля глубоких погружений, процент платины), игры, близкие к 100%, игры, заброшенные после часа, и покупки, которые никогда не запускались. Начинайте отсюда для любого вопроса о рекомендациях. |
| Фильтруемый список игр: поиск по названию, сортировка по часам / последней игре / прогрессу трофеев, фильтр по платформе, часам, датам и прогрессу. |
| Все трофеи одной игры: полученные или нет, дата, редкость, доля игроков, у которых он есть. |
| Что уже куплено или получено через PS Plus, с указанием часов, где они известны — чтобы не рекомендовать уже имеющееся. |
| Что запускалось последним. |
| Online ID, PS Plus, уровень трофеев, общее количество трофеев. |
| Сбрасывает кеш ответов (ответы PSN кешируются на 10 минут). |
Плюс подсказка recommend_games — готовый сценарий «собери мой профиль и порекомендуй игры», который принимает необязательное указание, например «что-то короткое» или «кооп на двоих».
Быстрый старт
Требуется Python 3.11+.
1. Установка
С помощью Poetry:
poetry installИли с обычным virtualenv:
python3.11 -m venv .venv && .venv/bin/pip install -e .2. Вход в PSN
Войдите в систему на https://www.playstation.com в браузере.
Откройте https://ca.account.sony.com/api/v1/ssocookie — он возвращает
{"npsso":"..."}.Скопируйте 64-символьное значение
npssoи выполните:
poetry run psn-login PASTE_NPSSO_HEREТокены сохраняются в ~/.mcp-ps-store/tokens.json с правами 0600.
О времени жизни сессии. Токен доступа живёт час, а токен обновления — всего десять дней, но сам NPSSO живёт около двух месяцев. Поэтому NPSSO хранится рядом с токенами, и сервер самостоятельно повторно аутентифицируется, когда токен обновления умирает. На практике один psn-login работает около 60 дней.
3. Проверьте, что работает
poetry run psn-doctorОн выводит имя учётной записи, количество видимых игр и пятёрку лучших по часам.
Подключение клиента
Claude Code
claude mcp add ps-store -- /path/to/mcp-ps-store/.venv/bin/python -m app.mainClaude Desktop
В claude_desktop_config.json:
{
"mcpServers": {
"ps-store": {
"command": "/path/to/mcp-ps-store/.venv/bin/python",
"args": ["-m", "app.main"],
"cwd": "/path/to/mcp-ps-store"
}
}
}Codex CLI
Codex общается через stdio с локальными MCP-серверами, поэтому работает так же. Либо выполните codex mcp add, либо добавьте это в ~/.codex/config.toml:
[mcp_servers.ps-store]
command = "/path/to/mcp-ps-store/.venv/bin/python"
args = ["-m", "app.main"]
cwd = "/path/to/mcp-ps-store"Проверьте с помощью /mcp внутри сессии Codex.
ChatGPT
ChatGPT не может запускать локальные процессы. Пользовательские коннекторы добавляются в режиме разработчика (Settings → Apps → Advanced) и должны быть публичной HTTPS-конечной точкой, работающей по SSE или Streamable HTTP. Поэтому сервер необходимо переключить на HTTP-транспорт и опубликовать:
PSN_MCP_TRANSPORT=streamable-http PSN_MCP_PORT=8000 poetry run mcp-ps-storeЗатем откройте http://127.0.0.1:8000/mcp через HTTPS — с помощью Secure MCP Tunnel от OpenAI или туннеля вроде cloudflared / ngrok — и добавьте полученный URL как пользовательский коннектор.
Это публикует вашу историю PSN для всех, кто найдёт URL. У сервера нет собственной аутентификации, поэтому поместите туннель за аутентификацию, держите его включённым только пока он нужен, и предпочтите Codex CLI, если подойдёт локальный клиент.
Конфигурация
Все настройки читаются из окружения или файла .env (см. .env.example).
Переменная | Значение по умолчанию | Описание |
| — | NPSSO-куки. Альтернатива |
|
| Путь к кешу токенов. |
|
| Как долго повторно используются ответы PSN, в секундах. |
|
| Локаль, используемая в ссылках store.playstation.com. |
|
| Тайм-аут HTTP для запросов к PSN, в секундах. |
|
|
|
|
| Адрес привязки для HTTP-транспортов. |
|
| Порт для HTTP-транспортов. |
Ограничения
Время игры существует только для версий PS4 / PS5 / PC. PSN сообщает об играх PS3 и Vita только с трофеями, поэтому они отображаются с
hours: null.Здесь нет каталога PS Store. Магазин полностью клиентский, и его GraphQL API принимает только сохранённые запросы, хеши которых Sony меняет при каждом развёртывании — поддерживать это в рабочем состоянии нереалистично. Кандидаты для рекомендаций берутся из собственных знаний модели об играх, а
psn_owned_gamesне позволяет ей предлагать уже купленное.Купленная библиотека проходит через частный GraphQL API PSN. Если Sony изменит запрос, этот инструмент перестанет работать; всё остальное продолжит работу, а в дайджесте появится примечание
backlog_unavailable.Время игры и трофеи объединяются по названию, поэтому переиздание может объединиться с оригиналом, если у них общий набор трофеев. Редакции, суффиксы платформ и римские цифры намеренно нормализуются —
Alan Wake IIиAlan Wake 2считаются одной игрой.API неофициальный: Sony может изменить его в любое время.
Структура проекта
.
├── app/
│ ├── api/ # MCP layer: tools, prompts, serialisers, tool errors
│ │ ├── games/
│ │ ├── profile/
│ │ └── taste/
│ ├── core/ # Business logic: services, repositories, DTOs
│ │ ├── auth/ # NPSSO -> tokens, refresh, re-login
│ │ ├── games/ # Library, playtime/trophy merge, name normalisation
│ │ ├── profile/ # Account profile and trophy summary
│ │ └── taste/ # Taste digest aggregation
│ ├── di/ # DI containers and providers
│ ├── infra/adapters/ # HTTP client, token storage, TTL cache
│ ├── cli.py # psn-login, psn-doctor
│ └── main.py # MCP server entry point
├── settings/ # pydantic-settings configuration
├── tests/
│ ├── core/ # Merge and aggregation tests
│ └── factories/ # Builders for test data
└── pyproject.tomlРазработка
poetry run pytest # unit tests; no network and no account needed
poetry run psn-doctor # live check against the signed-in accountThis server cannot be installed
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 Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to access and analyze your Hevy workout data, including workout history, exercise progress, personal records, and routines.4463MIT
- Alicense-qualityFmaintenanceEnables AI assistants to access and interact with personal data from platforms like Steam, YouTube, Bilibili, Spotify, and Reddit for personalized, context-aware interactions.58MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to directly access and analyze Strava activity data, including runs, rides, and swims, through natural language queries.410MIT
- Alicense-qualityBmaintenanceSyncs Epic/GOG/Steam game libraries with Chinese metadata, enabling AI agents to recommend games through natural language conversation.1MIT
Related MCP Connectors
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Connect your Player's Bank account to AI via Brazil's Open Finance: balances, statements, cards, inv
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
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/murzin-ml/mcp-ps-store'
If you have feedback or need assistance with the MCP directory API, please join our Discord server