Lunch Money MCP Server
Click on "Deploy 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., "@Lunch Money MCP Server list my transactions from the last 30 days"
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.
Lunch Money MCP Server (HTTP)
A MCP (HTTP) server providing full integration with the Lunch Money API. This server enables AI assistants to interact with your Lunch Money financial data through a standardized interface.
Note: This is designed to be used as a streamable HTTP server. If you're looking for local MCP support (stdio transport), see akutishevsky/lunchmoney-mcp.
Features
User Management - Access user account details
Categories - Create, update, and organize spending categories
Tags - Manage transaction tags
Transactions - Full CRUD operations on transactions with advanced filtering
Recurring Items - Track and manage recurring expenses
Budgets - Create and monitor budgets by category
Assets - Track manually-managed assets
Related MCP server: Lunch Money MCP Server
Prerequisites
Node.js 18+ (for native fetch support)
A Lunch Money API access token (Get one here)
Installation
Clone or download this repository
Install dependencies:
npm installCopy
.env.exampleto.envand add your API token:
cp .env.example .envEdit .env and add your Lunch Money API token:
LUNCH_MONEY_API_TOKEN=your_api_token_here
PORT=8080Usage
Development Mode
Run the server in development mode with hot reload:
npm run devProduction Mode
Build and run:
npm run build
npm startThe server will start on port 8080 (or the port specified in your .env file).
Testing with FastMCP CLI
You can test the server using the FastMCP development tools:
npx fastmcp dev src/index.tsOr use the MCP Inspector:
npx fastmcp inspect src/index.tsTesting with MCP Test Client
This project includes a test client script that connects to your MCP server and allows you to test tools programmatically.
First, make sure your server is running:
npm run devThen in another terminal, install dependencies (if not already installed) and run the test client:
npm install
npm run test:clientAvailable test client commands:
List all available tools:
npm run test:client -- --listCall a specific tool (defaults to
getUser):npm run test:client -- --tool getUser npm run test:client -- --tool getCategories npm run test:client -- --tool getTransactionsCall a tool with arguments:
npm run test:client -- --tool getTransactions --args '{"start_date":"2024-01-01","end_date":"2024-12-31"}'Show help:
npm run test:client -- --help
Environment Variables:
You can configure the test client using environment variables:
MCP_SERVER_URL- Server URL (default:http://localhost:8080)MCP_ENDPOINT- MCP endpoint path (default:/mcp- FastMCP's httpStream default)
Available Tools
User Management
getUser - Get the current user's account details including email, name, currency preferences, and settings
Categories
getCategories - List all categories including category groups and parent categories
createCategory - Create a new spending or income category
updateCategory - Update an existing category's properties
deleteCategory - Delete a category by ID
Tags
getTags - List all transaction tags
createTag - Create a new tag for categorizing transactions
updateTag - Update an existing tag's name
deleteTag - Delete a tag by ID
Transactions
getTransactions - List transactions with advanced filtering options including:
Date range (start_date, end_date)
Category (category_id)
Tags (tag_id)
Account (account_id)
Status (cleared, uncleared, recurring, recurring_suggested)
Pagination (offset, limit)
createTransaction - Create a new transaction (expense, income, or transfer)
updateTransaction - Update an existing transaction's properties
deleteTransaction - Delete a transaction by ID
bulkUpdateTransactions - Bulk update multiple transactions with the same changes
Recurring Items
getRecurringItems - List all recurring expense and income items
createRecurringItem - Create a new recurring expense or income item
updateRecurringItem - Update an existing recurring item's properties
deleteRecurringItem - Delete a recurring item by ID
Budgets
getBudgets - List all budgets with their category assignments and date ranges
createBudget - Create a new budget for a category with amount and date range
updateBudget - Update an existing budget's amount, category, or date range
deleteBudget - Delete a budget by ID
Assets
getAssets - List all manually-managed assets
createAsset - Create a new manually-managed asset
updateAsset - Update an existing asset's properties including balance and metadata
deleteAsset - Delete an asset by ID
Configuration
Environment Variables
LUNCH_MONEY_API_TOKEN(required) - Your Lunch Money API access tokenPORT(optional) - Server port, defaults to 8080SERVER_API_KEY(optional) - API key for server authentication. If set, all requests must include this key in theAuthorizationheader (format:Bearer <key>or just<key>)
Using with Claude Desktop
Add the following to your Claude Desktop configuration file:
{
"mcpServers": {
"lunch-money": {
"command": "node",
"args": ["/path/to/lunch-money-mcp/dist/index.js"],
"env": {
"LUNCH_MONEY_API_TOKEN": "your_api_token_here"
}
}
}
}Or for development:
{
"mcpServers": {
"lunch-money": {
"command": "npm",
"args": ["run", "dev"],
"cwd": "/path/to/lunch-money-mcp",
"env": {
"LUNCH_MONEY_API_TOKEN": "your_api_token_here"
}
}
}
}Deployment
Deploying to Fly.io
This MCP server can be deployed to Fly.io with API key authentication.
Prerequisites
Install the Fly.io CLI:
curl -L https://fly.io/install.sh | shAuthenticate with Fly.io:
fly auth login
Initial Setup
Launch your app (this will create
fly.tomlif it doesn't exist):fly launch --no-deployDuring setup:
Choose a unique app name (or use the default)
Select your preferred region
Decline adding a database (not needed)
Don't deploy yet (we'll set secrets first)
Set your secrets (API keys):
fly secrets set LUNCH_MONEY_API_TOKEN=your_lunch_money_token fly secrets set SERVER_API_KEY=your_secure_api_key_hereImportant: Generate a strong, random API key for
SERVER_API_KEY. This will be used to authenticate requests to your MCP server.Deploy your application:
fly deployVerify deployment:
fly status
Using Your Deployed Server
Once deployed, your server will be available at https://your-app-name.fly.dev/mcp.
With API Key Authentication:
All requests must include the API key in the Authorization header:
curl -H "Authorization: Bearer your_secure_api_key_here" \
https://your-app-name.fly.dev/mcpHealth Check:
The server includes a health check endpoint using FastMCP's built-in /health endpoint (no authentication required):
curl https://your-app-name.fly.dev/healthManaging Secrets
View secrets:
fly secrets listUpdate a secret:
fly secrets set SERVER_API_KEY=new_keyRemove a secret:
fly secrets unset SERVER_API_KEY
Updating Your Deployment
After making code changes:
fly deployViewing Logs
fly logsAPI Reference
This MCP server integrates with the Lunch Money API v1. All endpoints follow the official API documentation.
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Available Tools
26 toolsbulkUpdateTransactionsC
Bulk update multiple transactions with the same changes (category, tags, notes, status)
Inputs: transaction_ids (required), category_id, tags, notes, +1 more.
createAssetC
Create a new manually-managed asset
Inputs: type_name (required), name (required), balance (required), type_name_override, +3 more.
createBudgetC
Create a new budget for a category with amount and date range
Inputs: amount (required), start_date (required), end_date (required), category_id, +1 more.
createCategoryC
Create a new spending or income category
Inputs: name (required), description, is_income, exclude_budget, +3 more.
createRecurringItemC
Create a new recurring expense or income item
Inputs: amount (required), payee, currency, category_id, +7 more.
createTagC
Create a new tag for categorizing transactions
Inputs: name (required).
createTransactionC
Create a new transaction (expense, income, or transfer)
Inputs: date (required), amount (required), account_id (required), payee, +8 more.
deleteAssetB
Delete an asset by ID
Inputs: id (required).
deleteBudgetC
Delete a budget by ID
Inputs: id (required).
deleteCategoryC
Delete a category by ID
Inputs: id (required).
deleteRecurringItemC
Delete a recurring item by ID
Inputs: id (required).
deleteTagC
Delete a tag by ID
Inputs: id (required).
deleteTransactionC
Delete a transaction by ID
Inputs: id (required).
getAssetsB
List all manually-managed assets
Inputs: no named parameters.
getBudgetsB
List all budgets with their category assignments and date ranges
Inputs: no named parameters.
getCategoriesB
List all categories including category groups and parent categories
Inputs: no named parameters.
getRecurringItemsB
List all recurring expense and income items
Inputs: no named parameters.
getTagsB
List all transaction tags
Inputs: no named parameters.
getTransactionsC
List transactions with advanced filtering options including date range, category, tags, account, and status
Inputs: start_date, end_date, category_id, tag_id, +6 more.
getUserB
Get the current user's account details including email, name, currency preferences, and settings
Inputs: no named parameters.
updateAssetC
Update an existing asset's properties including balance and metadata
Inputs: id (required), type_name, type_name_override, name, +4 more.
updateBudgetC
Update an existing budget's amount, category, or date range
Inputs: id (required), category_id, amount, currency, +2 more.
updateCategoryC
Update an existing category's properties
Inputs: id (required), name, description, is_income, +5 more.
updateRecurringItemC
Update an existing recurring item's properties
Inputs: id (required), payee, amount, currency, +8 more.
updateTagC
Update an existing tag's name
Inputs: id (required), name (required).
updateTransactionC
Update an existing transaction's properties
Inputs: id (required), date, amount, payee, +9 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 26 tools
Every tool has a clearly distinct purpose targeting specific resources (e.g., assets, budgets, categories) and actions (create, get, update, delete), with no overlap or ambiguity. For example, bulkUpdateTransactions handles multiple transactions uniquely, while other tools manage individual entities.
Tool names follow a consistent verb_noun pattern throughout, such as createAsset, getAssets, updateAsset, deleteAsset, with no deviations in style or convention. This predictability makes it easy for agents to understand and select the correct tool.
With 26 tools, the count is borderline high for a personal finance server, potentially feeling heavy but still manageable. It covers a broad domain comprehensively, though it might be overwhelming compared to more focused servers with fewer tools.
The tool set provides complete CRUD/lifecycle coverage for all core entities (assets, budgets, categories, recurring items, tags, transactions, and user details), with no obvious gaps. Each resource has create, get, update, and delete operations, ensuring agents can handle full workflows without dead ends.
Maintenance
Related MCP Connectors
Personal finance for AI agents — onboard, import statements, categorize & budget over MCP.
Read-only finance MCP server. Connects your banks, cards, payment apps, books and payroll into one ledger for your AI. Can't move money. Open source (AGPL-3.0), free during beta.
Query your real net worth, spending, transactions, budgets and portfolio from any MCP client.
MCP server for Financial Modeling Prep API with 250+ financial data tools
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that lets AI assistants interact with your Lunchmoney data, enabling natural language queries about transactions, budgets, and spending patterns.422 npm29MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows AI assistants to interact with Lunch Money accounts, enabling management of transactions, categories, budgets, and other financial data through natural language commands.MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to interact directly with Lunch Money's financial API, allowing users to query transactions, access budget information, and perform financial analysis through natural language.-
- AlicenseAqualityBmaintenanceAn 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.59939 npm113MIT