mcp-freestyle について
mcp-freestyleは、LibreLinkUp経由でFreeStyleセンサーのデータを取得する読み取り専用のMCPサーバーです。最新値と最大12時間分の履歴を、実際の対象期間やデータの欠落とともに提示します。情報提供用であり、治療判断には使用できません。
主な機能
- 01最新の血糖測定値と時刻の取得
- 02最大12時間分の測定履歴の照会
- 03目標範囲内の時間を表示
- 04実際のデータ範囲と取得漏れを明示
- 05OSのキーチェーンにパスワードを保存
活用シーン
- 01直近の血糖測定値と測定時刻の確認
- 02最近の測定値と目標範囲内の時間の確認
MCP 対応
MCPクライアントに get_current_glucose と get_glucose_history ツールを公開します。LibreLinkUp経由でデータを取得する読み取り専用サーバーで、医療機器ではありません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y mcp-freestyleLIBRELINKUP_EMAILLibreLinkUp *follower* account e-mail — not the primary LibreLink account. The password is stored once via `npx mcp-freestyle-login` in the OS keychain, so it never appears in this configuration.LIBRELINKUP_PASSWORDシークレットOverrides the OS keychain. Intended for CI and one-off runs; prefer `mcp-freestyle-login` so no credential lands in a config file.LIBRELINKUP_VERSIONPinned LibreLinkUp client version sent as the `version` header. Upstream rejects stale values — set this to the current LibreLinkUp app version if requests start failing.LIBRELINKUP_PRODUCTClient product identifier sent as the `product` header.LIBRELINKUP_BASE_URLEntry point for authentication. The regional host is discovered at login and is never configured here.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
2掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| unit | enum | いいえ | 返される値の単位。保存単位は常に mg/dL で、これは表示にのみ影響します。mg/dL | mmol/L |
詳細
mcp-freestyle
FreeStyle グルコースセンサーからデータを読み取る Model Context Protocol サーバーです。
要件
このサーバーは Abbott のクラウドからデータを読み取るため、データがすでにクラウドに送信されている場合にのみ動作します。以下のすべてが必要です。
- スマートフォンの LibreLink アプリで読み取る FreeStyle センサー。 代わりに FreeStyle 専用リーダーを使用している場合、データは継続的にアップロードされないため、このサーバーでは対応できません。
- その LibreLink アプリからフォロワーアカウントへの LibreLinkUp 共有の設定。サーバーはフォロワーとしてサインインします。
- Node.js ≥ 20 と、正常に動作する OS キーチェーン(macOS Keychain、Windows Credential Manager、または Linux の libsecret)。
サーバーは 非公式 の LibreLinkUp / LibreView API を使用しています。この API は Abbott とは提携しておらず、Abbott のサポート対象でもありません。予告なく動作しなくなる可能性があります。詳しくは
docs/decisions/0002-data-source-librelinkup.mdをご覧ください。
クイックスタート
1. インストール
npm install -g mcp-freestyle
または、まずコードを読みたい場合は、クローンからインストールします。
git clone https://github.com/lozit/mcp-freestyle.git && cd mcp-freestyle
npm install && npm run build
2. 一度ログインする
npm run login # from a clone
mcp-freestyle-login # if installed globally
LibreLinkUp のフォロワーのメールアドレスとパスワードを求められます。実際に認証してパスワードを検証するため、パスワードが間違っていたり、共有が設定されていなかったりする場合は、Claude に初めて質問するときではなく、この時点でわかります。パスワードは OS キーチェーンに保存され、設定ファイルには保存されません。
上流サービスから発行されるトークンは保存されません。失効手段がなく約180日間有効なため、保存しておくほうが大きなリスクになります。代わりに、サーバーが再認証します。
最後に、login から Claude Desktop にサーバーを一度の操作で追加できます。
3. Claude に接続する
Claude Desktop — コマンドを1つ実行します。
mcp-freestyle-install
絶対パスを使用して ~/Library/Application Support/Claude/claude_desktop_config.json(Windows では %APPDATA%\Claude\…)にエントリーを追加します。既存の設定は先にバックアップされ、ほかのサーバーの設定はそのまま保持されます。解析できない設定は上書きしません。Claude Desktop を完全に終了(⌘Q)してから、再起動してください。
Claude Code:
mcp-freestyle-install code # prints the exact `claude mcp add` command
書き込まれるエントリーに含まれるのはメールアドレスのみです。これは識別子であり、秘密情報ではありません。これがキーチェーンを使う理由です。同期、バックアップ、バグ報告への貼り付けが行われる設定ファイルに、認証情報が含まれることはありません。
保存したパスワードを削除するには、mcp-freestyle-logout を実行します。
設定
| 変数 | 必須 | デフォルト | 備考 |
|---|---|---|---|
LIBRELINKUP_EMAIL | はい | — | メインの LibreLink アカウントではなく、LibreLinkUp のフォロワーアカウント |
LIBRELINKUP_PASSWORD | いいえ | keychain | キーチェーンの設定を上書きします。CI または一度限りの実行用であり、通常の使用方法ではありません |
LIBRELINKUP_VERSION | いいえ | 4.16.0 | 固定されたクライアントバージョンです。上流サービスは古い値を拒否します。リクエストが失敗し始めた場合は、現在の LibreLinkUp アプリのバージョンを設定してください |
LIBRELINKUP_PRODUCT | いいえ | llu.android | |
LIBRELINKUP_BASE_URL | いいえ | https://api.libreview.io | エントリーポイントのみです。リージョンホストはログイン時に検出されます |
ツール
| ツール | 返される内容 |
|---|---|
get_current_glucose | 実際に測定された時刻と、アカウント固有の目標範囲を含む最新の測定値です。リアルタイムの「現在値」として提示することはありません。 |
get_glucose_history | 過去 N 時間(最大 12 時間)の測定値と、目標範囲内にあった時間です。実際に対象となった範囲を必ず明記し、上流から要求した件数より少ないデータしか返されなかった場合は truncated を示します。データ収集の空白期間を記載し、その間の値を補間することはありません。 |
上流に保持される詳細データは約 12 時間分のみです。それより長い期間への対応は、 ツールの制限ではなく、将来のマイルストーンです。
開発
npm test # Node's built-in test runner — no build step needed
npm run typecheck # strict TypeScript, the project's only lint gate
npm run build # emits dist/
使い方
接続したら、自然な言葉で尋ねてください。
今の血糖値はいくつですか?
今日は目標範囲内にどのくらいの時間いましたか?
過去 6 時間分を見せてください。
回答には各測定値が実際に取得された時刻、データが実際に対象とした範囲、データ収集の空白期間が含まれます。そのため、「今日」について尋ねた場合、今日のうちどれだけの範囲を確認できたかがわかります。上流に保持されている範囲を超えて要求した場合は、取得できたデータの範囲を伝え、少ないデータしかないことを伏せたまま回答することはありません。
リーダーやアプリの代わりにはなりません。 情報提供のみを目的としています。上記の免責事項をご覧ください。
プロジェクト構成
README.md— このファイルCLAUDE.md— Claude Code 向けの指示docs/— プロジェクトのドキュメント(アーキテクチャ、決定事項、学び)intake/— 上流に関するメモと仕様の原文docs/media/— ビジュアル素材
ドキュメント
- ビジョン:
docs/VISION.md - アーキテクチャ:
docs/ARCHITECTURE.md - 決定事項:
docs/decisions/ - 学び:
docs/LEARNINGS.md - 用語集:
docs/GLOSSARY.md - データモデル:
docs/DATA_MODEL.md - セキュリティとプライバシー:
docs/SECURITY.md - ロードマップ:
docs/ROADMAP.md
免責事項
医療機器ではありません。 このプロジェクトは情報提供のみを目的としています。出力を治療に関する判断(投与量、補正、治療の調整)に使用しないでください。必ず公式のリーダー/アプリと医療チームの指示に従ってください。
コントリビューション
課題報告やプルリクエストを歓迎します。特に、TrendArrow の値の対応付け(下記参照)を支援できる方や、これまで確認されていない LibreLinkUp の地域やペイロード形式に遭遇した方からの貢献をお待ちしています。
npm test # Node's built-in runner, no network — `fetch` is injectable
npm run typecheck # strict TypeScript, the project's only lint gate
譲れないルールが 1 つあります:実際の血糖値、センサーのシリアル番号、アカウント識別子、認証情報を決してコミットしないでください。フィクスチャ、課題報告、スクリーンショットにも含めないでください。テストでは合成フィクスチャのみを使用します。値にタイムスタンプが付いていれば、名前がなくても健康測定データです。
設計上の決定事項は docs/decisions/ に、検証済みの上流仕様は docs/ARCHITECTURE.md に記載されています。測定値の取得方法や集計方法を変更する前に、これらを読んでください。把握に実際のデバッグ作業を要した、わかりにくい上流の挙動がいくつか記録されています。
既知の課題
TrendArrowは変換されません。 上流から整数が送られますが、その対応関係は文書化されておらず、観測された値も 1 つだけです。推測で変換するのではなく、raw_trend_arrowとしてそのまま渡します。自信を持って誤った矢印を示すより、何も示さないほうがよいためです。- 履歴は最大約 12 時間分です。 上流はそれより長い要求を無視します。長期的な計画については、ADR 0003 をご覧ください。
セキュリティ
脆弱性は [email protected] まで非公開で報告してください。詳しくは
docs/SECURITY.md をご覧ください。
ライセンス
MIT © Guillaume Ferrari
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。