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 会在 server.py 旁边创建一个 data/ 文件夹,其中包含 health.dbfinance.db——该文件夹不包含在此处,因为它是在你的机器上根据你自己的数据生成的。

Related MCP server: apple-health-mcp

暴露的工具

工具

返回

参数(全部可选)

read_health_data

每日步数、睡眠时长、静息心率

start_dateend_date(ISO YYYY-MM-DD;默认为最近 30 天)

read_finance_data

分类支出账本,含总计

start_dateend_datecategory(默认为最近 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,然后对你的文件运行相同的命令:

  • 健康 CSVdate, steps, sleep_hours, resting_heart_rate

  • 财务 CSVdate, category, amount, descriptiondescription 可选)

日期应为 ISO 格式(2026-08-23);也接受 MM/DD/YYYY 并会自动转换。金额/数字可以包含 $,(例如 $1,234.56)——这些会被自动去除。有问题的行(日期错误、金额非数字、缺少类别等)会被跳过并发出警告,而不会中止整个导入;最后打印的一行总会告诉你加载了多少行、跳过了多少行。

再次运行 init_db.py health 会按日期进行 upsert(随着你添加天数,可以安全地重复运行);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 在最小化环境中运行服务器,该环境不能可靠地继承你 shell 的 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 还有一种较新的一键式"桌面扩展"打包格式,用于本地 MCP 服务器;对于像这样的个人使用来说不是必需的,但如果你想把此服务器分享给不太习惯编辑 JSON 的人,值得了解一下。

5.(可选)在 Docker 中运行 / 托管在 Glama 上

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

项目包含一个 Dockerfile,供任何想在容器中而不是本地 venv 中运行的人使用——包括托管在 Glama 上,当仓库中存在 Dockerfile 时,Glama 会直接从中构建。

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_PATHFINANCE_DB_PATH 默认为容器内的 /data/health.db/data/finance.db,这样挂载的卷(例如 Glama 的 /data 挂载)可以在重新部署时持久化你的数据库——请参阅 server.py 顶部的 Configuration 部分来覆盖它们。

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 中:检查 commandargs 是否使用绝对路径,确认 venv 的 Python 路径确实存在,并确认你完全退出并重新打开了应用。日志位于 ~/Library/Logs/Claude(macOS)或 %APPDATA%\Claude\logs(Windows)——mcp-server-quantified-self.log 会专门显示此服务器的 stderr。

  • 工具报"未找到健康/财务数据库":先为该数据集运行 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_expenselog_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