home-remote-mcps
home-remote-mcps
Персональный удалённый MCP-шлюз. Предоставляет Garmin Connect, Home Assistant и YouTube как серверы Model Context Protocol, Access, доступные по HTTP, позволяя Claude (или любому MCP-клиенту) обращаться к ним и управлять ими из любой точки мира — без локального сервера и локальных учётных данных.
Аутентификация для веб-интерфейса делегируется внешнему SSO (home-auth, OAuth2). MCP-клиенты аутентифицируются отдельно, с помощью персонального API-ключа, выдаваемого через этот интерфейс.
Зачем sidecar для Garmin
У Garmin Connect нет официального публичного API и активно поддерживаемого Node.js-клиента. Сервис garmin-connector — это небольшой внутренний Python-sidecar, обёртка вокруг библиотеки garminconnector, которая берет на себя вход в Garmin (включая MFA) и обновление токенов. NestJS-бэкенд общается с ним через Docker-сеть с помощью общего секрета; наружу этот сервис никогда не публикуется. У Home Assistant и YouTube есть обычные REST API, поэтому бэкенд обращается к ним напрямую.
Related MCP server: FitnessMCP
Структура проекта
backend/ NestJS API — REST (auth, credentials, API keys) + MCP servers, DDD-ish layers
frontend/ React SPA — login, manage stored credentials, issue MCP API keys
garmin-connector/ FastAPI sidecar — Garmin Connect login/session via `garminconnect`
deploy/ docker-compose + Caddy config for productionПодробное описание архитектуры (слои, путь запроса MCP, устройство коннекторов по интеграций, модель аутентификации) — в CLAUDE.md; более глубокие справочные материалы — в ai-docs/. Документация для людей — в docs/.
Требования
Node.js >= 20 (см.
.nvmrc)Python >= 3.11 для
garmin-connectorЗапущенный экземпляр
home-auth(OAuth2-клиент, зарегистрированный для этого приложения) для входа в браузереDocker для продакшен-развертываний/deploy (
deploy/docker-compose.yml)
Локальная разработка
npm install # installs backend + frontend workspaces
cp backend/.env.example backend/.env # fill in home-auth + secrets, see comments in the file
cp garmin-connector/.env.example garmin-connector/.env
npm run dev:backend # http://localhost:3000 (API under /api, Swagger under /api/docs)
npm run dev:frontend # http://localhost:5173, proxies API calls to the backend
cd garmin-connector && pip install -r requirements.txt && uvicorn app.main:app --reload --port 8000GARMIN_CONNECTOR_SECRET должен совпадать в backend/.env и garmin-connector/.env.
Сборка, тесты, линт
npm run build # frontend, then backend (bundles frontend/dist into the backend build)
npm run test # backend (jest) then frontend (vitest)
npm run lint # eslint on both workspaces
npm run format # prettier --write, repo-wideХуки Husky (pre-commit, pre-push, commit-msg) автоматически запускают lint-staged и commitlint (Conventional Commits).
Развертывание
Dockerfile в корне репозитория выполняет многостадийную сборку: frontend → backend → runtime-образ, который собирает Litestream для непрестанной репликации SQLite в корзину MinIO (S3-совместимую) и восстановления при загрузке, если задан MINIO_BUCKET. garmin-connector/Dockerfile собирает sidecar-образ отдельно. deploy/docker-compose.yml запускает оба как соседние сервиссы во внутренней Docker-сети — у sidecar нет опубликованных портов, и он доступен только из backend по адресу http://garmin-connector:8000. deploy/Caddyfile — это конфигурация reverse-proxy для публичного сервиса.
Обязательные переменные окружения задокументированы прямо в backend/.env.example и garmin-connector/.env.example.
Let's check grammar and typos in final draft. Need not include all these analyses in final. We need final answer only. But I'm allowed to write final only; no explanation.
Let's polish again.
Potential mistake: "Accessible" in my draft: "Предоставляет ... как серверы Model Context Protocol, Accessible по HTTP" Should be "доступные по HTTP". Let's fix.
"Home Assistant and YouTube" - keep.
"Youtube" links no.
Need " model of auth model" = "модель аутентификации" fine.
Need replicate exact "for deeper reference material" -> "более глубоких справочных материалов". Fine.
"oriented guides" -> "Документация, ориентированная на людей" maybe "человеко-ориентированные руководства" (literal) or "руководства для людей". But "Human-oriented" is odd, maybe means docs for humans vs AI. We can say "Руководства для людей". Better "человекочитаемые руководства".
"Civil" We must not translate "SSO" maybe keep.
Need "Production deploys" -> "продакшн-развертываний". It's okay. "deploy" is a command name? Not in backticks. Write "Для продакшн-развертываний".
Need "ports" → "портов".
Need "sibling services" -> "соседних сервисов". Fine.
Need "reverse-proxy config" -> "конфигурация reverse-proxy" or "конфигурация обратного прокси". Both. As "reverse proxy" is a concept, we can translate to "обратного прокси". But "reverse-proxy" is "reverse proxy" noun. Could say "конфигурацией обратного прокси". We'll do.
Need "Caddyfile" not "Ccaddyfile".
Need ensure "Husky hooks" use latin "Husky" no transliteration. Good.
Need "commitlint" not "commit-lint". Kept.
Need "lint-staged" kept.
Need "Conventional Commits" in link text, kept.
Need "npm" no. Not relevant.
Need preserve "Cloud" in "cloud" no.
Let's rewrite final version cleanly:
home-remote-mcps
Персональный удалённый MCP-шлюз. Предоставляет Garmin Connect, Home Assistant и YouTube как серверы Model Context Protocol, доступные по HTTP, чтобы Claude (или любой MCP-клиент) мог обращаться к ним и управлять ими откуда угодно — без локального сервера и локальных учётных данных.
Аутентификация для веб-интерфейса делегируется внешнему SSO (home-auth, OAuth2). MCP-клиенты аутентифицируются отдельно, с помощью персонального API-ключа, выдаваемого через этот интерфейс.
Зачем sidecar для Garmin
У Garmin Connect нет официального публичного API и активно поддерживаемого Node.js-клиента. Сервис garmin-connector — это маленький внутренний Python-sidecar, оборачивающий библиотеку garminconnect, которая обрабатывает вход Garmin (включая MFA) и обновление токенов. NestJS-бэкенд общается с ним по Docker-сети с общим секретом; наружу sidecar не публикуется никогда. У Home Assistant и YouTube есть обычные REST API, поэтому бэкенд работает с ними напрямую.
Структура проекта
backend/ NestJS API — REST (auth, credentials, API keys) + MCP servers, DDD-ish layers
frontend/ React SPA — login, manage stored credentials, issue MCP API keys
garmin-connector/ FastAPI sidecar — Garmin Connect login/session via `garminconnect`
deploy/ docker-compose + Caddy config for productionПодробная архитектура (слои, путь MCP-запроса, дизайн коннекторов для каждой интеграции, модель аутентификации) — в CLAUDE.md; углублённый справочный материал — в ai-docs/. Документация, чтобы ориентированный на человека, лежит в docs/.
Требования
Node.js >= 20 (см.
.nvmrc)Python >= 3.11 для
garmin-connectorЗапущенный экземпляр
home-auth(OAuth2-клиент, зарегистрированный для этого приложения) для браузерного входаDocker для продакшн-развертываний (
deploy/docker-compose.yml)
Локальная разработка
npm install # installs backend + frontend workspaces
cp backend/.env.example backend/.env # fill in home-auth + secrets, see comments in the file
cp garmin-connector/.env.example garmin-connector/.env
npm run dev:backend # http://localhost:3000 (API under /api, Swagger under /api/docs)
npm run dev:frontend # http://localhost:5173, proxies API calls to the backend
cd garmin-connector && pip install -r requirements.txt && uvicorn app.main:app --reload --port 8000GARMIN_CONNECTOR_SECRET должен совпадать в backend/.env и garmin-connector/.env.
Сборка, тесты, линт
npm run build # frontend, then backend (bundles frontend/dist into the backend build)
npm run test # backend (jest) then frontend (vitest)
npm run lint # eslint on both workspaces
npm run format # prettier --write, repo-wideХуки Husky (pre-commit, pre-push, commit-msg) автоматически запускают lint-staged и commitlint (Conventional Commits).
Развертывание
Dockerfile в корне репозитория выполняет многостадийную сборку: frontend → backend → runtime-образ, в который включён Litestream для непрерывной репликации SQLite в корзину MinIO (совместимую с S3), и восстанавливает данные при загрузке, если задан MINIO_BUCKET. garmin-connector/Dockerfile собирает образ sidecar отдельно. deploy/docker-compose.yml запускает оба сервиса как соседние смежные сервисы во внутренней Docker-сети: у sidecar нет опубликованных портов, и он доступен только из backend по адресу http://garmin-connector:8000. deploy/Caddyfile — конфигурация reverse-proxy для публичного сервиса.
Обязательные переменные окружения описаны прямо в backend/.env.example и garmin-connector/.env.example.
Need fix "вход вход" typo. Also "Python-service" should be "Python-sidecar" or "Python sidecar". Use "Python-sidecar". Let's revise.
Potential "Youtube" vs "YouTube" okay.
"for deeper reference material" we can say "для более глубинного знакомства" etc. Let's not overcomplicate.
Need "open ports" "published port" in docker is "проброшенный порт" or "опубликованный порт". Good.
Need "deploy/docker-compose.yml" kept.
Need "NestJS backend" maybe "NestJS-бэкенд" or "бэкенд NestJS". I'll use "NestJS-бэкенд" (German).
Need "Home Assistant" onwards "Home Assistant and YouTube have normal REST APIs" — "У Home Assistant и Video" etc.
Potential "replication to a MinIO bucket" -> "в корзину MinIO". Good.
Now, should we translate "bucket" as "корзину"? Yes, S3 bucket.
Need "the frontend → backend → runtime image" - we said "сборку: frontend → backend → runtime-образ", Good.
Need "multi-stage builds" maybe "multi-stage" no translation? "многостадийную".
Need "No local server" maybe "without standing up server" but yes.
Need avoid inserting "developer.abruptly" not.
Let's execute final.
One question: User says "Return only the translated text, with no wrapper and no code fence." So final answer should be plain text. We'll output direct.
We have to ensure no backticks around the answer. None.
Let's finalize.# home-remote-mcps
Персональный удалённый MCP-шлюз. Предоставляет Garmin Connect, Home Assistant и YouTube как серверы Model Context Protocol, доступные по HTTP, чтобы Claude (или любой MCP-клиент) мог обращаться к ним и управлять ими откуда угодно — без локального сервера и локальных учётных данных.
Аутентификация для веб-интерфейса делегируется внешнему SSO (home-auth, OAuth2). MCP-клиенты аутентифицируются отдельно, с помощью персонального API-ключа, выдаваемого из этого интерфейса.
Зачем sidecar для Garmin
У Garmin Connect нет официального публичного API и активно поддерживаемого Node.js-клиента. Сервис garmin-connector — это небольшой внутренний Python-sidecar, оборачивающий библиотеку garminconnect, которая выполняет вход в Garmin (включая MFA) и обновление токенов. NestJS-бэкенд общается с ним по Docker-сети с общим секретом; наружу sidecar не публикуется никогда. У Home Assistant и YouTube есть обычные REST API, поэтому бэкенд обращается к ним напрямую.
Структура проекта
backend/ NestJS API — REST (auth, credentials, API keys) + MCP servers, DDD-ish layers
frontend/ React SPA — login, manage stored credentials, issue MCP API keys
garmin-connector/ FastAPI sidecar — Garmin Connect login/session via `garminconnect`
deploy/ docker-compose + Caddy config for productionПодробная архитектура (слои, путь MCP-запроса, устройство коннекторов по интеграциям, модель аутентификации) — в CLAUDE.md; более глубокие справочные материалы — в ai-docs/. Документация, ориентированная на человека, лежит в docs/.
Требования
Node.js >= 20 (см.
.nvmrc)Python >= 3.11 для
garmin-connectorЗапущенный экземпляр
home-auth(OAuth2-клиент, зарегистрированный для этого приложения) для браузерного входаDocker для продакшн-развёртываний (
deploy/docker-compose.yml)
Локальная разработка
npm install # installs backend + frontend workspaces
cp backend/.env.example backend/.env # fill in home-auth + secrets, see comments in the file
cp garmin-connector/.env.example garmin-connector/.env
npm run dev:backend # http://localhost:3000 (API under /api, Swagger under /api/docs)
npm run dev:frontend # http://localhost:5173, proxies API calls to the backend
cd garmin-connector && pip install -r requirements.txt && uvicorn app.main:app --reload --port 8000GARMIN_CONNECTOR_SECRET должен совпадать в backend/.env и garmin-connector/.env.
Сборка, тесты, линт
npm run build # frontend, then backend (bundles frontend/dist into the backend build)
npm run test # backend (jest) then frontend (vitest)
npm run lint # eslint on both workspaces
npm run format # prettier --write, repo-wideХуки Husky (pre-commit, pre-push, commit-msg) автоматически запускают lint-staged и commitlint (Conventional Commits).
Развёртывание
Dockerfile в корне репозитория выполняет многостадийную сборку: frontend → backend → runtime-образ, в который включён Litestream для непрерывной репликации SQLite в корзину MinIO (совместимую с S3) и восстановления при загрузке, если задан MINIO_BUCKET. garmin-connector/Dockerfile собирает образ sidecar отдельно. deploy/docker-compose.yml запускает оба сервиса как соседние сервисы во внутренней Docker-сети: у sidecar нет опубликованных портов, он доступен только из backend по адресу http://garmin-connector:8000. deploy/Caddyfile — конфигурация обратного прокси для публичного сервиса.
Обязательные переменные окружения описаны прямо в backend/.env.example и garmin-connector/.env.example.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA unified data gateway MCP server that enables Claude to interact with multiple external REST and GraphQL APIs through OAuth 2.0 authentication.
- AlicenseNot gradedqualityCmaintenanceA unified MCP server that connects AI assistants to multiple fitness services (Hevy, Strava, Cronometer, Intervals.icu) through a single secure endpoint, enabling workout, nutrition, and activity data access.MIT
- FlicenseNot gradedqualityDmaintenanceRemote MCP server acting as a personal assistant with secure OAuth authentication, integrating Google Calendar, TickTick tasks, meal logging, workout tracking, and water intake logging.
- AlicenseNot gradedqualityAmaintenanceA multi-user OAuth 2.1-protected gateway that enables Claude to access Garmin Connect tools through secure per-user sessions.4MIT
Related MCP Connectors
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SlobodaFR/home-remote-mcps'
If you have feedback or need assistance with the MCP directory API, please join our Discord server