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
Доступные инструменты
Инструмент | Возвращает | Параметры (все необязательные) |
| Ежедневные шаги, часы сна, пульс в покое |
|
| Категоризированный реестр расходов с итогами |
|
Оба инструмента возвращают соответствующие строки плюс вычисленные сводки (средние/мин/макс для здоровья, итоги по категориям для финансов), чтобы модели не приходилось самостоятельно агрегировать данные по множеству строк.
1. Настройка окружения
Требуется Python 3.10+.
cd quantified-self-mcp
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt2. Загрузка данных
Попробуйте сразу на встроенных примерах:
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_ratefinance 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.py4. Подключение к Claude Desktop
Claude Desktop запускает локальные MCP-серверы как подпроцессы и общается с ними через stdio на основе JSON-файла конфигурации:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.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с заданными вами целями.
Maintenance
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server that allows users to query and analyze their Apple Health data using SQL and natural language, utilizing DuckDB for fast and efficient health data analysis.931,096564MIT
- AlicenseNot gradedqualityCmaintenanceLoads Apple Health export data into a local SQLite database and exposes tools to query health metrics and workout records via natural language.2MIT
- AlicenseNot gradedqualityCmaintenanceTurns 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.60MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying personal data synced from services like Lunch Money and Strava using SQL via Claude.131MIT
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.
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/Thecimal/quantified-self-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server