关于 PlayStation Network
PlayStation Network 是一个读取 PSN 游戏历史的 MCP 服务,面向希望根据真实游玩记录获得推荐的玩家。它汇总游玩时长、奖杯和已购游戏,并提供游戏库筛选及游玩习惯分析。
主要功能
- 01查看游玩时长与近期游戏
- 02筛选和排序游戏库
- 03查看游戏奖杯详情
- 04列出已购及 PS Plus 游戏
- 05汇总游玩习惯与游戏偏好
适用场景
- 01根据游玩历史寻找游戏推荐
- 02查看某款游戏的奖杯进度
- 03避免推荐已拥有的游戏
MCP 相关
该服务向 MCP 客户端提供 PSN 档案、游戏库、奖杯、近期游玩记录及偏好分析工具,并包含游戏推荐提示词。所有请求均为只读。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx mcp-ps-storePSN_NPSSO密钥NPSSO cookie from https://ca.account.sony.com/api/v1/ssocookie. Optional: `psn-login` stores it for you.PSN_STORE_LOCALELocale used when building store.playstation.com links, e.g. en-us.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
7收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| top | integer | 否 | 要包含多少款按游玩时长排名靠前的游戏。 |
| include_backlog | boolean | 否 | 包含已购买但从未游玩的游戏。 |
详细介绍
mcp-ps-store
PlayStation Network(PSN)的 MCP 服务:它会公开你自己的游戏历史记录 — 游戏时长、奖杯和已购买的游戏库 — 让 AI 助手可以根据真实数据推荐游戏, 而不是凭空猜测。
Русская версия: README.ru.md.
关于
PSN 没有公开 API。此服务使用 PlayStation 手机应用所用的同一内部 API,并通过从浏览器会话中获取的 NPSSO Cookie 进行身份验证。所有请求都只读取数据;绝不会向账户写入任何内容。
该项目采用分层架构:API 层(MCP 工具)、核心层 (服务、仓库、DTO)、DI 容器和基础设施层。
核心技术
- 语言: Python 3.11+
- 协议: Model Context Protocol(
mcp) - HTTP 客户端: httpx(异步)
- DI 容器:
dependency-injector - 设置:
pydantic-settings - 依赖管理: Poetry
- 测试: Pytest、
pytest-asyncio
提供的功能
| 工具 | 用途 |
|---|---|
psn_taste_profile | 核心工具:生成一份摘要,包含按时长排名的热门游戏、最喜欢的系列、游戏习惯(平均游戏时长、深度游玩占比、白金率)、接近 100% 完成度的游戏、玩一小时后弃玩的游戏,以及购买后从未启动的游戏。任何游戏推荐问题都可以从这里开始。 |
psn_library | 可筛选的游戏列表:按标题搜索,按时长/最近游玩/奖杯进度排序,按平台、时长、日期和进度筛选。 |
psn_game_trophies | 单款游戏的所有奖杯:已获得与未获得的奖杯、日期、稀有度,以及拥有该奖杯的玩家占比。 |
psn_owned_games | 已购买或通过 PS Plus 领取的游戏,以及已知的游戏时长 — 避免推荐已拥有的游戏。 |
psn_recently_played | 最近启动过的游戏。 |
psn_profile | 在线 ID、PS Plus、奖杯等级和终身奖杯数量。 |
psn_refresh | 清除响应缓存(PSN 的响应会缓存 10 分钟)。 |
此外还有一个 recommend_games 提示词 — 一个现成的“构建我的档案并推荐游戏”场景,可附带“来点短游戏”或“双人合作游戏”等可选要求。
快速开始
需要 Python 3.11+。
1. 安装
使用 Poetry:
poetry install
或者使用普通虚拟环境:
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
令牌会以 0600 权限保存在 ~/.mcp-ps-store/tokens.json 中。
关于会话有效期。 访问令牌的有效期为一小时,刷新令牌只有十天,但 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.main
Claude 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"
在 Codex 会话中使用 /mcp 检查配置。
ChatGPT
ChatGPT 无法启动本地进程。自定义连接器需要在开发者模式下(Settings → Apps → Advanced)添加,并且必须是使用 SSE 或 Streamable HTTP 的公开 HTTPS 端点。因此,必须将服务切换为 HTTP 传输并公开:
PSN_MCP_TRANSPORT=streamable-http PSN_MCP_PORT=8000 poetry run mcp-ps-store
然后通过 OpenAI 的 Secure MCP Tunnel,或 cloudflared/ngrok 等隧道,将 http://127.0.0.1:8000/mcp 暴露为 HTTPS,并将生成的 URL 添加为自定义连接器。
这样会将你的 PSN 历史记录公开给任何找到该 URL 的人。 服务本身没有身份验证,因此请为隧道启用身份验证,只在需要时运行隧道;如果本地客户端可以满足需求,优先使用 Codex CLI。
配置
所有设置均从环境变量或 .env 文件中读取(参见 .env.example)。
| 变量 | 默认值 | 含义 |
|---|---|---|
PSN_NPSSO | — | NPSSO Cookie。psn-login 的替代方案:设置后,服务会自行登录。 |
PSN_TOKENS_PATH | ~/.mcp-ps-store/tokens.json | 缓存令牌的位置。 |
PSN_CACHE_TTL | 600 | PSN 响应的复用时长,单位为秒。 |
PSN_STORE_LOCALE | en-us | store.playstation.com 链接使用的区域设置。 |
PSN_REQUEST_TIMEOUT | 30 | PSN 请求的 HTTP 超时时间,单位为秒。 |
PSN_MCP_TRANSPORT | stdio | stdio、streamable-http 或 sse。 |
PSN_MCP_HOST | 127.0.0.1 | HTTP 传输的绑定地址。 |
PSN_MCP_PORT | 8000 | HTTP 传输的端口。 |
限制
- 游玩时间数据仅适用于 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 并非官方 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 account
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。