Skip to main content
Glama
NeelContractor

Expense Tracker MCP Server

Expense Tracker MCP Server

A simple Expense Tracker MCP server built with FastMCP and SQLite.

Features

  • Add expenses

  • List expenses by date range

  • Summarize expenses by category

  • Expose expense categories as an MCP resource

  • Compatible with Claude Desktop and MCP Inspector

Related MCP server: Expense Tracker MCP Server

Tech Stack

  • Python 3.14+

  • FastMCP 3.4.0

  • SQLite

Installation

Clone the repository and install dependencies:

uv sync

or

uv add fastmcp

Project Structure

.
├── main.py
├── expenses.db
├── categories.json
├── pyproject.toml
├── uv.lock
└── README.md

Available Tools

add_expense

Add a new expense record.

Parameters:

  • date

  • amount

  • category

  • subcategory (optional)

  • note (optional)

Example:

{
  "date": "2026-06-01",
  "amount": 600,
  "category": "transport",
  "subcategory": "cab_ride_hailing",
  "note": "Cab ride to Delhi"
}

list_expenses

List expenses within a date range.

Parameters:

  • start_date

  • end_date

summarize

Summarize expenses by category.

Parameters:

  • start_date

  • end_date

  • category (optional)

Available Resources

expense://categories

Returns the contents of categories.json.

Example categories:

  • food

  • transport

  • housing

  • utilities

  • health

  • education

  • entertainment

  • shopping

  • travel

  • investments

  • and more

Running the MCP Server

Start the server:

uv run fastmcp run main.py

MCP Inspector

Launch the MCP Inspector for local testing:

uv run fastmcp dev inspector main.py

Claude Desktop Integration

Install the server into Claude Desktop:

uv run fastmcp install claude-desktop main.py

Restart Claude Desktop after installation.

Example Prompts

Add an expense:

Add an expense of ₹600 for a cab ride to Delhi last Sunday.

List expenses:

Show all expenses between 2026-06-01 and 2026-06-30.

Summarize expenses:

Summarize my expenses for June 2026.

Available Tools

3 tools
add_expenseC

Add a new expense entry to the database.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
amountYes
categoryYes
subcategoryNo
noteNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only implies a write operation ('add') but provides no details on side effects, permissions, idempotency, or return behavior.

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 that directly states the purpose, but it is overly brief and lacks necessary detail. It is concise but not optimally informative.

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

Completeness1/5

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

Given the tool's complexity (5 parameters, 3 required, no output schema), the description is severely incomplete. It fails to explain parameter semantics, return values, or behavioral constraints, making it insufficient for reliable agent usage.

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 tool description adds no meaning to the parameters. Agents receive no guidance on valid values for date, amount, category, or optional fields.

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 identifies the action ('Add') and object ('expense entry'), making the purpose explicit. However, it does not differentiate from sibling tools like list_expenses or summarize, missing an opportunity to clarify its specific role.

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?

There is no guidance on when to use this tool versus alternatives, nor any conditions or prerequisites. The description merely states the action without context.

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

list_expensesB

List expense entries within an inclusive date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes
end_dateYes

TDQS

B3.1/5.0
Behavior2/5

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

The description simply states the listing action without disclosing behavioral traits such as read-only nature, pagination, rate limits, or authentication requirements. Since no annotations are provided, the description carries the full burden and is insufficient.

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?

A single, clear sentence with no unnecessary words or repetition. It is as concise as possible while conveying the core purpose.

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?

The description is minimal and does not address return value shape, ordering, pagination, or error cases. Given low complexity and no output schema, more context would be needed for an agent to use the tool correctly.

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?

Schema coverage is 0%, and the description does not add details about parameter format, types, or constraints beyond implying the date range. The phrase 'inclusive date range' gives some context but does not compensate for the lack of schema descriptions.

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 states 'List expense entries within an inclusive date range', with a clear verb ('List') and resource ('expense entries'), and a specific constraint (date range). It distinguishes well from siblings 'add_expense' and 'summarize'.

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. The description lacks any explicit when-to-use or when-not-to-use statements, and does not mention sibling tools.

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
start_dateYes
end_dateYes
categoryNo

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 must convey behavioral traits. It only states the function, not whether the operation is safe (read-only), requires authentication, or has rate limits. The 'summarize' verb implies reading, but this is implicit.

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, front-loaded sentence with no redundant words. It efficiently conveys the core functionality.

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 no output schema and three parameters, the description lacks details on output format, aggregation method, handling of multiple categories, and edge cases like empty ranges. It is minimally adequate but incomplete.

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 description coverage is 0%, so the description adds partial meaning. 'Inclusive date range' clarifies that start_date and end_date are inclusive boundaries. 'By category' explains the category parameter's role. However, no format or defaults beyond the schema are provided.

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 tool summarizes expenses by category within a date range, using a specific verb and resource. It distinguishes from sibling tools 'add_expense' and 'list_expenses' by implying aggregation rather than listing or adding.

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 the sibling tools. There is no mention of context or alternatives, leaving the agent to infer usage solely from the tool name and description.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedadd_expense
    • First observedlist_expenses
    • First observedsummarize

TDQS

B3.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: adding, listing, or summarizing expenses. No overlap or ambiguity.

Naming Consistency4/5

Mostly consistent verb_noun pattern (add_expense, list_expenses), though 'summarize' lacks a direct object, which is a minor deviation.

Tool Count4/5

Three tools is a reasonable scope for a basic expense tracker, covering core operations without being excessive.

Completeness3/5

Coverage is adequate for adding, listing, and summarizing expenses, but lacks update and delete functionality, leaving notable gaps in lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues

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 tracking of personal expenses with tools to add, list, update, delete, and summarize expenses by category.
    -
  • 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
    C
    quality
    C
    maintenance
    Enables tracking, categorizing, and summarizing personal and business expenses with support for date range queries and category grouping.
    3
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Stores and manages expenses in SQLite. Enables adding, removing, and listing expenses with filtering, and exposes expense categories via a resource.
    3
    -

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

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