Skip to main content
Glama
mktpavlenko

fineye-mcp

by mktpavlenko

fineye-mcp — AIエージェントのための、あなたのFinEye財務

非公式・独立。 これは FinEye アプリのAPIに対する、個人利用・コミュニティ製クライアントです。FinEyeとは一切関連をしておらず、FinEyeによる推奨・サポートも受けていませんあなた自身のログインであなた自身のデータにのみ参照します。保証はありません — 自己責任でご利用ください。同梱されているSupabase anon key はアプリのアプリの公開キー(FinEyeクライアントに同梱されている)であり、秘密ではないです。

MCPサーバーです。AIエージェントに、あなたのFinEye of the personal financialデータへの型付けされたアクセスを提供します — 口座、取引、予算、カテゴリ、タグ、保有、支出分析などです。書き込みは明示的な安全ゲートの後ろにあり、削除はさらにその後ろの2つのゲートの後ろにあります。同じコードにはCLIとターミナルダッシュボードも含まれています。

これらは、サンドボックスではなく実際の財務記録です。設計は最初からそれを想定しています。デフォルトモードでは何も削除できず、読み取り専用モードでは書き込みツールを登録することすらせず、破壊的な呼び出しは、あなたが明確に確認するまでは常にプレビューです。

クイックスタート

npm install && npm run build
node dist/index.js login          # Google OAuth, token stored at ~/.config/fineye/session.json
npm link                          # optional: puts `fineye` on your PATH

Claude Codeに登録する:

claude mcp add fineye -s user -- fineye mcp                          # read + write
claude mcp add fineye -s user -e FINEYE_DELETE=1 -- fineye mcp       # read + write + delete
claude mcp add fineye-ro -s user -e FINEYE_READONLY=1 -- fineye mcp  # read-only

他のMCPクライアントでも同じコマンドを使ってください:

{
  "mcpServers": {
    "fineye": {
      "command": "node",
      "args": ["/absolute/path/to/fineye-mcp/dist/index.js", "mcp"],
      "env": {},
    },
  },
}

Related MCP server: Lunch Money MCP Server

ツール

20個のツールがあります。Therうち10個は読み取り専用です。

Tool

説明

fineye_workspaces

サーバーがどのアカウントとしてログインしているかと、アクティブなワークスペース

fineye_accounts

残高。view='goals'は貯蓄目標、view='holdings'は暗号通貨/株を表示

fineye_networth

メイン通貨双方の純資産、口座別の内訳に含まれる。任意での日次履歴

fineye_transactions

派生したtype(expense/income/transfer)とscheduledフラグを持つ明細

fineye_analytics

収入/支出/純額 + カテゴリ、サブカテゴリ、タグ、店舗別の支出内訳

fineye_budget

当該期間の予算と実際の支出の比較。action='history'で過去の期間を表示

fineye_categories · fineye_tags

階層を返す。名前をIDに変換するために使用

fineye_notifications

アプリ内インボックス — FinEyeが機能変更を案内する場所

fineye_export

取引をCSVまたはJSONとしてインラインで返却

fineye_playbook

タスクのガイダンス(後述参照)

fineye_add · fineye_tx

取引の作成、編集 / タグ付け / 分割 / 返金 / コピー / 定期化

fineye_category · fineye_tag · fineye_account

作成と操作。カテゴリは削除ではなく(元に戻せる)アーカイブが可能

fineye_budget_set

期間の予算合計を設定

fineye_rules

自動分類ルール — 将来の取引にのみ適用される

fineye_delete · fineye_bulk

完全削除。一括の再カテゴリ化 / タグ付け / 削除

どのツールでも、accountcategorytagparent にパラメータが向かう場合は、名前またはIDのどちらでも指定できます。パラメータ名が文字通りidというものは常に生のIDを意味します。

モードとゲート

環境が、サーバーで何ができるかを決めます:

環境変数

効果

(なし)

読み取り+書き込み。削除ツールは登録されるが、削除はすべて拒否される。

FINEYE_DELETE=1

