money-forward-mcp-community
Unofficial, community-maintained stdio MCP server for Money Forward ME that uses cookie-based authentication to retrieve accounts and assets from manual entry accounts.
README
money-forward-mcp-community
Unofficial, community-maintained stdio MCP server and TypeScript client for Money Forward ME.
It reads Money Forward ME's authenticated web pages with a user-provided Cookie header and exposes portfolio, liabilities, linked accounts, cashflow, household-book summaries, and manual accounts as structured MCP tools.
[!WARNING] This project is unofficial and is not affiliated with Money Forward, Inc. or Money Forward Home, Inc. Internal endpoints and HTML can change without notice. Treat Cookies and returned financial data as secrets. Never put them in GitHub issues, logs, npm packages, or public prompts. Review the latest Money Forward terms before use.
Capabilities
- Portfolio total, asset-class allocation, and individual holdings
- Liability total, class allocation, loans, and card balances
- Flat account view across banks, securities, points, cards, and loans
- Monthly cashflow rows with direction and calculation-target filters
- Monthly income, expense, net balance, and category summaries
- Custom/manual account and asset lookup
- Browser login, trusted Cookie import, authentication checks, and rolling Cookie refresh
Data tools never modify financial records. Month-specific cashflow reads update Money Forward's selected-month session state and may persist a rotated Cookie.
Quick start
Local / desktop
npx money-forward-mcp-community auth
npx money-forward-mcp-community auth --status
Complete login and multi-factor authentication in the browser. The Cookie is stored at:
~/.config/money-forward-mcp-community/config.json
Example MCP client configuration:
{
"mcpServers": {
"money-forward-me": {
"command": "npx",
"args": ["-y", "money-forward-mcp-community"]
}
}
}
Server / Hermes / CI
Do not automate email/password login on a remote server. Export a Cookie from a trusted authenticated browser and supply it through a secret manager or a protected config file.
MONEY_FORWARD_COOKIE='your Cookie header' \
npx -y money-forward-mcp-community
Or mount a config file:
{
"cookie": "your Cookie header",
"updatedAt": "2026-07-20T00:00:00.000Z"
}
MONEY_FORWARD_MCP_COMMUNITY_CONFIG=/run/secrets/money-forward/config.json \
npx -y money-forward-mcp-community
Tool selection for agents
Use compact summary tools before requesting large detail payloads.
| User intent | Preferred tool | Notes |
|---|---|---|
| Net worth or balances by bank/card/account | money_forward_get_account |
Flat signed balances; assets positive, liabilities negative |
| Total assets or allocation | money_forward_get_portfolio_summary |
Compact; includes zero-balance asset classes |
| Individual holdings or valuation details | money_forward_get_portfolio_details |
Larger response; grouped by asset class |
| Total debt or debt allocation | money_forward_get_liability_summary |
Positive amounts owed |
| Individual loans or card balances | money_forward_get_liability_details |
Positive amounts owed |
| Monthly income, spending, net, or category totals | money_forward_get_cashflow_summary |
Prefer an explicit month |
| Individual monthly cashflow rows | money_forward_get_cashflow_details |
Supports direction and calculation-target filters |
| Custom/manual accounts only | money_forward_list_manual_accounts |
Not linked banks, cards, or securities |
| Assets inside one manual account | money_forward_list_manual_assets |
Requires id from the previous tool |
Recommended agent workflow
- If a data tool reports missing or expired authentication, call
money_forward_auth_status, thenmoney_forward_auth_check. - For monthly analysis, call
money_forward_get_cashflow_summaryfirst. - Call
money_forward_get_cashflow_detailsonly when individual transactions are necessary. - For net worth by account, call
money_forward_get_accountand sum its signedbalancevalues. - For asset composition, use Portfolio tools rather than reconstructing allocation from account rows.
Structured output
Successful tools return both human-readable JSON text and MCP structured output. Programmatic consumers should read:
response.structuredContent.result;
Each tool declares an MCP outputSchema, allowing compatible agents to inspect the response contract before calling it.
Errors set isError: true and return a stable object in structuredContent.error:
{
"code": "auth_required",
"message": "Money Forward ME authentication is not configured.",
"retryable": false,
"suggestedTools": ["money_forward_auth_login", "money_forward_set_cookie"]
}
Defined error categories include authentication requirements/expiry, upstream timeouts or HTTP errors, and page-format changes.
Account model
money_forward_get_account returns a flat array. There is no institution-specific nested subAccounts model.
type MoneyForwardAccountEntry = {
accountId: string | null;
institution: string;
name: string;
kind: "asset" | "liability";
category: string | null;
balance: number;
currency: "JPY";
source: "account_detail" | "portfolio" | "liability" | "account_summary";
registeredAt: string | null;
lastFetchedAt: string | null;
status: string | null;
};
Example:
[
{
"institution": "Example Bank",
"name": "Savings",
"kind": "asset",
"category": null,
"balance": 1500000,
"currency": "JPY",
"source": "account_detail"
},
{
"institution": "Example Bank",
"name": "Home loan",
"kind": "liability",
"category": "Mortgage",
"balance": -12000000,
"currency": "JPY",
"source": "liability"
}
]
Account sign convention
kind: "asset":balanceis zero or positivekind: "liability":balanceis zero or negative- Sum all
balancevalues to obtain net value
source preserves the Money Forward page used for the row:
| Source | Meaning |
|---|---|
account_detail |
A sub-account from a linked institution's detail page |
portfolio |
A Portfolio holding such as points or stored value |
liability |
A Liability row such as a loan or card balance |
account_summary |
Institution total used when no lower-level row is available |
Matching across pages is generic and based on Money Forward's institution labels. No bank or card name is hard-coded. A source label is retained so agents can explain provenance and avoid treating fallback totals as detailed holdings. Portfolio or liability rows with an institution label that does not match a registered account are retained with accountId: null rather than silently discarded.
Cashflow
Both cashflow tools accept an optional month:
{ "month": "2026-06" }
Use explicit YYYY-MM whenever reproducibility matters. If omitted, Money Forward's currently displayed month is used. Selecting a month performs Money Forward's session-level month switch before reading; it does not edit transactions or household-book records.
money_forward_get_cashflow_details also accepts:
{
"month": "2026-06",
"direction": "expense",
"calculationTargetOnly": true
}
direction:all,income, orexpensecalculationTargetOnly: exclude rows Money Forward does not use in household-book calculations- Transaction
amount: income positive, expense negative - Summary
incomeandexpense: both positive totals - Summary
balance: income minus expense
Portfolio and liabilities
Portfolio and Liability deliberately keep Money Forward's original concepts separate:
- Portfolio summary/details describe assets and holdings.
- Liability summary/details describe positive amounts owed.
- Account entries normalize liabilities to negative signed balances for net-value calculations.
Do not add Portfolio and account asset totals together: they are different views of overlapping financial data.
Authentication tools
| Tool | Behavior |
|---|---|
money_forward_auth_status |
Checks local configuration only; no network request |
money_forward_auth_check |
Verifies the configured Cookie against Money Forward |
money_forward_auth_login |
Opens a Playwright browser and stores Cookies locally |
money_forward_set_cookie |
Verifies and stores a trusted Cookie header |
money_forward_clear_cookie |
Deletes the config-file Cookie; does not change environment variables |
Authentication priority:
MONEY_FORWARD_COOKIEMF_ME_COOKIE(compatibility)MONEY_FORWARD_MCP_COMMUNITY_CONFIG~/.config/money-forward-mcp-community/config.json
CLI:
money-forward-mcp-community auth
money-forward-mcp-community auth --status
money-forward-mcp-community auth --clear
money-forward-mcp-community set-cookie '<COOKIE_HEADER>'
money-forward-mcp-community serve
If Chromium is not installed:
npx -p playwright playwright install chromium
Cookie refresh
Money Forward may rotate session Cookies on authenticated responses.
- Config-file Cookies are updated atomically after a successful authenticated response.
- The temporary file and final config use mode
0600. - Environment-variable Cookies are never persisted to disk.
- Cookie values, previews, and local config paths are not returned by MCP authentication tools.
A Cookie can still be invalidated server-side by logout, password changes, or security policy. Use money_forward_auth_check when data access fails.
TypeScript API
import { MoneyForwardClient, readCookie } from "money-forward-mcp-community";
const client = new MoneyForwardClient({ cookie: await readCookie() });
const accounts = await client.getAccounts();
const JuneSummary = await client.getHouseholdBookSummary("2026-06");
const manualAccounts = await client.listManualAccounts();
Environment
| Variable | Default | Description |
|---|---|---|
MONEY_FORWARD_COOKIE |
none | Money Forward Cookie header |
MF_ME_COOKIE |
none | Compatibility Cookie environment variable |
MONEY_FORWARD_MCP_COMMUNITY_CONFIG |
default config path | Config JSON path |
MONEY_FORWARD_REQUEST_TIMEOUT_MS |
15000 |
Request timeout, 100–120000 ms |
MONEY_FORWARD_MCP_COMMUNITY_HEADLESS |
false |
Browser-login headless mode |
Security and limitations
- Cookies provide access to financial data. Treat them like passwords.
- The server uses unofficial HTML and internal web behavior, not a supported public API.
- Money Forward can change pages, labels, or session behavior without notice.
lastFetchedAtis the display label provided by Money Forward and may omit the year.- Foreign-currency balances can be returned as Money Forward's JPY valuation.
- Only use accounts you own or are authorized to manage.
- Review the data-retention and model-training settings of the MCP host and AI client.
Development
npm install
npm run format
npm run check
npm test
npm run lint
npm run build
npm pack --dry-run
Release
Conventional Commits on main are processed by GitHub Actions and semantic-release to create GitHub and npm releases. Configure new-village/money-forward-mcp-community and .github/workflows/release.yml as npm Trusted Publishers. NPM_TOKEN is not required.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.