このプロジェクトについて
Guava Health MCPは、Guava Health developer APIをラップし、Cursor、Claude、ChatGPTなどのMCPホストから利用可能にするオープンソースのFastMCPサーバーです。ホスト型インスタンスは https://guavahealth.fastmcp.app/mcp から利用でき、プロジェクトはMITライセンスです。Guava Health, Inc.とは提携していません。
サーバーは設計上読み取り専用で、健康データのペイロードを永続化しません。ユーザーがアクセスを認可した後、Guava APIのライブ読み取りをプロキシします。バージョン0.1では7つのツールを公開しています:guava_auth_status(現在のMCPユーザーにGuavaが接続されているか)、guava_begin_connect(PARとPKCEを使用してGuava OAuthを開始し、authorization_urlを返す)、guava_disconnect(そのユーザーの保存済みトークンを削除する)、guava_get_me(プロフィール/サブジェクト)、guava_search_sleep(睡眠セッション)、guava_search_activities(ワークアウトとアクティビティ)、guava_search_metrics(stepsやvo2_maxなどのタイプで絞り込むメトリクス)。書き込みはこのバージョンでは明示的に範囲外です。
アーキテクチャは2つのOAuthレイヤーを使用します。MCPクライアント認証はGitHub OAuth Appを介して行われ、ホストが安全に接続し、複数ユーザーをサポートできます。Guava Health API側では、PAR、PKCE(S256)、リフレッシュトークンローテーションを備えたconfidential Guava API appを使用します。文書化されたフローは次のとおりです:MCPホストはGitHub OAuthを介してguavahealth.fastmcp.appで認証され、その後サーバーがGuava OAuth 2.1経由でapi.guavahealth.comと通信します。
セットアップでは、Guava APIポータルでGuava API appを登録し、正確なリダイレクトURIとして https://guavahealth.fastmcp.app/oauth/callback を設定し、長時間有効なバックグラウンドアクセスと必要な読み取りスコープを有効にして、GUAVA_CLIENT_IDとGUAVA_CLIENT_SECRETを提供する必要があります。また、GitHub OAuth Appも必要で、ホームページに https://guavahealth.fastmcp.app、コールバックに https://guavahealth.fastmcp.app/auth/callback を設定し、GITHUB_CLIENT_IDとGITHUB_CLIENT_SECRETを提供します。環境変数には、PUBLIC_BASE_URL、GUAVA_ENV(testまたはlive)、任意のGUAVA_API_BASEオーバーライド、GUAVA_TOKEN_ENCRYPTION_KEY(保存時のトークンブロブ用のFernetキー)、自動化用の任意のMCP_AUTH_TOKEN共有ベアラー、任意のFASTMCP_JWT_SIGNING_KEYが含まれます。READMEには、cryptographyパッケージを使用してFernetキーを生成する方法が示されています。
デプロイメモには、Horizonのエントリポイントとしてmain.py(またはmain.py:mcp)、およびMCP URLが記載されています。ローカルで使用する場合、プロジェクトはuvを使用し、uv syncの後にuv run python main.pyを実行すると、http://127.0.0.1:8000/mcp で提供されます。開発コマンドはuv sync --group devとuv run pytest -qです。
READMEのセキュリティガイダンスでは、まず最小限のスコープと読み取り専用ツールを推奨し、.envファイル、トークン、Health APIレスポンスをコミットしないこと、GUAVA_TOKEN_ENCRYPTION_KEYが設定されている場合はトークンストアを暗号化すること、Horizonディスクが一時的な場合はコールドスタート後にGuavaに再接続することを推奨しています。ログでは可能な限りクライアントシークレットが伏せられ、狭い回答で十分な場合は完全なAPIペイロードをモデルコンテキストにダンプしないようREADMEで助言されています。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.