Об этом проекте
Guava Health MCP — это сервер FastMCP с открытым исходным кодом, который оборачивает developer API Guava Health и делает его доступным для хостов MCP, таких как Cursor, Claude и ChatGPT. Размещённый экземпляр доступен по адресу https://guavahealth.fastmcp.app/mcp, проект распространяется под лицензией MIT. Он не связан с Guava Health, Inc.
Сервер по умолчанию работает только на чтение и не сохраняет полезные данные о здоровье; он проксирует оперативные запросы на чтение к Guava API после того, как пользователь авторизует доступ. Версия 0.1 предоставляет семь инструментов: guava_auth_status (подключён ли Guava для текущего пользователя MCP), guava_begin_connect (запускает Guava OAuth с PAR и PKCE и возвращает authorization_url), guava_disconnect (удаляет сохранённые токены этого пользователя), guava_get_me (профиль/субъект), guava_search_sleep (сеансы сна), guava_search_activities (тренировки и активности) и guava_search_metrics (метрики, фильтруемые по типам, таким как steps или vo2_max). Операции записи явно выходят за рамки этой версии.
Архитектура использует два уровня OAuth. Аутентификация клиента MCP выполняется через GitHub OAuth App, чтобы хосты могли безопасно подключаться и поддерживалось несколько пользователей. Со стороны API Guava Health используется конфиденциальное приложение Guava API с PAR, PKCE (S256) и ротацией refresh-токенов. Задокументированный поток следующий: хост MCP аутентифицируется через GitHub OAuth на guavahealth.fastmcp.app, который затем взаимодействует с api.guavahealth.com через Guava OAuth 2.1.
Для настройки необходимо зарегистрировать приложение Guava API на портале Guava API с точным redirect URI https://guavahealth.fastmcp.app/oauth/callback, включить долгосрочный фоновый доступ и необходимые области чтения, затем указать GUAVA_CLIENT_ID и GUAVA_CLIENT_SECRET. Также требуется GitHub OAuth App с домашней страницей https://guavahealth.fastmcp.app и callback 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 для зашифрованного хранения блока токенов), необязательный общий bearer-токен MCP_AUTH_TOKEN для автоматизации и необязательный FASTMCP_JWT_SIGNING_KEY. В README показано, как сгенерировать ключ Fernet с помощью пакета cryptography.
В примечаниях по развёртыванию упоминаются точка входа Horizon main.py (или main.py:mcp) и URL MCP. Для локального использования проект использует 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, токены или ответы API о здоровье, шифровать хранилище токенов, когда задан GUAVA_TOKEN_ENCRYPTION_KEY, и повторно подключать Guava после холодных запусков, если диски Horizon эфемерны. В журналах, где возможно, скрываются клиентские секреты, а README не рекомендует выгружать полные полезные данные API в контекст модели, когда достаточно краткого ответа.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.