削除が可能になる — ただし、呼び出し毎に必ず confirm: true を指定した場合のみ。

FINEYE_READONLY=1

書き込みツールと破壊的ツールは一切登録されない。読み取り専用ツールのみ12個が維持される。

FINEYE_DELETEはサーバー登録時に一度だけ設定され、セッション中はその有効です。つまり、これは確認ではなく権限です。そのため、すべての破壊的呼び出しはまたconfirm: trueを必要とします。これがないと、ツールが削除対象のプレビューを返すだけで、何も変更しません。fineye_bulkapply: trueがない限りディラム状態のプレビューに留まり、削除するにはapplyconfirmが両方必要です。

MCPレイヤーの下では、クライアントが動詞ごとの許可リスト(src/client.tsWRITABLE_TABLESPATCHABLE_TABLESDELETABLE_TABLES)適用しています。これ他のテーブルやHTTP動詞は拒否されます。削除には単一のid=eq.<id>しか受け付けられません(大量削除の経路はありません)が、一括削除の場合は先に/tmpにJSONバックアップをしていts>。アカウントとワークスペース設定は決して削除できません。 予定された分割取引は、あなたが求めた場合を除き、一括削除では対象除外れません。

エラーには機械可読なcodeauthforbiddennot_foundgateinvalidnetworkapi)が含まれており、エージェントは「その取引は存在しない」と「ネットワーク例外が落ちている」をメッセージ文字列のマーケーションなしに区別できるようになっています。CLIはこれら同じコードを終了ステータス(3, 4, 5, 4, 2, 6, 1)にマッピングしています。

並行編集: 書き込みはJSONフィールドをマージするのではなく、フィールド全体を置き換えます。スマホアプリと同時に同じレコードを編集することは避けましょう — 最後に書き込んだ方が優先されます。

プレイブック

サーバーのinstructionsは、各接続の度に送られるので短時間に頃です。より深いガイダンス — 実際に誤った数値をもたらす落とし穴 — は、タスクが必要になったときにだけ読み込まれます:

  • monthly-review — 正しい月次像を得るための呼び出し順序

  • safe-bulk-changes — ドライランで実施して、一致件数を検証してから適用する

  • test-without-polluting — 作成→実行→削除のできるカナリアテストと、取り消せないもの

  • find-and-fix-categories — 自動ルールは未来を修正し、一括修正は過去を修正する

