Skip to main content
Glama
Thecimal

Quantified Self MCP Server

Quantified Self MCP Server

Локальный сервер Model Context Protocol (MCP), который позволяет LLM — например, Claude Desktop — запрашивать ваши личные данные о здоровье и финансах. Все хранится в двух локальных SQLite-файлах и читается напрямую с диска Python-процессом, которым вы управляете. Никакого облачного хранилища, никакой панели управления, никакого стороннего сервиса.

Что входит

quantified-self-mcp/
├── server.py              # the MCP server (FastMCP) — 2 tools
├── init_db.py              # loads a CSV file into the local SQLite database
├── requirements.txt
├── .gitignore              # keeps data/ and .db files out of version control
└── sample_data/
    ├── health_sample.csv   # 30 days of sample data, so you can try it immediately
    └── finance_sample.csv  # ~2 months of sample expenses

Запуск init_db.py создает папку data/ рядом с server.py, содержащую health.db и finance.db — эта папка не включена в репозиторий, поскольку генерируется на вашей машине из ваших собственных данных.

Related MCP server: apple-health-mcp

Доступные инструменты

Инструмент

Возвращает

Параметры (все необязательные)

read_health_data

Ежедневные шаги, часы сна, пульс в покое

start_date, end_date (ISO YYYY-MM-DD; по умолчанию — последние 30 дней)

read_finance_data

Категоризированный реестр расходов с итогами

start_date, end_date, category (по умолчанию — последние 90 дней, все категории)

Оба инструмента возвращают соответствующие строки плюс вычисленные сводки (средние/мин/макс для здоровья, итоги по категориям для финансов), чтобы модели не приходилось самостоятельно агрегировать данные по множеству строк.

1. Настройка окружения

Требуется Python 3.10+.

cd quantified-self-mcp
python3 -m venv .venv
source .venv/bin/activate      # Windows: .venv\Scripts\activate
pip install -r requirements.txt

2. Загрузка данных

Попробуйте сразу на встроенных примерах:

python init_db.py health  sample_data/health_sample.csv
python init_db.py finance sample_data/finance_sample.csv

Чтобы использовать собственные данные, экспортируйте их в CSV со следующими колонками, затем выполните те же команды для своих файлов:

  • health CSV: date, steps, sleep_hours, resting_heart_rate

  • finance CSV: date, category, amount, description (description необязателен)

Даты должны быть в формате ISO (2026-08-23); также принимается и конвертируется MM/DD/YYYY. Суммы/числа могут содержать $ и , (например, $1,234.56) — они удаляются автоматически. Строка с проблемой (неверная дата, нечисловая сумма, отсутствующая категория и т.д.) пропускается с предупреждением, а не прерывает весь импорт; последняя выведенная строка всегда сообщает, сколько строк загружено, а сколько пропущено.

Повторный запуск init_db.py health выполняет апсерт по дате (безопасно перезапускать по мере добавления дней); init_db.py finance каждый раз добавляет новые строки, поскольку у реестра нет естественного уникального ключа. Добавьте --replace к любой из команд, чтобы вместо этого сначала очистить таблицу.

3. (Необязательно) Проверка в изоляции

Прежде чем подключать сервер к какому-либо клиенту, вы можете открыть MCP Inspector и вызвать инструменты напрямую в браузере:

fastmcp dev inspector server.py

4. Подключение к Claude Desktop

Claude Desktop запускает локальные MCP-серверы как подпроцессы и общается с ними через stdio на основе JSON-файла конфигурации:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Можно перейти к нему прямо из приложения: Настройки → Разработчик → Изменить конфигурацию.

Добавьте запись в mcpServers, используя абсолютные пути — важно указать command на интерпретатор Python внутри только что созданного виртуального окружения, а не голый python. Claude Desktop запускает серверы в минимальном окружении, которое не гарантированно наследует PATH вашей оболочки или активированный venv, поэтому голый "python" часто разрешается в неправильный интерпретатор (или вообще ни в какой), и сервер молча не запускается.

{
  "mcpServers": {
    "quantified-self": {
      "command": "/absolute/path/to/quantified-self-mcp/.venv/bin/python3",
      "args": ["/absolute/path/to/quantified-self-mcp/server.py"]
    }
  }
}

В Windows это обычно:

{
  "mcpServers": {
    "quantified-self": {
      "command": "C:\\absolute\\path\\to\\quantified-self-mcp\\.venv\\Scripts\\python.exe",
      "args": ["C:\\absolute\\path\\to\\quantified-self-mcp\\server.py"]
    }
  }
}

Сохраните файл, затем полностью завершите и снова откройте Claude Desktop (не просто закройте окно — для загрузки изменений конфигурации требуется перезапуск). Найдите значок молотка/инструментов в поле чата, чтобы убедиться, что quantified-self подключен.

FastMCP также включает CLI-ярлык, который редактирует этот файл за вас — fastmcp install claude-desktop server.py --name "Quantified Self" — стоит попробовать (выполните fastmcp install claude-desktop --help для актуальных флагов), но ручной JSON выше всегда будет работать и его проще отлаживать, если что-то не так. У Anthropic также есть более новый формат упаковки "Desktop Extension" в один клик для локальных MCP-серверов; для личного использования вроде этого он не обязателен, но о нем полезно знать, если вы захотите поделиться этим сервером с кем-то, кому неудобно редактировать JSON.

