Skip to main content
Glama
Surya-KF

Enterprise Expense Automation System

by Surya-KF
README.md
# 🏒Enterprise Expense Automation System using MCP & NLP

[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![FastMCP](https://img.shields.io/badge/FastMCP-2.12.4-green.svg)](https://github.com/jlowin/fastmcp)
[![Status](https://img.shields.io/badge/status-production-brightgreen.svg)]()

A professional Model Context Protocol (MCP) server for tracking company expenses, employees, departments, and performance through natural language conversations with Claude Desktop.

## ✨ Features

- **12 MCP Tools** for complete CRUD operations
- **Natural Language Interface** through Claude Desktop chatbot
- **Employee Management** with unique employee numbers (EMP0001, EMP0002, etc.)
- **Expense Tracking** with categorization and department assignment
- **Performance Management** with ratings and comments
- **AI-Powered Analysis** using Google Gemini 2.0 Flash (Latest 2025 Model)
- **Duplicate Detection** and automatic cleanup
- **Safe Delete Operations** with cascade support

## πŸ—οΈ System Architecture

![System Design](docs/system%20design.png)

*The architecture shows the complete flow from Claude Desktop through the MCP Server to the SQLite database, with AI-powered analysis via Google Gemini.*

## πŸ“Š Database Schema

```
departments         employees              expenses              performance
β”œβ”€β”€ id             β”œβ”€β”€ id                 β”œβ”€β”€ id                β”œβ”€β”€ id
β”œβ”€β”€ name           β”œβ”€β”€ employee_number    β”œβ”€β”€ date              β”œβ”€β”€ employee_id
└── description    β”œβ”€β”€ name               β”œβ”€β”€ amount            β”œβ”€β”€ rating
                   β”œβ”€β”€ role               β”œβ”€β”€ category          β”œβ”€β”€ month
                   β”œβ”€β”€ department_id      β”œβ”€β”€ note              └── comments
                   β”œβ”€β”€ salary             └── department_id
                   └── join_date
```

**Current Data:**
- 4 Departments (Admin, HR, Tech, BPO)
- 18 Employees with unique employee numbers
- 34 Expense records
- 20 Performance ratings

## πŸš€ Quick Start

### Prerequisites

- Python 3.11 or higher
- UV package manager or pip
- Claude Desktop application
- Google Gemini API key

### Installation

1. **Create virtual environment**

```powershell
cd "C:\Users\VH0000812\Desktop\Expense Tracker"
uv venv
.\.venv\Scripts\activate
```

2. **Install dependencies**

```powershell
uv pip install -r requirements.txt
```

3. **Set up environment variables**

Create `.env` file:
```env
GEMINI_API_KEY=your_google_gemini_api_key_here
```

4. **Initialize database with sample data**

```powershell
python scripts\populate_data.py
```

5. **Configure Claude Desktop**

Add to `%APPDATA%\Claude\claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "company-expense-tracker": {
      "command": "C:\\Users\\VH0000812\\Desktop\\Expense Tracker\\.venv\\Scripts\\python.exe",
      "args": [
        "C:\\Users\\VH0000812\\Desktop\\Expense Tracker\\main.py"
      ],
      "env": {
        "GEMINI_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

6. **Restart Claude Desktop**

## πŸ› οΈ MCP Tools (12 Total)

### βž• Create Operations (4)
| Tool | Description | Example |
|------|-------------|---------|
| `add_department` | Create new departments | "Create Marketing department" |
| `add_employee` | Add employees with auto employee numbers | "Hire John as Developer in Tech at $100k" |
| `add_expense` | Track expenses by department | "Add $500 AWS expense to Tech" |
| `add_performance` | Add performance ratings | "Give Alice 5 stars this month" |

### πŸ—‘οΈ Delete Operations (4)
| Tool | Description | Example |
|------|-------------|---------|
| `delete_employee` | Remove employees by number/name | "Delete employee EMP0015" |
| `delete_expense` | Delete expense records | "Delete expense ID 45" |
| `delete_department` | Remove departments (force mode available) | "Force delete Marketing with all data" |
| `delete_duplicate_employees` | Auto-detect and remove duplicates | "Remove all duplicate employees" |

### πŸ“‹ Query Operations (3)
| Tool | Description | Example |
|------|-------------|---------|
| `list_employees` | View employees (all or by department) | "Show all HR employees" |
| `list_expenses` | List expenses with filters | "Show Tech expenses last 30 days" |
| `get_department_summary` | Comprehensive department stats | "Give me HR summary" |

### πŸ€– AI Analysis (1)
| Tool | Description | Example |
|------|-------------|---------|
| `analyze_company_with_ai` | AI-powered insights via Gemini | "Which department spends most?" |

## πŸ’¬ Usage Examples

### Employee Management
```
βœ… "Hire Sarah as Marketing Manager in Admin at $75,000"
βœ… "Show me all Tech department employees"
βœ… "Delete employee EMP0017"
βœ… "Find and remove all duplicate employees"
```

### Expense Tracking
```
βœ… "Add $1,500 office furniture expense to Admin"
βœ… "Show all expenses from last month"
βœ… "Delete expense ID 32"
```

### Performance & Analysis
```
βœ… "Give John Smith a 5-star rating with comment 'Excellent work'"
βœ… "Show me complete HR department summary"
βœ… "Which department has highest salary burden?"
βœ… "Analyze expense trends across departments"
```

## πŸ“ Project Structure

```
Expense Tracker/
β”œβ”€β”€ src/                      # Source code modules
β”‚   β”œβ”€β”€ operations/           # Business logic
β”‚   β”œβ”€β”€ ai/                   # AI integration
β”‚   β”œβ”€β”€ tools/                # MCP tool definitions
β”‚   β”œβ”€β”€ database.py           # Database config
β”‚   └── __init__.py
β”œβ”€β”€ tests/                    # All test files
β”‚   β”œβ”€β”€ test_tools.py
β”‚   β”œβ”€β”€ test_delete_functions.py
β”‚   └── test_employee_numbers.py
β”œβ”€β”€ scripts/                  # Utility scripts
β”‚   β”œβ”€β”€ populate_data.py      # Initialize data
β”‚   β”œβ”€β”€ migrate_employee_numbers.py
β”‚   └── db_viewer.py          # Interactive viewer
β”œβ”€β”€ docs/                     # Documentation
β”‚   β”œβ”€β”€ QUICK_REFERENCE.md
β”‚   β”œβ”€β”€ DELETE_TOOLS.md
β”‚   └── COMPLETE_SUMMARY.md
β”œβ”€β”€ config/                   # Configuration
β”‚   └── departments.json
β”œβ”€β”€ data/                     # Database
β”‚   └── company.db
β”œβ”€β”€ main.py                   # Entry point
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ .env
β”œβ”€β”€ .gitignore
└── README.md
```

## πŸ§ͺ Testing

Run tests:
```powershell
python tests\test_tools.py
python tests\test_delete_functions.py
python tests\test_employee_numbers.py
```

Interactive database viewer:
```powershell
python scripts\db_viewer.py
```

## πŸ”§ Configuration

### Expense Categories
- Infrastructure, Software Licenses, Training
- Office Supplies, Utilities, Salaries
- Recruitment, Events, Equipment, Maintenance

### Employee Number Format
- Auto-generated: `EMP0001`, `EMP0002`, etc.
- Unique identifier for each employee
- Used for quick lookups and operations

## πŸ”’ Security Features

- βœ… API keys in environment variables
- βœ… Foreign key constraints in database
- βœ… Input validation on all operations
- βœ… Safe delete mode (force flag required for cascade)
- βœ… Duplicate detection and prevention

## πŸ†˜ Troubleshooting

### Claude Desktop not showing tools
1. Restart Claude Desktop (right-click tray icon β†’ Quit)
2. Check config path in `claude_desktop_config.json`
3. Verify database exists at `data/company.db`

### Database errors
```powershell
# Migrate employee numbers
python scripts\migrate_employee_numbers.py

# Reinitialize database
python scripts\populate_data.py
```

### Import errors
```powershell
# Reinstall dependencies
uv pip install -r requirements.txt

# Check Python version (must be 3.11+)
python --version
```

## πŸ“š Documentation

- **Quick Reference**: [`docs/QUICK_REFERENCE.md`](docs/QUICK_REFERENCE.md)
- **Complete Summary**: [`docs/COMPLETE_SUMMARY.md`](docs/COMPLETE_SUMMARY.md)
- **Delete Tools Guide**: [`docs/DELETE_TOOLS.md`](docs/DELETE_TOOLS.md)
- **Getting Started**: [`docs/GETTING_STARTED.md`](docs/GETTING_STARTED.md)

## 🎯 Roadmap

- [ ] Update/edit operations for employees and expenses
- [ ] Bulk import/export functionality
- [ ] Monthly and yearly report generation
- [ ] Budget tracking with alerts
- [ ] Employee search by skills/role
- [ ] Expense approval workflow
- [ ] Department budget management
- [ ] API endpoint version

## πŸ“ˆ Statistics

```
🏒 Departments:        4 (Admin, HR, Tech, BPO)
πŸ‘₯ Employees:          18 (with unique employee numbers)
πŸ’° Total Salary:       $1,288,000 annually
πŸ’³ Expense Records:    34 tracked
⭐ Performance:        20 ratings (avg 4.2/5.0)
```

## 🀝 Development

### Adding New Tools

1. Define function in appropriate module
2. Add MCP tool wrapper in `main.py`
3. Test with `tests/test_*.py`
4. Update documentation

### Code Style

- Follow PEP 8 guidelines
- Use type hints
- Add docstrings to all functions
- Include error handling

## πŸ“ License

Internal use only - Company Expense Tracker

---

**Version**: 1.0.0  
**Last Updated**: October 15, 2025  
**Status**: βœ… Production Ready  
**Maintained by**: Company Development Team

For support or questions, see [`docs/COMPLETE_SUMMARY.md`](docs/COMPLETE_SUMMARY.md)

Maintenance

ActivityInactive
ResponsivenessNo issues