dough-mcp
This MCP server connects an AI assistant to a Dough personal finance instance, enabling read queries and optional write operations on budgets, transactions, accounts, and more.
Read tools (any API key):
dough_summary: Compact snapshot of total balance, monthly income/spending, budgeted amount, and Ready to Assign funds.dough_accounts: List accounts with balances (optionally include closed accounts).dough_transactions: Browse transactions (newest first, up to 500) with filters for month, account, category, and keyword search.dough_budget: Full monthly budget — income, total budgeted, Ready to Assign, age of money, and per-category budgeted/activity/available.dough_net_worth: Current net worth by account type (checking, savings, investments, debts) plus historical snapshots.dough_bills: Recurring bills with amounts and due days.dough_subscriptions: Subscriptions with amounts and due days.dough_savings_goals: Active savings goals with targets and saved amounts.
Write tools (require write-scoped API key):
dough_auto_assign_preview: Preview auto-assign funding for a given month.dough_auto_assign_apply: Apply auto-assign using a strategy (underfunded, last assigned, or last spent).dough_budget_assign: Set a category's budgeted amount for a specific month.dough_update_transaction: Edit an existing transaction's fields.dough_delete_transaction: Delete a transaction and reverse its balance effect.
Security: The API key stays on the user's machine. A read-only key is safe for query-only use; write tools return a 403 error without write scope.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dough-mcpshow my current balance and recent transactions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
dough-mcp
An MCP (Model Context Protocol) server for Dough, the personal
finance app. It is a thin client of Dough's /api/v1 API: it holds no database access and no logic
of its own, it just exposes each endpoint as an MCP tool so an assistant (Claude Code, Claude
Desktop) can read your finances and, with a write-scoped key, do the budgeting and fix transactions.
Dough is a standalone self-hosted budget app with its own ledger (bank-synced or manual). It is not a YNAB frontend: Dough's data is corrected through these tools or Dough's own UI, never in YNAB.
How it fits together
dough (web app) ── /api/v1/* (API-key auth)
▲ HTTPS + Bearer key
dough-mcp (this repo) ── stdio ── Claude Code / Claude DesktopThe server never sees your database. It calls the Dough HTTP API with an API key you supply through the environment, so the key stays on your machine and nothing is exposed on the internet.
Related MCP server: LunchMoney MCP Server
Tools
dough_summary- total balance and this month's income, spending, budgeted and Ready to Assigndough_accounts- all accounts with balancesdough_transactions- transactions newest first, with month / account / category / search filtersdough_budget- the month's budget, Ready to Assign, age of money and per-category availabledough_net_worth- current net worth by kind plus snapshot historydough_bills- recurring billsdough_subscriptions- subscriptionsdough_savings_goals- active goals with target and derived saved amount
Write tools (require a key minted with --scopes read,write):
dough_auto_assign_preview- preview target funding for a month (read-only)dough_auto_assign_apply- apply auto-assign for a month (underfunded / last_assigned / last_spent)dough_budget_assign- set one category's budgeted amount for a monthdough_update_transaction- edit one transaction (partial: only passed fields change); setting categoryInternal transferwith a counterpart account fixes a misrouted transfer and maintains the opposite legdough_delete_transaction- delete one transaction and reverse its balance effect
The read tools work with any key. The write tools return 403 unless the configured DOUGH_API_KEY
has the write scope, so a read-only key is safe to leave configured for query-only use.
Install
git clone git@github.com:rollecode/dough-mcp.git
cd dough-mcp
npm install && npm run build # dist/ is committed; rebuild only when changing src/Get an API key
In the Dough repo, on the host that owns the database:
npx tsx scripts/create-api-key.ts --name "dough-mcp" --scopes readThe key is printed once. See Dough's docs/public-api.md for details.
Configuration
The server reads two environment variables:
DOUGH_API_URL- base URL of your Dough instance, e.g.https://dough.example.comDOUGH_API_KEY- the API key you minted
Claude Code
claude mcp add dough \
--env DOUGH_API_URL=https://dough.example.com \
--env DOUGH_API_KEY=dough_your_key_here \
-- node /absolute/path/to/dough-mcp/dist/index.jsOr add it to a project .mcp.json / your user settings:
{
"mcpServers": {
"dough": {
"command": "node",
"args": ["/absolute/path/to/dough-mcp/dist/index.js"],
"env": {
"DOUGH_API_URL": "https://dough.example.com",
"DOUGH_API_KEY": "dough_your_key_here"
}
}
}
}Claude Desktop
Add the same block to mcpServers in claude_desktop_config.json, then restart Claude Desktop.
Development
npm run build # compile TypeScript to dist/
npm start # run the server (expects the two env vars)Security
The key grants read access to your financial data. Keep it in the client config's
env, never in source or a committed file.Revoke a key from the Dough host:
sqlite3 data/dough.db "UPDATE api_keys SET revoked_at = datetime('now') WHERE name = 'dough-mcp';"
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityFmaintenanceAn MCP server that provides access to personal financial data from Monarch Money, allowing users to retrieve account information, transactions, budgets, goals, and net worth through natural language queries.Last updated16
- AlicenseAqualityAmaintenanceAn MCP server implementation that provides programmatic access to personal finance data through LunchMoney's API, enabling AI assistants to manage transactions, budgets, categories, and assets.Last updated4137685MIT
- Alicense-qualityCmaintenanceMCP server for accessing and managing Banktivity personal finance data, enabling account, transaction, and budget operations through natural language.Last updated3MIT
- Alicense-qualityDmaintenanceRead-only MCP server for accessing Wallet by BudgetBakers financial data, allowing users to query accounts, transactions, categories, budgets, and more via natural language.Last updatedMIT
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
GibsonAI MCP server: manage your databases with natural language
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/rollecode/dough-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server