MLB Stats MCP Server について
MLB Stats MCP Server は、MLB Stats API と pybaseball ライブラリを用いて野球データを提供する Python 製の MCP サーバーです。Statcast、FanGraphs、Baseball Reference のデータに対応しており、構造化された野球の統計データを MCP クライアントから利用したいユーザー向けです。
主な機能
- 01MLB Stats API のデータへのアクセス
- 02Statcast データ用のツール
- 03FanGraphs と Baseball Reference のデータ連携
- 04matplotlib による図の生成と base64 画像の返却
- 05stdio と HTTP のトランスポート対応
活用シーン
- 01選手やチームの試合統計の検索
- 02Statcast の投球・打撃データの分析
- 03Claude Desktop への野球データの追加
MCP 対応
本プロジェクトは、野球の統計ツールを MCP 互換クライアントに公開する MCP サーバーです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MLB Stats MCP サーバー
MLB Stats API と、Statcast、FanGraphs、Baseball Reference の統計データを取得するための pybaseball ライブラリを通じて、MLB の統計データにアクセスする Model Context Protocol(MCP)サーバーを作成する Python プロジェクトです。このサーバーは、MCP 対応クライアントで使用できる、野球統計データへの構造化された API アクセスを提供します。
プロジェクト構成
mlb_stats_mcp/- メインパッケージディレクトリserver.py- MCP サーバーのコア実装tools/- MCP ツールの実装mlb_statsapi_tools.py- MLB StatsAPI ツールの定義statcast_tools.py- Statcast データツールの定義pybaseball_plotting_tools.py- matplotlib プロットを生成し、Base64 エンコードされた画像を返すために用意された追加のpybaseballツールpybaseball_supp_tools.py- FanGraphs、Baseball Reference、その他のデータソースと連携するためのpybaseball補助関数
utils/- ユーティリティモジュールlogging_config.py- ログ設定images.py- プロット画像の処理に関連する関数
tests/- サーバー機能を検証するテストスイート
pyproject.toml- プロジェクトの設定と依存関係.pre-commit-config.yaml- pre-commit フックの設定.github/- GitHub Actions ワークフロー
ツール
セットアップ
- まだインストールしていない場合は、uv をインストールします。
curl -LsSf https://astral.sh/uv/install.sh | sh
- 仮想環境を作成して有効化します。
uv venv
source .venv/bin/activate # On Unix/macOS
# or
.venv\Scripts\activate # On Windows
- 依存関係をインストールします。
uv pip install -e .
Smithery 経由でのインストール
Smithery を使って、Claude Desktop 用の MLB Stats Server を自動的にインストールするには:
npx -y @smithery/cli install @etweisberg/mlb-mcp --client claude
テストの実行
このプロジェクトには、MCP サーバーの機能を検証するための包括的な pytest テストが含まれています。
uv run pytest -v
テストでは、すべての MLB StatsAPI ツールが MCP プロトコルで正しく動作し、接続の確立、API 呼び出し、レスポンスの処理が行われることを検証します。
環境変数
このプロジェクトでは、設定を構成するために .env に保存された環境変数を使用します。
MCP サーバーを有効にするには、ANTHROPIC_API_KEY を使用します。
ログ設定
MLB Stats MCP サーバーでは、環境変数を使ってログを設定できます。
MLB_STATS_LOG_LEVEL- ログレベルを設定します(DEBUG、INFO、WARNING、ERROR、CRITICAL)MLB_STATS_LOG_FILE- ログファイルのパス(設定されていない場合、ログは stderr に出力されます)
ログは意図的に stdout ではなく stderr に出力されます。stdio トランスポートでは、 stdout が JSON-RPC ストリームを担うため、そこに別の内容が出力されるとストリームが破損します。
HTTP トランスポート
python -m mlb_stats_mcp.server --http を使ってサーバーを HTTP 経由で実行します。サーバーは
$PORT(デフォルトは 8081)でリッスンし、/mcp で MCP を提供します。
デフォルトでは、サーバーは任意の Host と任意の Origin を受け付けるため、リモート環境に
そのままデプロイできます。制限するには、いずれかの変数にカンマ区切りのリストを設定します。
MLB_STATS_ALLOWED_HOSTS- 受け付けるHostヘッダーの値です。この変数を設定すると DNS リバインディング保護が有効になり、その他のホストへのリクエストは421で拒否されます。 エントリの末尾に:*を付けると、任意のポートを許可できます(例:localhost:*)。MLB_STATS_ALLOWED_ORIGINS- 受け付けるOriginの値です。CORS に使用されるほか、MLB_STATS_ALLOWED_HOSTSが設定されている場合は、その他のオリジンを403で拒否するためにも使われます。Originヘッダーのないリクエストは常に許可されます。
デプロイ環境を制限する場合は、両方を設定してください。ホストだけを指定すると、 ブラウザーをベースとするすべてのクライアントが拒否されます。
Claude Desktop との統合
この MCP サーバーを Claude Desktop に接続するには、claude_desktop_config.json ファイルに設定を追加します。設定テンプレートは次のとおりです。
"mcp-baseball-stats": {
"command": "{PATH_TO_UV}",
"args": [
"--directory",
"{PROJECT_DIRECTORY}",
"run",
"python",
"-m",
"mlb_stats_mcp.server"
],
"env": {
"MLB_STATS_LOG_FILE": "{LOG_FILE_PATH}",
"MLB_STATS_LOG_LEVEL": "DEBUG"
}
}
次のプレースホルダーを置き換えてください。
{PATH_TO_UV}:uv のインストール先のパス(例:~/.local/bin/uv){PROJECT_DIRECTORY}:プロジェクトディレクトリへのパス{LOG_FILE_PATH}:ログファイルの保存先のパス
使用技術
mcp[cli]- ツール定義用の Machine-Learning Chat Protocolmlb-statsapi- MLB Stats API 用の Python ラッパーhttpx- API リクエストを行うための HTTP クライアントpytestとpytest-asyncio- テストフレームワークuv- 高速な Python パッケージマネージャーおよびインストーラー
リント
このプロジェクトでは、リントとコードフォーマットに Ruff を使用し、コード品質を確保するために pre-commit フックを導入しています。
Pre-commit フックの設定
- pre-commit をインストールします。
pip install pre-commit
- pre-commit フックを初期化します。
pre-commit install
これで、コードをコミットするたびにリントチェックが自動的に実行されます。手動で実行することもできます。
pre-commit run --all-files
リント設定
リントルールは、pyproject.toml ファイルの [tool.ruff] セクションで設定されています。このプロジェクトでは、いくつかのカスタマイズを加えた PEP 8 スタイルガイドラインに従っています。
CI との統合
GitHub Actions のワークフローでは、すべてのプルリクエストと main ブランチへのプッシュ時に、テスト、リント、pre-commit チェックが自動的に実行されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。