Skip to main content
Glama
MOKSH0077

Local MCP Server Expense Tracker

by MOKSH0077

Local MCP Server Expense Tracker

A lightweight, local Model Context Protocol (MCP) server built with FastMCP and SQLite to manage expenses. This server enables MCP-compatible clients (like Claude Desktop) to add, list, edit, and delete expenses directly from chat using a local database.

Features

  • SQLite Database: Self-contained database (Expense.db) created dynamically in the same directory.

  • Full CRUD operations:

    • add_expense: Add a new expense (amount, category, date, description).

    • list_expenses: Fetch all expenses stored in the database.

    • edit_expense: Modify an existing expense record by ID.

    • delete_expense: Permanently delete an expense record by ID.

Related MCP server: local-expense-tracker

Prerequisites

  • Python 3.10+

  • uv (recommended Python package installer/runner)

Installation & Running

1. Run in Development Mode (Inspector)

To run the server and inspect/test the tools using the FastMCP web inspector:

uv run fastmcp dev inspector expense_tracker.py

2. Run the MCP Server

To start the server directly:

uv run fastmcp run expense_tracker.py

3. Install in Claude Desktop

To automatically register the server with your local Claude Desktop configuration:

uv run fastmcp install claude-desktop expense_tracker.py

4. Windows Auto-Sync & Path Fix (Optional)

If you are using the Microsoft Store version of Claude Desktop on Windows, the app is sandboxed and might fail to find uv in its PATH or fail to load the standard configuration.

You can run the included PowerShell script to fix the paths and sync configuration:

.\sync_mcp.ps1

This script:

  • Resolves the absolute path of uv.exe.

  • Syncs the configurations to Claude's sandboxed local packages directories.

  • Restarts Claude Desktop automatically.

Database Schema

The SQLite database contains a table named expenses with the following schema:

  • id: INTEGER (Primary Key, Auto-increment)

  • amount: REAL (Not Null)

  • category: TEXT (Not Null)

  • date: DATE (Not Null)

  • description: TEXT (Optional)

License

MIT License

Available Tools

4 tools
add_expenseC

Add expense to database

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
amountYes
categoryYes
descriptionYes

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 should disclose behavioral traits like idempotency, return value, or side effects. It only states the basic action, leaving the agent uninformed about potential issues like duplicate handling or required permissions.

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 extremely concise, consisting of a single sentence. While front-loaded, it sacrifices necessary detail for brevity.

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 the tool has four required parameters, no schema descriptions, and no annotations, the description is too minimal to be considered contextually complete. It does not mention the output schema or provide any usage context.

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?

Schema description coverage is 0%, yet the description adds no explanation for any of the four required parameters (date, amount, category, description). The agent gets no help with format, constraints, or expected values beyond the plain schema.

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 verb 'add' and the resource 'expense', which matches the tool name and distinguishes it from sibling tools (delete, edit, list). However, it adds no additional specificity about what adding an expense entails.

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, nor any prerequisites or caveats. The description simply repeats the tool's function.

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

delete_expenseC

Delete expense from database

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided; description only states deletion without disclosing irreversibility, permissions, or side effects. Lacks essential behavioral traits for a destructive operation.

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?

Five words, zero waste. Every word is functional and directly conveys the core action.

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?

With no parameter descriptions and no behavioral context, the description is insufficient for a tool with one required parameter and an output schema. Does not explain return values or effects.

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?

Schema description coverage is 0%, and the description adds no meaning to the 'id' parameter. Does not explain what the ID represents or constraints.

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 'delete' and the resource 'expense', distinguishing it from sibling tools (add, edit, list). No ambiguity.

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. Implicit from operation but no explicit context or exclusions.

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

edit_expenseC

Edit expense in database

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dateYes
amountYes
categoryYes
descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only says 'edit' implying mutation, but lacks details on idempotency, error states, or whether partial updates are allowed.

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

Conciseness2/5

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

Single sentence is excessively brief, providing minimal information. While the tool name implies edit, the description does not earn its place by adding value beyond the name.

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?

With five required parameters, no parameter descriptions, no behavioral details, and an unprovided output schema, the description is grossly incomplete for an edit operation. Missing critical information on what fields can be changed and response behavior.

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?

Schema has 0% description coverage and no parameter descriptions in the schema. The tool description does not add any meaning to the five required parameters (id, date, amount, category, description), leaving their semantics entirely to the parameter names.

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?

Description states 'Edit expense in database', clearly indicating a modification operation on an expense resource. It distinguishes from sibling tools add_expense, delete_expense, and list_expenses, though it doesn't specify that it updates an existing expense by ID.

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 vs alternatives. Missing context on prerequisites, required authorization, or edge cases like non-existent IDs.

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

list_expensesA

Get all expenses from database

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

The description indicates a read operation, which is consistent with its purpose. Without annotations, it doesn't add much beyond the name, but given zero parameters, the behavior is simple. It doesn't disclose any potential performance or data volume issues.

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 extremely concise—one short sentence that accurately describes the function. No unnecessary words.

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?

For a straightforward list operation with zero parameters and an output schema, the description covers the core functionality. It could mention that it returns a list, but 'get all expenses' implies that.

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 input schema has no parameters, and the description does not add any parameter-specific information, which is acceptable since none exist.

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 uses a specific verb ('Get') and resource ('expenses'), and the sibling tools (add, delete, edit) make it clear this is a read-only listing.

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?

The description provides no context for when to use this tool versus its siblings, like filtering or searching. Implicitly it's for listing all, but no explicit guidelines.

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. 4 tool updatesv0.1.0
    • First observedadd_expense
    • First observeddelete_expense
    • First observededit_expense
    • First observedlist_expenses

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a distinct operation (add, delete, edit, list) with no overlap, making it easy for an agent to select the correct one.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, which is predictable and readable.

Tool Count5/5

Four tools cover the core CRUD operations for an expense tracker; the count is appropriate and not excessive.

Completeness4/5

The set provides essential create, read (list), update, and delete operations, but lacks a single-expense retrieval tool, which is a minor gap.

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
    A local MCP server for tracking personal expenses using SQLite, enabling users to add, list, and summarize expenses via natural language.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    A simple MCP server for tracking expenses in a local SQLite database, enabling add, read, update, delete, and summarization of expenses with predefined categories.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    A lightweight local MCP server for tracking personal or small-team expenses. It lets you add expense entries, list transactions within a date range, and generate simple summaries by category — all backed by a local SQLite database.
    -

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/MOKSH0077/Local-MCP-Server-Expense-Tracker'

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