Skip to main content
Glama
megabaka404

steam-personal-mcp

by megabaka404

Steam Personal + Store MCP

ローカルで動作する Steam MCP Server。デフォルトで、ドメイン別に整理された 12 個の複合 tool を公開します。

できること

個人データ

player は Profile、現在のゲーム、可視性を照会します。library はゲームライブラリ、プレイ時間、最近のプレイ、backlog、積みゲー、復帰候補を照会します。achievements は実績の詳細、達成度、最近の解除を照会します。friends はフレンドと公開されている共通ゲームを照会します。

ストア、割引、ウィッシュリスト

store は詳細の検索、ゲームの比較、DLC の表示を行います。deals は特価、大幅割引、セールを照会します。wishlist はウィッシュリスト、価格履歴、値下げ、発売状況の変化、および根拠のある buy / wait / skip の提案を表示します。

レコメンドと統合ゲームプロファイル

recommendations はストア候補、類似ゲーム、新作、backlog、ライブラリ重複度の分析をリコールします。候補の candidate_score は検索の優先順位のみを示し、最終的な適合度や購入の信頼度ではありません。最終判断はそれを呼び出す AI に委ねられます。

game_intel(action="snapshot") は、あるゲームについて以下を集約します。

  • 個人の所有状態、総プレイ時間、最近のプレイ時間、最終プレイ日、実績。

  • 現在価格、元値、割引、MCP が観測した価格履歴。

  • 総合評価、最近の評価、評価数、利用可能な 7/30/90 日トレンド。

  • Steam Deck ステータス、Workshop サポート、現在のプレイヤー数、解釈可能な人気指標。

  • 発売日、更新/build 情報、DLC、所有済み DLC、不足している DLC。

  • ローカルインストールパス、SizeOnDisk、実際のディレクトリサイズ、shadercache。Windows の compatdata は明示的に not_applicable とマークされます。

ローカル Steam と安全なクリーンアップ

local_steam は Windows の libraryfolders.vdf、appmanifest ファイル、インストール済みゲーム、ディスク使用量を読み取ります。storage_cleanup は scan、preview、clean の 3 ステップに分かれており、scan は決して削除しません。clean は appids、targets を明示的に指定し、confirm=true を渡す必要があります。shadercache は低リスク、compatdata はデフォルトで高リスクであり、Windows の最初のバージョンでは適用されません。

Related MCP server: gamelibs-mcp

複合 tool / action

player: profile | currently_playing | visibility
library: search | stats | most_played | recent | abandoned | never_played | low_playtime | backlog | return_to | game
achievements: details | summary | recent | almost_completed | completion_candidates
friends: list | playing | activity | shared
store: search | details | compare | dlc
deals: specials | deep_discounts | search_sales | summary
wishlist: list | sales | best_deals | price_history | price_drops | release_watch | buy_advice | purchase_candidates
recommendations: store | similar | new_releases | library | backlog | return_to | next | overlap | pick
activity: record | sessions | recent_sessions | year_review | game_change_history
game_intel: snapshot | update_impact
local_steam: scan | installed | disk_usage
storage_cleanup: scan | preview | clean

プロジェクト自体は外部 LLM を呼び出しません。読み取り、フィルタリング、集約、観測の記録、構造化された証拠の返却を行い、最終的なレコメンド判断は上位モデルが行います。

クイックスタート

以下のコマンドは Windows PowerShell 向けです。

ステップ 1: プロジェクトディレクトリに入る

GitHub からダウンロード:

git clone https://github.com/megabaka404/steam-personal-mcp.git
Set-Location steam-personal-mcp

プロジェクトがすでにローカルにある場合:

Set-Location -LiteralPath '你的项目目录\steam-personal-mcp'

ステップ 2: 環境を作成し依存関係をインストール

プロジェクトには Python 3.10 以降が必要です。

py -3 -m venv .venv
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt

ステップ 3: Steam を設定

設定ファイルをコピーして編集:

Copy-Item .env.example .env
notepad .env

少なくとも以下を記入:

STEAM_API_KEY=你的Steam_Web_API_Key
STEAM_ID=你的SteamID64

API Key の取得:

https://steamcommunity.com/dev/apikey

注意:

  • STEAM_ID は SteamID64 でなければなりません。

  • Steam Profile と Game Details は外部から見える必要があります。そうでないと個人データを読み取れない場合があります。

  • デフォルトでは中国リージョンのストアを使用します。ストアの価格は STEAM_STORE_COUNTRY と STEAM_STORE_LANGUAGE に依存します。

オプション設定:

STEAM_MCP_HOST=127.0.0.1
STEAM_MCP_PORT=8789
STEAM_MCP_COMPACT_TOOLS=true
STEAM_MCP_LEGACY_TOOLS=false
STEAM_STORE_COUNTRY=cn
STEAM_STORE_LANGUAGE=english
STEAM_HISTORY_DB=data/steam_history.sqlite3

デフォルトで 12 個の複合 tool が有効です。どうしても従来の細かい粒度の tool を使い続ける必要がある場合は、以下を設定できます:

STEAM_MCP_COMPACT_TOOLS=false
STEAM_MCP_LEGACY_TOOLS=true

Steam ストアのリージョンを切り替える

ストアのリージョンは Steam の 2 桁の国/地域コードを使用し、.env の STEAM_STORE_COUNTRY で変更します。変更後、MCP サービスを再起動すると有効になります。デフォルトは中国リージョンです。

中国リージョン:

STEAM_STORE_COUNTRY=cn
STEAM_STORE_LANGUAGE=schinese

米国リージョン:

STEAM_STORE_COUNTRY=us
STEAM_STORE_LANGUAGE=english

