inbody-api-mcp について
inbody-api-mcpは、MCPクライアントからInBodyの体組成履歴にアクセスするための読み取り専用MCPサーバーです。InBody Androidアプリが使う地域別APIから、プロフィール、スキャン概要、詳細な体組成・インピーダンス指標を取得します。
主な機能
- 01プロフィールと基準指標の取得
- 02スキャン履歴と件数の一覧表示
- 03詳細な体組成・インピーダンスデータの読み取り
- 04国に応じたリクエスト先の選択と認証更新
活用シーン
- 01複数回のスキャンから体組成の推移を確認
- 02特定スキャンの詳細指標を取得
MCP 対応
プロフィール、スキャン件数、スキャン一覧、スキャン詳細を扱う4つの読み取り専用ツールを提供します。MCPクライアントとはstdioで接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx inbody-api-mcpINBODY_LOGIN_IDThe phone number used to register your InBody account (digits only, no country code).INBODY_LOGIN_PWシークレットYour InBody account passwordINBODY_COUNTRY_CODEISO country code selecting the regional API host (defaults to US).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
inbody-api-mcp
Claude.ai、ChatGPT、Grok向けのホステッド版が近日公開予定です。 ウェイトリストに登録 →
InBodyの体組成データに対応したMCP(Model Context Protocol)サーバーです。InBody Androidアプリで使われている、リバースエンジニアリングされたモバイルREST APIを基盤としています。
InBodyには、個人の測定データを扱う公開APIもWeb UIもありません。このサーバーは、モバイルアプリが使用するものと同じJSON RESTエンドポイントに接続し、体組成の履歴(体脂肪、筋肉量、体水分、部位別インピーダンス)をあらゆるMCPクライアントに公開します。
特長
- プロフィール -- 身元情報と基本測定値(身長、体重、年齢、性別)
- 測定履歴 -- 時系列の概要(体重、BMI、体脂肪率、筋肉量)
- 測定の全指標 -- 体組成の全項目(BCA)、標準範囲付きのBMI/体脂肪率/筋肉量(MFA)、部位別/多周波インピーダンス(IMP)
- リージョンの自動振り分け -- 国コードから適切なリージョン別APIホストを特定します
- 再認証の自動化 -- 24時間有効なJWTをキャッシュし、期限切れ時に再ログインします
クイックスタート
1. uvをインストールする
curl -LsSf https://astral.sh/uv/install.sh | sh
2. 認証情報を設定する
export INBODY_LOGIN_ID="3026323617" # registration phone number, digits only
export INBODY_LOGIN_PW="your-password"
export INBODY_COUNTRY_CODE="US" # ISO country code (default US)
INBODY_LOGIN_IDは登録時に使用した電話番号です。メールアドレスではありません。 数字のみを入力し、国番号や+は含めないでください(例:3026323617)。InBodyのログインでは電話番号が使われます。メールアドレスはプロフィールデータとして返されるだけです。メールアドレスを指定すると、EmptyDataエラーによりログインに失敗します。
3. MCPクライアントを設定する
uvxは必要に応じてサーバーをダウンロードして実行するため、別途インストールする必要はありません。
OpenCode(opencode.json)
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"inbody": {
"type": "local",
"command": ["uvx", "inbody-api-mcp"],
"environment": {
"INBODY_LOGIN_ID": "{env:INBODY_LOGIN_ID}",
"INBODY_LOGIN_PW": "{env:INBODY_LOGIN_PW}",
"INBODY_COUNTRY_CODE": "US"
},
"enabled": true
}
}
}
Claude Desktop(claude_desktop_config.json)
{
"mcpServers": {
"inbody": {
"command": "uvx",
"args": ["inbody-api-mcp"],
"env": {
"INBODY_LOGIN_ID": "3026323617",
"INBODY_LOGIN_PW": "your-password",
"INBODY_COUNTRY_CODE": "US"
}
}
}
}
利用可能なツール
| ツール | 説明 |
|---|---|
get_profile | ユーザーの身元情報と基本測定値(身長、体重、年齢、性別) |
get_scan_count | アカウントの測定回数 |
list_scans | 時系列の測定概要(体重、BMI、体脂肪率、筋肉量) |
get_scan | 1回分の測定の全指標(BCA/MFA/IMPブロック) |
このサーバーは読み取り専用です。書き込みまたは削除のエンドポイントは公開していません。
仕組み
このサーバーは、リージョン別の*.lookinbody.com REST API(InBody Androidアプリ(v2.8.31)と同じバックエンド)と通信します。mitmproxyでアプリの通信をキャプチャし、実際のAPIに対してペイロードの形式を確認することで、APIをリバースエンジニアリングしました。
認証フロー:
POST /CommonAPI/GetCountryInfoV2(appapicommon.lookinbody.com上)から、国ごとのホスト一覧を取得します。ISO国コードに対応するType == "API"の行から、リージョン別APIのベース(米国の場合はappapiusav2.lookinbody.com)と、リクエスト本文で使用する数値の電話番号コードを取得します。POST /V2/Main/GetLoginWithSyncDataPartV2でログインIDとパスワードを送信し、24時間有効なJWT、リフレッシュトークン、アカウントUIDを取得します。- 以降の呼び出しでは
Authorization: Bearer <JWT>を送信します。トークンの期限が切れると、クライアントが自動的に再認証します。
各測定レコードには、3つのブロックが含まれています。BCA(体組成分析:体水分、タンパク質、ミネラル、脂肪、部位別体水分)、MFA(標準範囲付きのBMI、体脂肪率、骨格筋量、WHR)、IMP(周波数および身体部位ごとの生インピーダンス値)です。
Python API
クライアントを直接使用できます。
from inbody_api_mcp.client import InBodyClient
client = InBodyClient()
# Total number of scans
count = client.get_scan_count()
# Recent scans (newest first), paginated
scans = client.get_scans(number=20, index=0)
# User profile
profile = client.get_user_info()
トランスポート
stdio のみです。MCP クライアント(OpenCode、Claude Desktop)は、uvx/uv を介して stdio プロセスを直接起動します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。