これらはMCPリソース(fineye://playbooks/<id>)しても、fineye_playbookツールでも利用できます。クライアントのリソースサポートが一様ではないためです。データモデルの意味論はCLIエージェントスキル(src/skill/semantics.ts)と共有されており、両者間で乖離を起こすことはありません。

リモートアクセス(HTTP)

ローカルプロセスを起動できないクライアント — 例えばホスティングされたチャットUI — のために、サーバーはStreamable HTTPprotocolにも対応しています:

export FINEYE_MCP_TOKEN=$(openssl rand -hex 24)
fineye mcp --http --port 8790          # binds 127.0.0.1; refuses to start without a token

ヘッダー認証を使って認証します。こうすることで、シークレットがURL、ブラウザ履歴、プロキシログに残りません:

Authorization: Bearer $FINEYE_MCP_TOKEN

クライアントにヘッダーフィールドがない場合は、トークンをURLパス(https://<host>/<token>)としても使えます。誤った資格情報には403ではなく404を返します — 探査者に、そこに何が存在していることを知られないようにするため。

リスナーは、設計上localhostで平文HTTPです。その前にTLSの前段を配置してください — Cloudflare Tunnel、Tailscale Funnel、VPS前のリバースリクシなど、すでに運用しているもので大丈夫です。そして、クライアントからはhttps://<your-host>/mcpを指すようにします。

実行する前に考えてください。これは実際の財務データを、1つのトークンだけで守られた状態で公開し続けるエンドポイントをインターネット上に置くことになります。無人で動かし続けるものにはFINEYE_READONLY=1を選んでください。トークンをスクリーンを撮ることは避け、ファイルを書き換えてからサーバーを再起動することでトークンを交換します。

CLI

人間とシェルスクリプトのための、同じ操作です。

fineye whoami
fineye accounts [--archived] [--json]
fineye networth [--history] [--json]
fineye transactions [--from <date> --to <date> --account <acc> --category <cat> --search <q>] [--json]
fineye analytics [--month YYYY-MM] [--all] [--leaf] [--by-tag] [--by-merchant --top <n>] [--json]
fineye budget [--month YYYY-MM] | fineye budget history [--limit <n>]
fineye export [--format csv|json] [--from --to] [--out <file>]

fineye add expense <amount> --account <acc> [--category --desc --date --fee]
fineye add transfer <amount> --from <acc> --to <acc> [--to-amount <n>]
fineye tx edit <id> [--desc --category --date --hold]
fineye bulk recategorize <filters> --set-category <cat> [--apply]
fineye rule add --merchant "<exact description>" --mcc <code> --category <cat>

金額は口座自身の通貨での小数表示です(例:42.50)。add transferは、アプリと同様に送金元・送金先の両方に同じ金額を書き込みます。実際の送金先の受取金額が異なる場合は--to-amountを渡してください — CLIが独自にレートを適用することはありません。

fineye uiには、ターミナルダッシュボードが起動します。口座と残高、30日のスパークラインを持つ純資産、選択した口座の取引、カテゴリ別の支出チャートが表示されます。

MCPサーバーではなくCLIを使うエージェントのために、さeye skill --installはエージェントスキルを ~/.claude/skills/use-fineye/SKILL.mdに書き込みます。

動作のしくみ

FinEyeは、Supabaseバックエンド上のCapitorアプリです。このクライアントは、アプリと同じPostgRESTテーブルとRPCを使って通信し、あなた自身のGoogleアカウントとしてのPKCE OAuthで認証します(メールOTPはフォールバック)。行レベルセキュリティにより、あなたが自分自身の行だけを参照できます。

このレイヤリングは意図的なものです:

src/domain/*      pure logic: valuation, analytics, transaction shapes, bulk selection
src/client.ts     the only thing that talks HTTP — and where the allow-lists live
src/mcp/*         the MCP surface: tools, resources, instructions, transports
src/commands/*    the CLI surface over the same domain
src/skill/*       data-model semantics, shared by the MCP instructions and the CLI skill

両方のインターフェースが同じドメイン関数を呼び出しているため、CLIと「MCPサーバーのmp」との間で「トランスファーとは何か」や「どの行を使うとしてカウントするのか」が無い違ってくるることかありません。

あ、データに関する事実をここに述べます。これらを間違えると、確信を持った誤った答えを生成してしまうためです。トランザクションにはトップレベルの金額がありません(movements[].sumの合計を使う。支出はマイナスになります)。各口座には固有の通貨があり、数値の合計をサーバー同士で直接比較することはできません。2つのレッグ(足)を持つ動きは、常に自分の口座間の送金を意味します。分割払いプランの将来のレッグにはscheduled`フラグが付いており、実際に支出した金額からは分析の対象外になります。

デベロップメント

npm run typecheck && npm run lint && npm test && npm run build
npm run format

テストスイートはビルド済みのバイナリを起動し、stdioを介して実際のMCPを送信します。これにより、輸送層の配線が「前提」ではなく「テスト保証」されます。

ライセンス

MIT — LICENSEを参照してください。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access and analyze MonarchMoney personal finance data through natural language queries. Provides comprehensive financial insights including account balances, transaction analysis, budget tracking, and spending patterns with enterprise-grade security.
    9
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to interact with your Lunch Money personal finance data, providing tools for managing transactions, categories, budgets, assets, and accounts.
    15
    17 npm
    ISC
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with YNAB budgets, performing read-only queries by default and optional write operations like creating transactions and managing categories through natural language.
    38
    146 npm
    30
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides read-only access to Monarch Money financial data, enabling AI assistants to analyze transactions, budgets, and cashflow.
    4
    MIT