LunchMoney MCP Server
Read and edit your Lunch Money budget: transactions, categories, budgets, accounts and net worth history
Read and update a self-hosted Edi Life OS dashboard: goals, tasks, habits, expenses and notes
Official · Edris Ranjbar JavaScript Local · stdio ProductivityFinance and payments
34 popularity score ★ 115 ↓ 43/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs LIFEOS_BASE_URL, LIFEOS_API_TOKEN. Replace each <NAME> with your value.
claude mcp add lifeos -e LIFEOS_BASE_URL=<LIFEOS_BASE_URL> -e LIFEOS_API_TOKEN=<LIFEOS_API_TOKEN> -- npx -y @edicodes/lifeos-mcp{
"mcpServers": {
"lifeos": {
"command": "npx",
"args": [
"-y",
"@edicodes/lifeos-mcp"
],
"env": {
"LIFEOS_BASE_URL": "<LIFEOS_BASE_URL>",
"LIFEOS_API_TOKEN": "<LIFEOS_API_TOKEN>"
}
}
}
}{
"mcpServers": {
"lifeos": {
"command": "npx",
"args": [
"-y",
"@edicodes/lifeos-mcp"
],
"env": {
"LIFEOS_BASE_URL": "<LIFEOS_BASE_URL>",
"LIFEOS_API_TOKEN": "<LIFEOS_API_TOKEN>"
}
}
}
}{
"servers": {
"lifeos": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@edicodes/lifeos-mcp"
],
"env": {
"LIFEOS_BASE_URL": "<LIFEOS_BASE_URL>",
"LIFEOS_API_TOKEN": "<LIFEOS_API_TOKEN>"
}
}
}
}[mcp_servers.lifeos]
command = "npx"
args = ["-y", "@edicodes/lifeos-mcp"]
[mcp_servers.lifeos.env]
LIFEOS_BASE_URL = "<LIFEOS_BASE_URL>"
LIFEOS_API_TOKEN = "<LIFEOS_API_TOKEN>"gemini mcp add --scope user -e LIFEOS_BASE_URL=<LIFEOS_BASE_URL> -e LIFEOS_API_TOKEN=<LIFEOS_API_TOKEN> lifeos npx -- -y @edicodes/lifeos-mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs LIFEOS_BASE_URL, LIFEOS_API_TOKEN. Replace each <NAME> with your value.
git clone https://github.com/edrisranjbar/lifeos.git
cd lifeos/mcp
npm ciclaude mcp add lifeos -e LIFEOS_BASE_URL=<LIFEOS_BASE_URL> -e LIFEOS_API_TOKEN=<LIFEOS_API_TOKEN> -- node '<ABSOLUTE_PATH_TO_CLONE>/mcp/src/index.js'{
"mcpServers": {
"lifeos": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/mcp/src/index.js"
],
"env": {
"LIFEOS_BASE_URL": "<LIFEOS_BASE_URL>",
"LIFEOS_API_TOKEN": "<LIFEOS_API_TOKEN>"
}
}
}
}{
"mcpServers": {
"lifeos": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/mcp/src/index.js"
],
"env": {
"LIFEOS_BASE_URL": "<LIFEOS_BASE_URL>",
"LIFEOS_API_TOKEN": "<LIFEOS_API_TOKEN>"
}
}
}
}{
"servers": {
"lifeos": {
"type": "stdio",
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/mcp/src/index.js"
],
"env": {
"LIFEOS_BASE_URL": "<LIFEOS_BASE_URL>",
"LIFEOS_API_TOKEN": "<LIFEOS_API_TOKEN>"
}
}
}
}[mcp_servers.lifeos]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/mcp/src/index.js"]
[mcp_servers.lifeos.env]
LIFEOS_BASE_URL = "<LIFEOS_BASE_URL>"
LIFEOS_API_TOKEN = "<LIFEOS_API_TOKEN>"gemini mcp add --scope user -e LIFEOS_BASE_URL=<LIFEOS_BASE_URL> -e LIFEOS_API_TOKEN=<LIFEOS_API_TOKEN> lifeos node -- '<ABSOLUTE_PATH_TO_CLONE>/mcp/src/index.js'LIFEOS_BASE_URL |
Required: Base address of your LifeOS app, such as https://lifeos.example.com; HTTP only for localhost. |
|---|---|
LIFEOS_API_TOKEN |
Required: The same API token set in the app's config, at least 32 characters. |
LIFEOS_MCP_TIMEOUT_MS |
Optional: Request timeout in milliseconds, 100 to 120000, default 10000. |
Edi Life OS is a self-hosted PHP and MySQL dashboard that keeps habits, SMART goals, Kanban tasks, a Pomodoro timer, a finance ledger and notes in one place. Its maker ships a small Node.js program alongside it, published on npm as @edicodes/lifeos-mcp, that gives an MCP client access to that dashboard. It does not open the database: every call goes to the app's own /api/v1 HTTP API with a bearer token.
Version 2.0.0 has 15 tools. All reading goes through one tool, lifeos_query, whose type argument picks the dashboard, goals, tasks, habits, today's habits, a finance summary, expenses, incomes or notes. The other 14 tools each make one change: create, edit or delete goals, tasks and notes, tick or untick a habit, log an expense or set income. Keeping writes as separate tools means a client asks for approval on each one, and the deletes are flagged as destructive. Version 2.0.0 replaced the twelve separate read tools of 1.x (lifeos_dashboard, lifeos_list_goals and the rest), so clients that call those names directly have to be updated.
The request timeout is 10 seconds by default; LIFEOS_MCP_TIMEOUT_MS accepts values from 100 to 120000 milliseconds, a range given in the program's --help text (mcp/src/index.js) but not in the README.
| Runtime | Node.js 22+ |
|---|
A running Edi Life OS install (PHP 8.1+ with pdo_mysql and mbstring, MySQL 8+ or MariaDB 10.4+, via Docker Compose, shared hosting or PHP's built-in server) with an api_token of at least 32 characters set in config.php or LIFEOS_API_TOKEN. Node.js 22.9 or later (24 recommended) for the MCP server. A remote LifeOS host must be served over verified HTTPS.
Runs over stdio only; there is no hosted MCP endpoint, and /api/v1 is not an MCP URL. The API token acts for one account (api_user_id, default 1) and has no scopes; the app has no per-user tokens or rate limiting. Finance amounts are in Toman and habit dates default to today in Asia/Tehran. Secret notes are left out unless include_secret is passed and the server allows it. Plain HTTP is accepted only for localhost; base URLs with credentials, query strings or subpaths are rejected. A timeout can occur after a write has been saved, so its docs advise checking state before retrying a create or expense call. Open browser tabs need a reload to show changes.
Suits someone who already runs Edi Life OS, or is willing to host it, and wants an assistant to log habits and expenses, plan goals and manage tasks in it. It is of no use without that app: it does not connect to other to-do, habit or budgeting services. Because the single token can write and delete across goals, tasks and notes for one account, pick a client that asks before each write. Those who want a hosted service or a different currency and time zone for finance and habits should look elsewhere.
lifeos_querylifeos_create_goallifeos_update_goallifeos_delete_goallifeos_create_tasklifeos_update_tasklifeos_complete_tasklifeos_delete_tasklifeos_complete_habitlifeos_uncomplete_habitlifeos_log_expenselifeos_set_incomelifeos_create_notelifeos_update_notelifeos_delete_note