Expense Tracker MCP Server

Expense Tracker MCP Server

Enables AI agents to manage personal expenses by providing tools to add, list, edit, summarize, and delete expense records, with MongoDB storage and user authentication.

Category
Visit Server

README

Expense Tracker MCP Server

A Model Context Protocol (MCP) server for managing personal expenses. This server exposes a set of MCP tools that allow AI agents to add, list, edit, summarize, and delete expenses. All data is stored in MongoDB and scoped to authenticated users.


✨ Features

  • šŸ” User Authentication

    • Every request is authenticated using a Bearer Token (API Key).
    • API keys are securely stored as SHA-256 hashes.
  • šŸ’° Expense Management

    • Add new expenses
    • List expenses within a date range
    • Edit existing expenses
    • Delete expenses
  • šŸ“Š Expense Summarization

    • Aggregate expenses by category
    • Filter summaries by date range
    • Optional category filtering
  • šŸ¤– MCP Native

    • Fully compatible with MCP-enabled AI agents.
  • ⚔ Asynchronous & Fast

    • Built using FastMCP and Motor for high-performance asynchronous MongoDB operations.

🧰 Tech Stack

Technology Purpose
Python 3.11+ Programming Language
FastMCP MCP Server Framework
MongoDB Database
Motor Async MongoDB Driver
Uvicorn ASGI Server
python-dotenv Environment Variable Management

šŸ“‹ Prerequisites

Before running the project, ensure you have:

  • Python 3.11+
  • MongoDB (Local or MongoDB Atlas)
  • Git
  • (Optional) uv package manager

šŸš€ Installation

1. Clone the Repository

git clone https://github.com/Vikkaasshh/ExpenseTracker_MCP_Server.git
cd ExpenseTracker_MCP_Server

2. Create Virtual Environment

Linux / macOS

python -m venv venv
source venv/bin/activate

Windows

python -m venv venv
venv\Scripts\activate

3. Install Dependencies

Using uv (Recommended)

pip install uv
uv pip install -e .

Using pip

pip install -e .

4. Configure Environment Variables

Create a .env file in the project root.

MONGODB_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/

Replace the connection string with your MongoDB URI.

Example:

MONGODB_URI=mongodb+srv://admin:password123@cluster0.mongodb.net/

šŸ—„ļø Database Setup

Create a users collection.

Each authenticated user should have a document similar to:

{
  "_id": ObjectId("64b5fdf82bc9d0f4b0f92b72"),
  "api_key_hash": "f6c7cf74e35dca8d2b11f...",
  "is_active": true
}

The api_key_hash must contain the SHA-256 hash of the user's API key.


ā–¶ļø Running the Server

Run locally:

python main.py

The server starts at:

http://0.0.0.0:8000

MCP endpoint:

http://localhost:8000/mcp

šŸ¤– Connecting an MCP Client

Any MCP-compatible client can connect to the server.

Examples:

  • Claude Desktop
  • MCP Inspector
  • Custom MCP Clients

Endpoint

http://localhost:8000/mcp

Authentication Header

Authorization: Bearer <your_api_key>

šŸ› ļø Available MCP Tools

Tool Description Required Parameters
add_expense Add a new expense date, amount, category
list_expenses List expenses start_date, end_date
summarize_expense Summarize expenses by category start_date, end_date
edit_expense Update an expense expense_id + fields
delete_expense Delete an expense expense_id

add_expense

Creates a new expense.

Required Parameters

Parameter Type
date YYYY-MM-DD
amount float
category string

Optional Parameters

  • subcategory
  • note

Example:

{
  "date": "2026-01-10",
  "amount": 199.99,
  "category": "Food",
  "subcategory": "Restaurant",
  "note": "Dinner"
}

list_expenses

Lists expenses between two dates.

Required:

{
  "start_date": "2026-01-01",
  "end_date": "2026-01-31"
}

summarize_expense

Returns grouped expense totals.

Required:

{
  "start_date": "2026-01-01",
  "end_date": "2026-01-31"
}

Optional:

{
  "category": "Food"
}

edit_expense

Update any expense field.

Example:

{
  "expense_id": "687ec8769ef34217",
  "amount": 350,
  "note": "Updated amount"
}

delete_expense

Delete an expense permanently.

{
  "expense_id": "687ec8769ef34217"
}

šŸ“ Project Structure

.
ā”œā”€ā”€ main.py
ā”œā”€ā”€ auth.py
ā”œā”€ā”€ db.py
ā”œā”€ā”€ prompt.py
ā”œā”€ā”€ resources/
│   ā”œā”€ā”€ categories.json
│   └── operation.json
ā”œā”€ā”€ pyproject.toml
ā”œā”€ā”€ uv.lock
└── README.md

Description

File Purpose
main.py FastMCP application
auth.py Authentication
db.py MongoDB connection
prompt.py AI system prompt
resources Static resources
pyproject.toml Project metadata
uv.lock Dependency lock
README.md Documentation

šŸ™ Acknowledgments

Special thanks to:

  • FastMCP for providing an excellent MCP framework.
  • MongoDB for scalable document storage.
  • Motor for asynchronous database operations.
  • Uvicorn for high-performance ASGI serving.

⭐ Support

If you found this project useful:

  • ⭐ Star the repository

Happy Expense Tracking with AI! šŸš€

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured