mcpField
I
inbody-api-mcp

inbody-api-mcp

ローカル
github.com/rwestergrenヘルスケア1519 週間前に更新

inbody-api-mcp について

inbody-api-mcpは、MCPクライアントからInBodyの体組成履歴にアクセスするための読み取り専用MCPサーバーです。InBody Androidアプリが使う地域別APIから、プロフィール、スキャン概要、詳細な体組成・インピーダンス指標を取得します。

主な機能

  1. 01プロフィールと基準指標の取得
  2. 02スキャン履歴と件数の一覧表示
  3. 03詳細な体組成・インピーダンスデータの読み取り
  4. 04国に応じたリクエスト先の選択と認証更新

活用シーン

  1. 01複数回のスキャンから体組成の推移を確認
  2. 02特定スキャンの詳細指標を取得

MCP 対応

プロフィール、スキャン件数、スキャン一覧、スキャン詳細を扱う4つの読み取り専用ツールを提供します。MCPクライアントとはstdioで接続します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"rwestergren-inbody-api": {
"command": "uvx",
"args": [
"inbody-api-mcp"
],
"env": {
"INBODY_LOGIN_ID": "<INBODY_LOGIN_ID>",
"INBODY_LOGIN_PW": "<INBODY_LOGIN_PW>",
"INBODY_COUNTRY_CODE": "<INBODY_COUNTRY_CODE>"
}
}
}
}
起動コマンドuvx inbody-api-mcp
設定が必要な環境変数
INBODY_LOGIN_IDThe phone number used to register your InBody account (digits only, no country code).
INBODY_LOGIN_PWシークレットYour InBody account password
INBODY_COUNTRY_CODEISO country code selecting the regional API host (defaults to US).

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiinbody-api-mcp0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

inbody-api-mcp

License: MIT CI Build Docker image PyPI

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_scan1回分の測定の全指標(BCA/MFA/IMPブロック)

このサーバーは読み取り専用です。書き込みまたは削除のエンドポイントは公開していません。

仕組み

このサーバーは、リージョン別の*.lookinbody.com REST API(InBody Androidアプリ(v2.8.31)と同じバックエンド)と通信します。mitmproxyでアプリの通信をキャプチャし、実際のAPIに対してペイロードの形式を確認することで、APIをリバースエンジニアリングしました。

認証フロー:

  1. POST /CommonAPI/GetCountryInfoV2(appapicommon.lookinbody.com上)から、国ごとのホスト一覧を取得します。ISO国コードに対応するType == "API"の行から、リージョン別APIのベース(米国の場合はappapiusav2.lookinbody.com)と、リクエスト本文で使用する数値の電話番号コードを取得します。
  2. POST /V2/Main/GetLoginWithSyncDataPartV2でログインIDとパスワードを送信し、24時間有効なJWT、リフレッシュトークン、アカウントUIDを取得します。
  3. 以降の呼び出しでは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

コメント

MCP は初めてですか?

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

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