Skip to main content
Glama
Thecimal

Quantified Self MCP Server

Quantified Self MCPサーバー

ローカルのModel Context Protocol(MCP)サーバーで、LLM(例: Claude Desktop)があなたの個人の健康・財務データを照会できるようにします。すべては2つのローカル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にエクスポートし、同じコマンドを自分のファイルに対して実行してください:

  • 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サーバーをサブプロセスとして起動し、JSON設定ファイルに基づいてstdioで通信します:

  • 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には、ローカルMCPサーバー用の新しいワンクリック「デスクトップ拡張機能」パッケージ形式もあります。このような個人利用には必要ありませんが、JSON編集に不慣れな人とサーバーを共有したい場合に知っておくとよいでしょう。

5.(任意)Dockerで実行 / Glamaでホスト

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

Dockerfileが同梱されており、ローカルvenvの代わりにコンテナで実行したい人向けです。Glamaでのホスティングも含みます。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_PATHFINANCE_DB_PATHは、コンテナ内の/data/health.db/data/finance.dbにデフォルト設定されるため、マウントされたボリューム(例: Glamaの/dataマウント)が再デプロイ後もデータベースを永続化します。上書きするには、server.pyの上部にある設定セクションを参照してください。

glama.jsonは意図的に最小限です— 単にGlamaにこのリポジトリを指すだけです。Dockerfileが、イメージのビルドと起動方法(python server.py、stdio経由)の実際のソースです。以前のバージョンのglama.jsonは、Dockerfileを使用する代わりに、汎用ビルドパック(裸のdebian:trixie-slimベースイメージと手動のpip installビルドステップとcmdArguments)を手動設定しようとしました。そのイメージにはPythonインタープリタが確実にプロビジョニングされておらず、プラットフォームはこのリポジトリに存在しないNode.jsエントリポイントの実行にフォールバックしました(Cannot find module '/app/server.js')。Dockerfileを同梱することで、その曖昧さは解消されます。

プライバシーモデル — 「ローカル」が実際に意味するもの

これについては正確にしておく価値があります。これがプロジェクトの要点だからです:

  • 両方のSQLiteデータベースは、このプロジェクトのdata/フォルダ内の、あなたのディスク上にのみ存在します。サーバーはネットワーク呼び出しを行わず、テレメトリもなく、どこにも同期しません。

  • server.pyは、SQLiteの読み取り専用モードで両方のデータベースを開きます(単に「書き込みを発行しない」だけでなく、接続は物理的に不可能です)。バグのあるプロンプトや悪意のあるプロンプトでも、どちらのツールもあなたのデータを変更できません。ターミナルからあなたが実行するinit_db.pyだけが、書き込みを行います。

  • MCPクライアントがこれらのツールのいずれかを呼び出すと、そのクエリに対して返された特定の行が、応答しているモデルに送信される会話の一部になります。これがMCPがモデルに情報を提供するメカニズムです。Claude Desktopをホスト型モデルで使用している場合、あなたが尋ねたデータのスライスは、そのターンでAnthropicに送信されることを意味します。チャットに入力する他のものと同様です。

  • つまり、ここでの「ローカル」とは、あなたの完全なデータセットがサードパーティのデータベースに保存または同期されることは決してなく、ツールが実際に呼び出されない限り何も送信されない— そしてその場合でも、その特定の呼び出しが返す行のみが送信され、データベース全体ではありません。完全にオフラインのエンドツーエンドを意味するものではありません。そのためには、MCP互換クライアントと組み合わせた完全にローカルなモデルランタイム(例: Ollama)が必要です。

トラブルシューティング

  • サーバーがClaude Desktopに表示されない: commandargsが絶対パスを使用しているか、venvのPythonパスが実際に存在するか、アプリを完全に終了して再起動したかを確認してください。ログは~/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を再起動してください。サーバープロセスはメッセージごとではなく、アプリセッションごとに1回起動されます。

  • GlamaでのホスティングがCannot find module '/app/server.js'で失敗する: これは、デプロイがPythonではなくNode.jsランタイムにフォールバックしたことを意味します。このリポジトリにはserver.jsはありません。プラットフォームが確実にpython server.pyを実行するように、汎用ビルドパック設定ではなく、同梱のDockerfile(上記の「Dockerで実行 / Glamaでホスト」を参照)からビルドしてください。

拡張

自然な次のステップをいくつか紹介します。どれもまだビルドされていませんが、パターンが示す方向性です:

  • エントリをCSV/SQLの代わりにLLMを通じて追加できるように、ツール(log_expenselog_daily_metric)を書く。

  • より多くのメトリクス— 体重、ワークアウト、気分、水分摂取量— それぞれが別のテーブルと別の読み取りツールになります。

  • 予算対実績ツール。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