mcp-ps-store 是一个 MCP(Model Context Protocol)服务器,用于将你的 PlayStation Network(PSN)游戏历史——游玩时长、奖杯、已购游戏库——暴露给 AI 助手,使其能够基于真实数据推荐游戏,而不是凭空猜测。项目使用 Python 编写,无需官方 PSN API。
用途 PSN 没有公开 API。该服务器与 PlayStation 移动应用使用的同一内部 API 通信,通过从浏览器会话中获取的 NPSSO cookie 进行认证。所有请求均为读取操作,绝不会向账户写入任何内容。
主要能力 服务器暴露了 MCP 工具,并提供一个 recommend_games 提示词——一个现成的“构建我的档案并推荐游戏”场景,可接受可选引导,例如“短一点的”或“双人合作”。
使用方式 需要 Python 3.11+。安装后,在浏览器中登录 https://www.playstation.com,打开 https://ca.account.sony.com/api/v1/ssocookie 获取返回的 {"npsso":"..."},复制 64 字符的 npsso 值并运行登录命令。令牌保存在 ~/.mcp-ps-store/tokens.json,权限为 0600。访问令牌有效期为 1 小时,刷新令牌为 10 天,但 NPSSO 本身约两个月,因此服务器会在刷新令牌失效时自动重新认证,一次 psn-login 实际可持续约 60 天。
连接客户端 在 claude_desktop_config.json 中配置即可。Codex 通过 stdio 与本地 MCP 服务器通信,同样支持,可通过 codex mcp add 或编辑 ~/.codex/config.toml 添加,并在 Codex 会话中用 /mcp 检查。ChatGPT 无法启动本地进程,自定义连接器需在开发者模式(Settings → Apps → Advanced)添加,且必须是公开 HTTPS 端点并支持 SSE 或 Streamable HTTP。因此需将服务器切换为 HTTP 传输并发布,然后通过 HTTPS 暴露 http://127.0.0.1:8000/mcp(可使用 OpenAI 的 Secure MCP Tunnel 或 cloudflared/ngrok 等隧道),再将生成的 URL 添加为自定义连接器。注意:这会向任何找到该 URL 的人公开你的 PSN 历史,服务器自身没有认证,因此应将隧道置于认证之后,仅在需要时运行,若本地客户端可用则优先使用 Codex CLI。
适用场景 适合希望 AI 助手基于个人真实 PSN 游戏数据(游玩时长、奖杯、已购库)进行游戏推荐的用户。
限制 游玩时长仅对 PS4/PS5/PC 版本存在。PSN 对 PS3 和 Vita 游戏仅报告奖杯,因此这些游戏显示 hours: null。此处没有 PS Store 目录。商店完全是客户端侧的,其 GraphQL API 只接受持久化查询,而 Sony 每次部署都会轮换哈希,维持其工作不现实。推荐候选来自模型自身的游戏知识,而 psn_owned_games 可防止建议已购买的游戏。已购游戏库通过 PSN 的私有 GraphQL API 获取,如果 Sony 更改查询,该工具将停止工作;其他功能继续运行,摘要中会添加 backlog_unavailable 说明。游玩时长和奖杯按标题连接,因此当重制版与原版共享奖杯集时可能合并。版本、平台后缀和罗马数字会被有意规范化——Alan Wake II 和 Alan Wake 2 视为同一游戏。该 API 是非官方的,Sony 可随时更改。
项目结构采用分层架构:API 层(MCP 工具)、核心层(服务、仓库、DTO)、DI 容器和基础设施层。核心技术包括 Python 3.11+、MCP 协议、httpx(异步)、dependency-injector、pydantic-settings、Poetry、Pytest 和 pytest-asyncio。许可证为 MIT。