Skip to main content
Glama
AshC2004

Expense Tracker MCP Server

by AshC2004

Expense Tracker MCP Server

A Model Context Protocol (MCP) server for tracking personal expenses and wallet balance, built with FastMCP and SQLite. Lets Claude Desktop, Cursor, or any MCP client log expenses, summarize spending, and check your balance through natural conversation.

Features

  • Log expenses with date, amount, category, subcategory, and note

  • List expenses within a date range

  • Summarize spending by category over a date range

  • Track and update a wallet balance

  • A predefined category/subcategory taxonomy exposed as an MCP resource

Related MCP server: expense-mcp

Tools

Tool

Description

add_expense(date, amount, category, subcategory, note)

Insert an expense record

list_expenses(start_date, end_date)

List expenses in an inclusive date range

summarize(start_date, end_date, category)

Sum expenses by category over a date range

get_balance()

Read the current wallet balance

set_balance(amount)

Set the wallet balance

All dates use YYYY-MM-DD format and are validated on input.

Resources

  • expense://categories: JSON taxonomy of categories and subcategories (food, transport, housing, utilities, health, education, and more), read fresh from categories.json on every request.

Setup

Requires Python 3.11+ and uv.

uv sync

Claude Desktop config

{
  "mcpServers": {
    "expense-tracker": {
      "command": "/path/to/expense-tracker-mcp-server/run.sh"
    }
  }
}

Replace /path/to/expense-tracker-mcp-server with the absolute path to this repo.

Storage

Data is stored in a local SQLite database (expenses.db, created automatically on first run, gitignored). Override the location with the EXPENSE_TRACKER_DB_PATH environment variable.

Testing

uv run pytest

License

MIT

Available Tools

5 tools
add_expenseC

Add a new expense entry to the database.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
noteNo
amountYes
categoryYes
subcategoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behaviors like side effects, permissions, or constraints. The description only says 'Add a new expense entry' without mentioning whether the operation is immediately persistent, requires authentication, or affects any existing data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it is so minimal that it sacrifices informativeness. It would benefit from being slightly longer to include key parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has a complex input schema (5 parameters) and an output schema exists (but is not shown), the description should explain what the tool returns or confirms. It fails to provide enough context for an agent to confidently use the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, and the description adds no information about parameters. It does not explain the meaning of 'date', 'amount', 'category', or 'subcategory', leaving the agent to infer from names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and the resource ('a new expense entry'), which distinguishes it from sibling tools like list_expenses or summarize. However, it does not specify what fields constitute an expense entry beyond what's in the schema, which is a minor gap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like set_balance or summarize. There is no mention of prerequisites or scenarios where this tool is inappropriate, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_balanceA

Get the current wallet balance in Rs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description indicates a simple read operation. However, it does not disclose any behavioral nuances beyond the obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no unnecessary words, perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and existence of output schema, description is complete enough for this simple retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline score of 4 applies per rules. Description adds no param info since none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Get' and resource 'current wallet balance in Rs', distinguishing it from sibling tools like add_expense or set_balance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage is clear for reading balance, but no explicit guidance on when to use vs alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_expensesA

List expense entries within an inclusive date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It states the tool lists expenses with an inclusive date range but omits common behavioral details such as read-only nature, sorting, pagination, or limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is efficiently front-loaded and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two required params, no nested objects, output schema exists), the description covers the core functionality. Missing only the date format, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds 'inclusive date range', clarifying that both start and end dates filter results. However, it does not specify the expected date format (e.g., YYYY-MM-DD) or whether inclusive applies to both dates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb 'list', resource 'expense entries', and scope 'within an inclusive date range'. It clearly distinguishes from siblings like add_expense (adds) and summarize (aggregates).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives is provided. There is no mention of preferred scenarios or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_balanceB

Set the wallet balance to a specific amount in Rs.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It says 'Set the wallet balance' implying a write operation, but fails to disclose side effects (e.g., overwrites previous balance), required permissions, or whether the operation is reversible. The behavioral profile is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded with the verb and object. Every word is necessary, but it could include additional usage guidance without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one parameter, no annotations), the description barely covers what the tool does. It lacks details on return values (though output schema exists), error conditions, and prerequisites. It is minimally viable but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description adds value by indicating that 'amount' is the new balance value denominated in Rs. However, it does not specify constraints like non-negativity or numeric format. For a single parameter, this is adequate but not thorough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set') and the resource ('the wallet balance'), and specifies the unit ('in Rs.'). It distinctly differentiates from sibling tools like get_balance (read) and add_expense (adds expenses), as there is no other write-to-balance tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention that set_balance overwrites the balance, nor does it contrast with get_balance (reading) or add_expense (adding expenses). The agent must infer usage from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

summarizeB

Summarize expenses by category within an inclusive date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
end_dateYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; the description only states it summarizes by category and date range, lacking details on return format, aggregation method (sum, count?), or behavior for missing data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key action and scope, no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema existing, the description omits details like date format, category validation, aggregation type, and edge cases (e.g., no expenses in range), making it incomplete for confident use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds minimal meaning: 'inclusive date range' and 'by category' imply filtering, but does not explain date format, valid category values, or default behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'summarize', resource 'expenses by category', and scope 'inclusive date range', distinguishing it from sibling tools like add_expense and list_expenses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for summarization but provides no explicit guidance on when to use vs. alternatives like list_expenses or get_balance, nor exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: adding expenses, listing them, summarizing by category, and managing the wallet balance. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (add_expense, list_expenses, summarize, get_balance, set_balance), making them predictable and easy to understand.

Tool Count5/5

The set of 5 tools is well-scoped for an expense tracker, covering core expense management and balance tracking without unnecessary duplication or bloat.

Completeness4/5

The tools cover the core workflows (add, list, summarize expenses; get/set balance). Missing update/delete for expenses, but the domain is largely covered for typical use cases.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to track personal expenses through natural language interactions with comprehensive category support and financial summaries. Provides both local and remote MCP server options with SQLite storage for fast expense management operations.
  • A
    license
    A
    quality
    D
    maintenance
    Personal expense tracker MCP server that enables tracking expenses, income, budgets, and savings goals through natural language.
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to track expenses by adding, listing, and summarizing them with category support through natural language.
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables personal finance management through natural language: log expenses, snap receipt photos, and import bank statements. Computes budgets, trends, and net worth in any currency, with data persisted and accessible via MCP.
    1
    MIT

Latest Blog Posts

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/AshC2004/expense-tracker-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server