mcpField
S
SteamStats MCP Server

SteamStats MCP Server

ローカル
github.com/algorhythmicゲーム・エンタメ082 週間前に更新

SteamStats MCP Server について

SteamStats MCP Serverは、PythonとFastAPIで構築されたサーバーで、MCPクライアントにSteam Web APIのゲーム統計やユーザー情報を提供することを目的としています。READMEでは、現行実装は動作しないとされています。

主な機能

  1. 01Steamのゲーム・ユーザーデータへのアクセス
  2. 02Steam APIコマンド10種の掲載
  3. 03JSON-RPC形式のリクエスト処理
  4. 04サーバーとログ設定の変更

活用シーン

  1. 01ゲームのプレイヤー数や詳細の確認
  2. 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

セットアップとインストール

  1. 前提条件:

    • Python 3.11 以降。
    • UV パッケージマネージャーがインストールされていること(pip install uv)。
  2. リポジトリをクローンします(まだの場合):

    git clone <repository-url>
    cd steamstats_mcp
    
  3. 仮想環境を作成します(推奨):

    # 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
    
  4. 依存関係をインストールします:

    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 を生成する必要がある場合があります)

  5. 環境変数を設定します: 以下のセクションを参照してください。

設定(環境変数)

サーバーを使用するには、次の環境変数を設定する必要があります。

  • 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 を参照してください。現在実装されているコマンドは次のとおりです。

  • getCurrentPlayers
  • getAppDetails
  • getGameSchema
  • getGameNews
  • getPlayerAchievements
  • getUserStatsForGame
  • getGlobalStatsForGame
  • getSupportedApiList
  • getAppList
  • getGlobalAchievementPercentages

ローカル MCP クライアント(例:Roo)の接続

Roo VS Code 拡張機能などのローカル MCP クライアントをこの実行中のサーバーに接続するには、クライアントの mcp.json ファイルを設定する必要があります。このファイルは通常、プロジェクト内またはユーザー設定内の .roo ディレクトリにあります。

この設定により、クライアントがサーバーと通信する方法を指定します。これは HTTP ベースのサーバー(FastAPI/Uvicorn)であるため、sse(Server-Sent Events)タイプを使用します。

  1. SteamStats MCP サーバーが実行中であることを確認します: 上記の「サーバーの実行」の手順に従います。デフォルトでは、http://localhost:8000 で実行されます。
  2. mcp.json ファイルを探すか作成します: ワークスペースの .roo/mcp.json、またはグローバル設定の場所にある場合があります。
  3. サーバー設定を追加します: 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 サーバーが提供するツールに接続して利用できるようになります。

コメント

MCP は初めてですか?

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

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