Skip to main content
Glama
ID45

Finance Tracker MCP Server

by ID45
README.md
# Finance Tracker MCP Server

AI-powered personal finance analysis through Claude AI using the Model Context Protocol (MCP).

![Finance Tracker Demo](screenshot.png)

## What This Does

This MCP server connects Claude AI to financial transaction data, enabling natural language queries about your finances:

- "Show me my spending this month"
- "Find all my subscriptions"
- "What were my top 10 expenses?"
- "Show spending trends for the last 3 months"
- "Search for all Starbucks transactions"
- "Check my budget: Dining $500, Shopping $300"

## Features

- **6 Financial Analysis Tools**
  - Monthly spending summaries
  - Subscription detection (recurring charges)
  - Budget tracking & alerts
  - Spending trend analysis
  - Top expenses ranking
  - Transaction search

- **Plaid Integration**
  - Connect to 10,000+ banks (sandbox mode for testing)
  - Real-time transaction data (when connected to real accounts)
  - Secure API access

- **Privacy First**
  - All data stays local on your machine
  - No external data storage
  - Encrypted API connections

## Quick Start

### Prerequisites

- Python 3.9 or higher
- Claude Desktop app
- Plaid account (free at https://dashboard.plaid.com)

### Installation

1. **Clone the repository**
```bash
   git clone https://github.com/yourusername/finance-plaid-mcp.git
   cd finance-plaid-mcp
```

2. **Create virtual environment**
```bash
   python -m venv venv
   
   # Activate it:
   # Windows:
   venv\Scripts\activate
   # Mac/Linux:
   source venv/bin/activate
```

3. **Install dependencies**
```bash
   pip install -r requirements.txt
```

4. **Set up Plaid API keys**
   
   Copy `.env.example` to `.env` and add your Plaid keys from https://dashboard.plaid.com
   
```bash
   PLAID_CLIENT_ID=your_client_id_here
   PLAID_SECRET=your_sandbox_secret_here
   PLAID_ENV=sandbox
   DATA_DIR=./data
```

5. **Generate sample data** (for testing)
```bash
   python generate_sample_data.py
```

6. **Configure Claude Desktop**
   
   Add this to your Claude Desktop config file:
   
   **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
   
   **Mac:** `~/Library/Application Support/Claude/claude_desktop_config.json`
   
```json
   {
     "mcpServers": {
       "finance-tracker": {
         "command": "python",
         "args": [
           "/FULL/PATH/TO/finance-plaid-mcp/src/server.py"
         ]
       }
     }
   }
```
   
   **Important:** Use the full absolute path to your project!

7. **Restart Claude Desktop**

8. **Test it!**
   
   In Claude, ask:
"Find all my subscriptions"

## šŸ“ Project Structure
finance-plaid-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ server.py          # MCP server (main entry point)
│   ā”œā”€ā”€ plaid_client.py    # Plaid API integration
│   ā”œā”€ā”€ analyzer.py        # Transaction analysis logic
│   └── config.py          # Configuration & environment variables
ā”œā”€ā”€ data/
│   └── sample_transactions.json  # Generated test data
ā”œā”€ā”€ screenshot.png         # Demo screenshot
ā”œā”€ā”€ .env                   # Your API keys (NOT committed to git)
ā”œā”€ā”€ .env.example           # Template for API keys
ā”œā”€ā”€ .gitignore            # Prevents committing secrets
ā”œā”€ā”€ requirements.txt       # Python dependencies
└── README.md             # This file

## šŸ”§ Available Tools

Claude can call these tools when analyzing your finances:

| Tool | Description |
|------|-------------|
| `monthly_summary` | Get spending/income summary for any month |
| `find_subscriptions` | Detect recurring charges (Netflix, Spotify, etc.) |
| `spending_trends` | Analyze spending patterns over time |
| `budget_check` | Compare actual spending vs budget limits |
| `top_expenses` | Get largest expenses ranked |
| `search_transactions` | Search by merchant or category |

## šŸ¦ Connecting Real Bank Accounts

**Currently in Sandbox Mode** (test data only)

To connect real banks:

1. Switch to Development mode in Plaid dashboard
2. Update `.env`: `PLAID_ENV=development`
3. Implement Plaid Link UI (web interface for bank login)

**For portfolio/demo purposes, sandbox mode is recommended** to avoid exposing real financial data.

## šŸ“Š Sample Output

**Finding Subscriptions:**
19 subscriptions found totaling $18,123/year
Top subscriptions:

Comcast Internet: $130.71/mo ($915 total)
Apple Store: $180.05/mo ($900 total)
Verizon Phone Bill: $110.75/mo ($886 total)
Electric Bill: $119.86/mo ($839 total)
Zara: $151.91/mo ($760 total)


**Monthly Summary:**
Monthly total: $1,510
Income: $5,000
Expenses: $3,490
Net: $1,510
Spending by category:

Groceries: $644
Shopping: $900
Utilities: $886
Dining: $450
Transportation: $380


## šŸ› ļø Tech Stack

- **Python 3.14**
- **MCP SDK** - Model Context Protocol
- **Plaid API** - Bank connection & transaction data
- **Pandas** - Data analysis
- **Claude AI** - Natural language interface

## šŸ” Security & Privacy

- āœ… API keys stored in `.env` (never committed)
- āœ… All data processed locally
- āœ… No external logging or analytics
- āœ… Plaid provides bank-level encryption

**āš ļø Important:** Never commit your `.env` file or API keys to GitHub!

## šŸ¤ Contributing

Contributions welcome! Feel free to:

- Report bugs
- Suggest features
- Submit pull requests

## šŸ“ License

MIT License

## šŸ™ Acknowledgments

- Built with [Anthropic's MCP](https://modelcontextprotocol.io)
- Powered by [Plaid](https://plaid.com)


---

**⭐ If you found this helpful, please star the repo!**

Maintenance

ActivityInactive
ResponsivenessNo issues