PlayStation Network について
PlayStation Networkは、実際のプレイ履歴に基づくおすすめを求めるプレイヤー向けの、PSN履歴を読み取るMCPサーバーです。プレイ時間、トロフィー、所有ゲームをまとめ、ライブラリの絞り込みやプレイ傾向の分析も行います。
主な機能
- 01プレイ時間と最近のゲームを確認
- 02ゲームライブラリの絞り込みと並べ替え
- 03ゲームのトロフィー詳細を確認
- 04購入済み・PS Plusのゲームを一覧表示
- 05プレイ習慣と好みを要約
活用シーン
- 01プレイ履歴に基づくゲーム推薦
- 02ゲームのトロフィー進捗確認
- 03所有済みゲームの推薦を回避
MCP 対応
PSNプロフィール、ライブラリ、トロフィー、最近のプレイ、好みの分析を行うツールと、ゲーム推薦用プロンプトをMCPクライアントに提供します。すべてのリクエストは読み取り専用です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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 がありません。このサーバーは、ブラウザーセッションから取得した NPSSO Cookie で認証し、PlayStation モバイルアプリと同じ内部 API にアクセスします。すべてのリクエストは読み取り専用で、アカウントにデータが書き戻されることはありません。
構成はレイヤードアーキテクチャに従っています。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%に近いゲーム、1 時間でプレイをやめたゲーム、一度も起動していない購入済みゲームをまとめて表示します。ゲームのおすすめを尋ねるときは、まずここから始めてください。 |
psn_library | 絞り込み可能なゲーム一覧です。タイトルで検索し、プレイ時間/最終プレイ日時/トロフィー進行度で並べ替え、プラットフォーム、プレイ時間、日付、進行度で絞り込めます。 |
psn_game_trophies | 1 つのゲームの全トロフィーを表示します。取得済みかどうか、日付、レア度、取得しているプレイヤーの割合を確認できます。 |
psn_owned_games | すでに購入済み、または PS Plus で入手したゲームを、判明している場合はプレイ時間とともに表示します。すでに所有しているゲームがおすすめされるのを防ぎます。 |
psn_recently_played | 最近起動したゲームを表示します。 |
psn_profile | オンライン ID、PS Plus、トロフィーレベル、累計トロフィー数を表示します。 |
psn_refresh | レスポンスキャッシュを消去します(PSN の応答は 10 分間キャッシュされます)。 |
さらに、recommend_games プロンプトも用意されています。「自分のプロフィールを作成してゲームをおすすめする」というシナリオをすぐに実行でき、「短めのもの」や「2 人で遊べる協力プレイ」のような希望を任意で指定できます。
クイックスタート
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
トークンは ~/.mcp-ps-store/tokens.json に 0600 の権限で保存されます。
セッションの有効期間について。 アクセストークンの有効期間は 1 時間、リフレッシュトークンの有効期間は 10 日間ですが、NPSSO 自体は約 2 か月間有効です。そのため、NPSSO はトークンと一緒に保存され、リフレッシュトークンが期限切れになるとサーバーが自動的に再認証します。実際には、psn-login 1 回で約 60 日間利用できます。
3. 動作を確認する
poetry run psn-doctor
アカウント名、表示可能なゲームの数、プレイ時間の多いゲーム上位 5 件が表示されます。
クライアントの接続
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 はローカル MCP サーバーと stdio で通信するため、同じ方法で利用できます。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 はローカルプロセスを起動できません。カスタムコネクターは Developer モード(Settings → Apps → Advanced)で追加します。SSE または Streamable HTTP に対応した 公開 HTTPS エンドポイント が必要です。そのため、サーバーを HTTP トランスポートに切り替えて公開する必要があります。
PSN_MCP_TRANSPORT=streamable-http PSN_MCP_PORT=8000 poetry run mcp-ps-store
次に、http://127.0.0.1:8000/mcp を OpenAI の Secure MCP Tunnel、または cloudflared/ngrok などのトンネルを使って HTTPS で公開し、生成された URL をカスタムコネクターとして追加します。
これにより、URL を見つけた人は誰でも PSN の履歴を閲覧できます。 サーバー自体には認証機能がないため、トンネルに認証を設定し、必要なときだけ起動し、ローカルクライアントで利用できる場合は 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 は非公式です。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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。