Expense Tracker MCP
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., "@Expense Tracker MCPLog a $12 coffee purchase from today."
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.
Expense Tracker MCP
A personal expense tracking server built with FastMCP that exposes tools and resources via the Model Context Protocol (MCP). Connect it to any MCP-compatible AI client (Claude Desktop, Cursor, etc.) to log, query, and summarize your spending through natural language.
Features
Add expenses — record date, amount, category, optional subcategory, and a free-text note
List expenses — retrieve all entries within any date range
Summarize spending — aggregate totals by category, optionally filtered to a single category
Category reference — a live-reloadable resource (
expense://categories) exposes all valid categories and subcategories so the AI always suggests valid values
Related MCP server: Trackor
Tech Stack
Component | Technology |
MCP framework | FastMCP ≥ 3.1 |
Database | SQLite (file-based, zero config) |
Runtime | Python ≥ 3.12 |
Project Structure
expense-tracker-mcp/
├── main.py # MCP server — tools & resource definitions
├── categories.json # Category / subcategory taxonomy (editable at runtime)
├── expenses.db # SQLite database (auto-created on first run)
├── pyproject.toml # Project metadata & dependencies
└── README.mdGetting Started
1. Clone and install dependencies
git clone <repo-url>
cd expense-tracker-mcp
uv sync2. Run the server
uv run python main.pyThe server starts and listens for MCP connections. The expenses.db SQLite file is created automatically next to main.py on the first run.
3. Connect to an MCP client
Claude Desktop
Add the following block to your claude_desktop_config.json:
{
"mcpServers": {
"expense-tracker": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/expense-tracker-mcp", "python", "main.py"]
}
}
}Cursor / other clients
Follow your client's MCP configuration guide, pointing the command at the same Python executable and main.py.
MCP Tools
add_expense
Add a new expense entry.
Parameter | Type | Required | Description |
|
| Yes | ISO 8601 date, e.g. |
|
| Yes | Expense amount (positive value) |
|
| Yes | Top-level category (see categories below) |
|
| No | Subcategory within the category |
|
| No | Free-text description |
Returns: { "status": "ok", "id": <inserted row id> }
list_expenses
Retrieve all expenses within a date range (inclusive).
Parameter | Type | Required | Description |
|
| Yes | ISO 8601 start date |
|
| Yes | ISO 8601 end date |
Returns: Array of expense objects with fields id, date, amount, category, subcategory, note.
summarize
Aggregate total spending by category within a date range.
Parameter | Type | Required | Description |
|
| Yes | ISO 8601 start date |
|
| Yes | ISO 8601 end date |
|
| No | Filter to a single category |
Returns: Array of { "category": "...", "total_amount": <number> } objects, ordered alphabetically.
MCP Resource
expense://categories
Returns the full categories.json file as application/json. The file is read from disk on every request, so you can add or rename categories without restarting the server. The AI uses this resource to suggest valid category and subcategory values when logging expenses.
Categories
The taxonomy ships with 18 top-level categories:
Category | Example Subcategories |
| groceries, dining_out, delivery_fees |
| fuel, public_transport, cab_ride_hailing |
| rent, repairs_service, furnishing |
| electricity, internet_broadband, mobile_phone |
| medicines, doctor_consultation, fitness_gym |
| books, courses, online_subscriptions |
| school_fees, daycare, toys_games |
| movies_events, streaming_subscriptions, games_apps |
| clothing, electronics_gadgets, home_decor |
| saas_tools, cloud_ai, music_video |
| salon_spa, grooming, cosmetics |
| gifts_personal, charity_donation, festivals |
| bank_charges, interest, brokerage |
| hosting_domains, marketing_ads, contractor_payments |
| flights, hotels, visa_passport |
| household_supplies, cleaning_supplies, small_repairs |
| food, vet, grooming |
| income_tax, gst, filing_fees |
Every category also accepts "other" as a catch-all subcategory. Edit categories.json freely to add your own.
Example Prompts
Once connected to an AI client:
Add an expense: ₹450 on groceries todayList all my expenses for February 2026Summarize my spending between 2026-01-01 and 2026-03-09How much did I spend on food and transport this month?Development
Inspect with MCP Inspector
FastMCP 3.x ships with an interactive inspector. Launch it with:
uv run fastmcp dev inspector main.pyThis opens the MCP Inspector UI in your browser so you can call tools and browse resources interactively without a full AI client.
Reset the database
The schema is initialised automatically via init_db() on first run. To wipe all data:
rm expenses.dbMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
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/Vinzette/expense-tracker-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server