日本リージョン:

STEAM_STORE_COUNTRY=jp
STEAM_STORE_LANGUAGE=japanese

その他の一般的なコードには gb(イギリス)、de(ドイツ)、fr(フランス)があります。プロジェクトは自動で為替換算を行いません。リージョンを切り替えると、価格、通貨、割引、一部の Store 検索結果が変わる可能性があります。

ステップ 4: まず Mock モードでサービスを確認

Mock サービスを起動:

python server.py --mock

別の PowerShell ウィンドウで確認:

Invoke-WebRequest http://127.0.0.1:8789/health | Select-Object -ExpandProperty Content
Invoke-WebRequest http://127.0.0.1:8789/debug/status | Select-Object -ExpandProperty Content

ヘルスチェックの成功を確認できたら、実際の Steam モードを起動します。

ステップ 5: 実際のサービスを起動

HTTP モード:

python server.py

MCP アドレス:

http://127.0.0.1:8789/mcp

stdio モード:

python server.py --stdio

Mock データが必要な場合:

python server.py --stdio --mock

注: デフォルトは中国リージョンです。リージョンを変更するには、ターミナルで MCP を起動する前に以下を入力します: $env:STEAM_STORE_COUNTRY="cn" $env:STEAM_STORE_LANGUAGE="schinese" 他の国や地域も同じ方法でコードを変更すればよいです。

MCP クライアント設定

クライアントが Streamable HTTP をサポートしている場合、以下を追加:

{
  "mcpServers": {
    "steam-personal": {
      "url": "http://127.0.0.1:8789/mcp"
    }
  }
}

/health を MCP アドレスとして使わないでください。これはヘルスチェック用のインターフェースにすぎません。

stdio クライアントは、python server.py --stdio を起動するコマンドとして設定し、プロジェクトの仮想環境の Python を使用します。

接続が成功したら、直接質問できます:

我的游戏库里有哪些几乎没玩过的游戏?
Darkest Dungeon 现在值得买吗?
把我的愿望单按当前折扣列出来。
根据我最近玩过的游戏召回 15 个候选,但只给证据,不要直接替我下结论。

データソースと制限

  • 個人データは主に Steam Web API から取得します。ストアデータは Steam Store インターフェースから取得します。

  • Steam プロフィール、ゲーム詳細、統計のプライバシー設定により、データが欠落する場合があります。

  • 一部のゲームは実績、プレイヤー統計、公開評価に対応しておらず、関連フィールドは空になります。

  • ストアインターフェースは完全で安定した Steam の全カタログではありません。検索結果はリージョン、言語、インターフェースの制限の影響を受ける場合があります。

  • 価格、通貨、割引は設定されたストアリージョンに基づいて返されます。

  • 評価データは Steam インターフェースが確実に提供する場合にのみ入力され、完全性のために推測することはありません。

  • 実績の読み取りに失敗した場合、「すべて未解除」と偽装することはありません。

  • 価格履歴、プレイセッション、年間レビューはこの MCP のローカル観測結果であり、Steam 公式の完全な履歴ではありません。

プロジェクト構造

server.py          服务入口
config.py          环境变量和启动参数
runtime.py         HTTP/stdio 运行时
clients/           Steam API 和 Store 客户端
services/          业务逻辑、推荐、历史记录
tools/             MCP 工具实现
models/            Pydantic 数据模型
tests/             自动化测试
data/              本地历史数据库目录

ライセンス

リポジトリ内のライセンスファイルを基準にしてください。Steam データは Steam/Valve のサービス内容に属します。本プロジェクトは公開インターフェースを読み取り、ローカルで整理・分析するだけです。


Store の検索結果がなぜ不完全なのか?

公開されている Store search / featured endpoint は Steam 商品の全量データベースではありません。

そのため、以下の tool は有界な候補セットを返します:

search_store
search_sales
new_releases_for_me
recommend_store_for_me

特定のゲームを照会する必要がある場合は、AppID を優先して使用してください。

価格のリージョンが正しくない

.env のリージョンと言語を確認してください。例:

STEAM_STORE_COUNTRY=cn
STEAM_STORE_LANGUAGE=schinese

次のように変更することもできます:

us
jp
...

変更後はサービスを再起動してください。プロジェクトは自動で為替換算を行いません。

セキュリティ

  • .env をコミットしない

  • Steam API Key をコミットしない

  • Steam パスワードを保存しない

  • Steam Guard を保存しない

  • Steam Cookie は不要

  • API Key をログに出力しない

  • debug endpoint は secret を返さない

  • Steam のプライバシー設定を迂回しない

  • 自動で購入、取引、Steam アカウントの変更を行わない

  • デフォルトでは 127.0.0.1 のみにバインド

公網にデプロイする場合は、以下を追加で設定する必要があります:

  • HTTPS

  • Bearer / OAuth / reverse proxy authentication

  • 適切なリクエスト制限

  • ログのマスキング


テスト

テストは mock clients または httpx.MockTransport を使用し、実際の Steam の状態に依存しないようにしてください。

実行:

pytest

Mock MCP スモークテスト:

python server.py --mock

Invoke-WebRequest http://127.0.0.1:8789/health
Invoke-WebRequest http://127.0.0.1:8789/debug/status

本プロジェクトは ChatGPT と Codex の支援により完成しました。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that exposes your Steam, Epic Games Store, and IGDB game data as tools, enabling game library queries, install status checks, and metadata enrichment.
    12
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that connects AI assistants to the Steam Web API and storefront, enabling game library analysis, mood-based backlog recommendations, wishlist evaluation, and storefront searches.
    8
    6 npm
    MIT