5. (Необязательно) Запуск в Docker / размещение на Glama

#5-optional-run-it-in-docker--host-it-on-glama

Включен Dockerfile для тех, кто хочет запускать это в контейнере вместо локального venv — включая размещение на Glama, который собирает проект напрямую из Dockerfile репозитория, когда он присутствует.

docker build -t quantified-self-mcp .
docker run -i --rm -v "$PWD/data:/app/data" quantified-self-mcp

Образ — только Python (python:3.12-slim + pip install -r requirements.txt); в этом проекте нет Node.js. HEALTH_DB_PATH и FINANCE_DB_PATH по умолчанию указывают на /data/health.db и /data/finance.db внутри контейнера, чтобы смонтированный том (например, монтирование /data на Glama) сохранял ваши базы данных между передеплоями — см. раздел Configuration в начале server.py, чтобы переопределить их.

glama.json намеренно минимален — он просто указывает Glama на этот репозиторий; Dockerfile является фактическим источником истины для того, как образ собирается и запускается (python server.py, через stdio). Более ранняя версия glama.json пыталась вручную настроить универсальный buildpack (голый базовый образ debian:trixie-slim плюс ручные шаги сборки pip install и cmdArguments) вместо использования Dockerfile — в том образе не был надежно обеспечен интерпретатор Python, и платформа откатывалась к попытке запустить несуществующую в этом репозитории Node.js-точку входа (Cannot find module '/app/server.js'). Наличие Dockerfile устраняет эту неоднозначность.

Модель конфиденциальности — что на самом деле означает "локально"

Здесь стоит быть точным, поскольку это весь смысл проекта:

  • Обе SQLite-базы данных находятся только на вашем диске, в папке data/ этого проекта. Сервер не совершает сетевых вызовов, не имеет телеметрии и ничего никуда не синхронизирует.

  • server.py открывает обе базы данных в режиме только для чтения SQLite (не просто "не выполняет запись" — соединение физически не может этого сделать). Даже ошибочный или вредоносный промпт не может заставить ни один из инструментов изменить ваши данные; только init_db.py, запускаемый вами из терминала, когда-либо записывает в них.

  • Когда MCP-клиент вызывает один из этих инструментов, конкретные строки, возвращенные для этого запроса, становятся частью разговора, отправляемого модели, которая отвечает — это механизм, с помощью которого MCP предоставляет модели информацию. Если вы используете Claude Desktop с размещенной моделью, это означает, что любой фрагмент данных, о котором вы спрашиваете, отправляется в Anthropic для этого хода, как и все остальное, что вы вводите в чат.

  • Таким образом, "локально" здесь означает: ваш полный набор данных никогда не хранится и не синхронизируется ни с какой сторонней базой данных, и ничего не передается, пока инструмент фактически не вызван — и даже тогда передаются только строки, возвращаемые этим конкретным вызовом, а не вся база данных. Это не означает полностью офлайн-режим от начала до конца. Для этого вам понадобится полностью локальная среда выполнения модели (например, Ollama) в паре с MCP-совместимым клиентом.

Устранение неполадок

  • Сервер не появляется в Claude Desktop: проверьте, что command и args используют абсолютные пути, убедитесь, что путь к Python в venv действительно существует, и что вы полностью завершили и снова открыли приложение. Журналы находятся в ~/Library/Logs/Claude (macOS) или %APPDATA%\Claude\logs (Windows) — mcp-server-quantified-self.log покажет stderr именно этого сервера.

  • Инструмент сообщает "No health/finance database found": сначала запустите init_db.py для этого набора данных — инструменты намеренно не создают пустые базы данных автоматически, чтобы вы не получали молча пустые ответы.

  • Изменения в server.py не вступают в силу: перезапустите Claude Desktop; он запускает процесс сервера один раз за сеанс приложения, а не за сообщение.

  • Размещение на Glama завершается ошибкой Cannot find module '/app/server.js': это означает, что развертывание откатилось к среде выполнения Node.js вместо Python — в этом репозитории нет server.js. Собирайте из включенного Dockerfile (см. "Запуск в Docker / размещение на Glama" выше), а не из универсальной конфигурации buildpack, чтобы платформа надежно выполняла python server.py.

Расширение

Несколько естественных следующих шагов, если хотите — ничего из этого не реализовано, просто направление, в которое ведет паттерн:

  • Написать инструменты записи (log_expense, log_daily_metric), чтобы записи можно было добавлять через LLM, а не напрямую через CSV/SQL.

  • Больше метрик — вес, тренировки, настроение, потребление воды — каждая это просто еще одна таблица и еще один инструмент чтения.

  • Инструмент "бюджет против факта", сравнивающий итоги read_finance_data с заданными вами целями.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Turns a personal-finance SQLite database into typed, schema-validated tools that an AI assistant can call directly, letting you manage accounts, transactions, budgets, debts, investments, tax estimates, and goals through natural language.
    60
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables querying personal data synced from services like Lunch Money and Strava using SQL via Claude.
    13
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • The grounded data layer for any LLM: governed SQL, metrics, lineage and catalog over your data.

  • Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.

  • Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.

View all MCP Connectors

Latest Blog Posts

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/Thecimal/quantified-self-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server