SteamStats MCP Server について
SteamStats MCP Serverは、PythonとFastAPIで構築されたサーバーで、MCPクライアントにSteam Web APIのゲーム統計やユーザー情報を提供することを目的としています。READMEでは、現行実装は動作しないとされています。
主な機能
- 01Steamのゲーム・ユーザーデータへのアクセス
- 02Steam APIコマンド10種の掲載
- 03JSON-RPC形式のリクエスト処理
- 04サーバーとログ設定の変更
活用シーン
- 01ゲームのプレイヤー数や詳細の確認
- 02プレイヤー実績やゲーム統計の取得
MCP 対応
`/message`でMCP tools/callリクエストを受け付け、Steam Web APIに中継します。READMEでは、現行実装は動作しないとされています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SteamStats MCP サーバー
警告
現在の実装は動作しません!
概要
このプロジェクトは、Python と FastAPI を使用して SteamStats MCP(Model Context Protocol)サーバーを実装します。このサーバーは、MCP クライアント(Roo など)と Steam Web API の間を仲介し、さまざまな Steam ゲームの統計情報やユーザー情報への構造化されたアクセスを提供します。
単一の /message エンドポイントを公開し、JSON-RPC 形式の tools/call リクエストを受け付けて検証し、Steam Web API とやり取りしたうえで、整形された結果または適切なエラーメッセージを返します。
技術スタック
- 言語: Python 3.11+
- フレームワーク: FastAPI
- データ検証: Pydantic
- Web サーバー: Uvicorn
- HTTP クライアント: Requests
- パッケージ管理: UV
リクエストフロー
次の図は、一般的なリクエストフローを示しています。
sequenceDiagram
participant Client as MCP Client
participant Server as SteamStats MCP Server
participant SteamAPI as Steam Web API
Client->>Server: POST /message (tools/call, command, args)
Server->>Server: Validate MCP message format
alt Invalid Format
Server-->>Client: Error Response (e.g., Invalid Request)
else Valid Format
Server->>Server: Parse command & arguments
Server->>Server: Validate arguments using Pydantic
alt Invalid Arguments
Server-->>Client: Error Response (Validation Error)
else Valid Arguments
Server->>SteamAPI: Make API Request(s) (e.g., GET /ISteamUserStats/...)
SteamAPI-->>Server: API Response (JSON data or error)
alt Steam API Error
Server->>Server: Log API Error
Server-->>Client: Error Response (API Error)
else Successful API Response
Server->>Server: Process API data
Server-->>Client: Success Response (result data)
end
end
end
セットアップとインストール
-
前提条件:
- Python 3.11 以降。
- UV パッケージマネージャーがインストールされていること(
pip install uv)。
-
リポジトリをクローンします(まだの場合):
git clone <repository-url> cd steamstats_mcp -
仮想環境を作成します(推奨):
# Using uv uv venv source .venv/bin/activate # On Linux/macOS # .venv\Scripts\activate # On Windows # Or using standard venv # python -m venv .venv # source .venv/bin/activate # On Linux/macOS # .venv\Scripts\activate # On Windows -
依存関係をインストールします:
uv pip install -r requirements.txt # Assuming a requirements.txt exists or will be generated from pyproject.toml # Or directly from pyproject.toml if using uv for management # uv sync(注:
uv syncを直接使用しない場合は、uv pip freeze > requirements.txtを使ってpyproject.tomlからrequirements.txtを生成する必要がある場合があります) -
環境変数を設定します: 以下のセクションを参照してください。
設定(環境変数)
サーバーを使用するには、次の環境変数を設定する必要があります。
STEAM_API_KEY(必須): Steam Web API キーです。Steam Developer のウェブサイトから取得してください。このキーがないと、サーバーは動作しません。LOG_LEVEL(任意): ログレベルを設定します。DEBUG、INFO、WARNING、ERROR、CRITICALを指定できます。デフォルトはINFOです。HOST(任意): サーバーがバインドするホストアドレスです。デフォルトは0.0.0.0(利用可能なすべてのネットワークインターフェースで待ち受けます)です。PORT(任意): サーバーが待ち受けるポートです。デフォルトは8000です。
これらの変数は、シェル環境に設定するか、.env ファイルを使用するか(python-dotenv パッケージと、読み込むためのコード変更が必要)、デプロイシステムの設定から指定できます。
例(Linux/macOS):
export STEAM_API_KEY="YOUR_API_KEY_HERE"
export LOG_LEVEL="DEBUG"
export PORT="8080"
例(Windows CMD):
set STEAM_API_KEY=YOUR_API_KEY_HERE
set LOG_LEVEL=DEBUG
set PORT=8080
例(Windows PowerShell):
$env:STEAM_API_KEY = "YOUR_API_KEY_HERE"
$env:LOG_LEVEL = "DEBUG"
$env:PORT = "8080"
サーバーの実行
依存関係をインストールし、環境変数を設定したら、Uvicorn を使ってサーバーを実行します。
uvicorn main:app --host $HOST --port $PORT --reload
- FastAPI アプリケーションのインスタンス名が異なる場合や、別のファイルにある場合は、
main:appを置き換えてください。 --reloadフラグを指定すると、開発中に自動で再読み込みされます(本番環境では削除してください)。HOSTとPORTの環境変数が設定されている場合、Uvicorn はそれらを使用します。設定されていない場合は、デフォルト値(0.0.0.0と8000)が使用されます。
これでサーバーが起動し、http://<HOST>:<PORT>/message で MCP リクエストを待ち受けます。
利用可能な MCP コマンド
利用可能なコマンド、その引数、期待される結果の詳細については、STEAMSTATS_MCP_SPECIFICATION.md を参照してください。現在実装されているコマンドは次のとおりです。
getCurrentPlayersgetAppDetailsgetGameSchemagetGameNewsgetPlayerAchievementsgetUserStatsForGamegetGlobalStatsForGamegetSupportedApiListgetAppListgetGlobalAchievementPercentages
ローカル MCP クライアント(例:Roo)の接続
Roo VS Code 拡張機能などのローカル MCP クライアントをこの実行中のサーバーに接続するには、クライアントの mcp.json ファイルを設定する必要があります。このファイルは通常、プロジェクト内またはユーザー設定内の .roo ディレクトリにあります。
この設定により、クライアントがサーバーと通信する方法を指定します。これは HTTP ベースのサーバー(FastAPI/Uvicorn)であるため、sse(Server-Sent Events)タイプを使用します。
- SteamStats MCP サーバーが実行中であることを確認します: 上記の「サーバーの実行」の手順に従います。デフォルトでは、
http://localhost:8000で実行されます。 mcp.jsonファイルを探すか作成します: ワークスペースの.roo/mcp.json、またはグローバル設定の場所にある場合があります。- サーバー設定を追加します:
mcp.jsonのservers配列に項目を追加します。
mcp.json の設定例:
{
"servers": [
// ... other server configurations ...
{
"name": "steamstats-local", // Choose a descriptive name
"type": "sse",
"enabled": true,
"url": "http://localhost:8000/message", // Adjust host/port if you changed defaults
"readTimeoutSeconds": 60,
"writeTimeoutSeconds": 60
}
]
}
name:このサーバー接続の一意な識別子です。type:HTTP ベースのサーバーではsseにする必要があります。enabled:接続を有効にするにはtrueに設定します。url:実行中のサーバーの/messageエンドポイントの完全な URL です。ホストとポートがサーバーの実行方法と一致していることを確認してください(例:export PORT=8081を使用した場合は、それに応じて URL を変更します)。readTimeoutSeconds/writeTimeoutSeconds:任意のタイムアウトです。
設定が完了し、サーバーが実行中であれば、MCP クライアントはこの SteamStats サーバーが提供するツールに接続して利用できるようになります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。