mcpField
P
PlayStation Network

PlayStation Network

ローカル
github.com/murzin-mlゲーム・エンタメ29 週間前に更新

PlayStation Network について

PlayStation Networkは、実際のプレイ履歴に基づくおすすめを求めるプレイヤー向けの、PSN履歴を読み取るMCPサーバーです。プレイ時間、トロフィー、所有ゲームをまとめ、ライブラリの絞り込みやプレイ傾向の分析も行います。

主な機能

  1. 01プレイ時間と最近のゲームを確認
  2. 02ゲームライブラリの絞り込みと並べ替え
  3. 03ゲームのトロフィー詳細を確認
  4. 04購入済み・PS Plusのゲームを一覧表示
  5. 05プレイ習慣と好みを要約

活用シーン

  1. 01プレイ履歴に基づくゲーム推薦
  2. 02ゲームのトロフィー進捗確認
  3. 03所有済みゲームの推薦を回避

MCP 対応

PSNプロフィール、ライブラリ、トロフィー、最近のプレイ、好みの分析を行うツールと、ゲーム推薦用プロンプトをMCPクライアントに提供します。すべてのリクエストは読み取り専用です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"murzin-ml-mcp-ps-store": {
"command": "uvx",
"args": [
"mcp-ps-store"
],
"env": {
"PSN_NPSSO": "<PSN_NPSSO>",
"PSN_STORE_LOCALE": "<PSN_STORE_LOCALE>"
}
}
}
}
起動コマンドuvx mcp-ps-store
設定が必要な環境変数
PSN_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-ps-store0.1.0

ツール

7

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
topintegerいいえプレイ時間上位のゲームを何件含めるか。
include_backlogbooleanいいえ購入済みで未プレイのゲームを含めます。

詳細

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_trophies1 つのゲームの全トロフィーを表示します。取得済みかどうか、日付、レア度、取得しているプレイヤーの割合を確認できます。
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 にサインインする
  1. ブラウザーで https://www.playstation.com にサインインします。
  2. https://ca.account.sony.com/api/v1/ssocookie を開きます。{"npsso":"..."} が返されます。
  3. 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_TTL600PSN のレスポンスを再利用する秒数です。
PSN_STORE_LOCALEen-usstore.playstation.com のリンクで使用するロケールです。
PSN_REQUEST_TIMEOUT30PSN リクエストの HTTP タイムアウト(秒)です。
PSN_MCP_TRANSPORTstdiostdio、streamable-http、または sse です。
PSN_MCP_HOST127.0.0.1HTTP トランスポートのバインドアドレスです。
PSN_MCP_PORT8000HTTP トランスポートのポートです。

制限事項

  • プレイ時間を取得できるのは 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 を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。