Skip to main content
Glama
Mohit067

Expense Tracker MCP

by Mohit067
README.md
# 💰 Expense Tracker MCP + Google ADK Agent

This project connects a **Google ADK Agent** with a **FastMCP server --> local** to manage an **SQLite-based Expense Tracker**.

The agent can:

- ➕ Add expense  
- 📋 List expenses  
- ✏️ Update expense  
- ❌ Delete expense  
- 📊 Sum expenses  
- 🗂 Filter by category  
- 📅 Filter by date range  
- 🤖 Execute dynamic queries  
- 🎲 Auto-generate multiple expenses  

---

# 🏗 Project Structure


---

# ⚙️ Requirements

- Python 3.10+
- pip or uv
- Virtual environment (recommended)
- Groq or OpenAI API Key

---

# 🚀 Setup Instructions

## 1️⃣ Clone the Repository

```bash
cd Expense-tracker-MCP
```

## 2️⃣ create vertual Environment
```bash
python -m venv .venv
```

## 3️⃣ Activate Virtual Environment 
```bash
.venv\Scripts\activate
```

## 4️⃣ Install Dependencies
```bash
pip install fastmcp google-adk litellm groq python-dotenv fastmcp
```

## 5️⃣ Run the ADK Agent
```bash
adk run my_agent
```




pip install fastmcp psutil platformdirs
psutil system information ke liye use hoga.




# 🖥️ FastMCP System Monitor

A **FastMCP server tool** to monitor your system information. You can fetch **battery, RAM, CPU, disk, and OS info** remotely via an MCP client like **Claude Desktop**.

---

## 🚀 Features

* Get **Battery status** (percentage & charging).
* Get **RAM usage** (total, used, percentage).
* Get **Disk usage** (total, used, free space).
* Get **CPU usage** (percentage).
* Get **System info** (OS, hostname, processor).
* Accessible via **HTTP MCP server**, compatible with **Claude Desktop** or other MCP clients.

---

## 📦 Requirements

* Python 3.10+
* Libraries:

```bash
pip install fastmcp psutil platformdirs
```

---

## 📄 Installation

1. Clone or download this repository.
2. Ensure Python and required libraries are installed.
3. Place the file `system_mcp_server.py` in a suitable location.

---

## ⚙️ Usage

### 1. Run the MCP server

```bash
cd expense-tracker-mcp
uv run laptop_status.py
```

* By default, the server starts on **HTTP port 8004**.
* You can change the port in the `main()` function:

```python
mcp.run(transport="http", port=YOUR_PORT)
```

---

### 2. Using with Claude Desktop

1. Open Claude Desktop.
2. Add the MCP server in the config file:

```json
{
  "mcpServers": {
    "proxy": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "fastmcp",
        "fastmcp",
        "run",
        "C:\\Users\\MM0956\\Documents\\Expense-tracker-MCP\\proxy.py"
      ],
      "env": {},
      "transport": "stdio",
      "type": null,
      "cwd": null,
      "timeout": null,
      "description": null,
      "icon": null,
      "authentication": null
    }
  }
}
```
or you can run this command to add this configuration directly by vscode terminal
```base
cd expense-tracker-mcp
uv run fastmcp install claude-desktop .\proxy.py
```

3. Restart Claude Desktop.
4. Query your system using natural language:

* "Check my battery"
* "What is my RAM usage?"
* "Show disk space"
* "Show CPU usage"
* "Give me system info"

---

## 🛠️ Tools / Endpoints

| Tool Name         | Description                                  | Example Output                                                                                   |
| ----------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `get_battery`     | Returns battery percentage & charging status | `{ "percent": 87, "charging": true }`                                                            |
| `get_ram`         | Returns RAM total, used, and percent used    | `{ "total_gb": 16, "used_gb": 8.5, "percent_used": 53.1 }`                                       |
| `get_disk`        | Returns disk usage (total, used, free)       | `{ "total_gb": 512, "used_gb": 256, "free_gb": 256 }`                                            |
| `get_cpu`         | Returns CPU usage percentage                 | `{ "cpu_percent": 25.3 }`                                                                        |
| `get_system_info` | Returns OS, hostname, processor info         | `{ "system": "Windows", "node": "DESKTOP-123", "release": "10", "processor": "Intel i7-9750H" }` |

---