Skip to main content
Glama
dev-muhammad

MCP Agent - AI Expense Tracker

by dev-muhammad

MCP Agent - AI Expense Tracker

License: MIT Python 3.11+ GitHub stars Presentation

A practical demonstration of AI Agent implementation with custom MCP server.

This project showcases how to build intelligent AI agents using the Model Context Protocol (MCP). Through a real-world expense tracking application, you'll see how AI agents can interact with tools, databases, and APIs to perform complex tasks through natural conversation.

🎯 What This Demonstrates

  • Custom MCP Server: Build your own MCP server using FastAPI

  • AI Agent Integration: Connect AI agents to tools via MCP protocol

  • Real-world Application: Practical expense tracking use case

  • Natural Language Interface: Chat with AI to manage your data

  • Tool Discovery: AI automatically discovers and uses available tools

πŸ—οΈ Architecture

graph TB
    subgraph "Backend"
        API[API Server<br/>FastAPI + SQLite<br/>Port: 8002]
        MCP[MCP Server<br/>FastAPI-MCP<br/>Port: 9002]
    end

    subgraph "AI Layer"
        Agent[AI Agent<br/>Agno Framework<br/>Port: 7777]
        LLM[LLM]
    end

    subgraph "Client Layer"
        UI[Web UI<br/>Next.js + React<br/>Port: 3000]
        Telegram[Telegram Bot<br/>Python Telegram Bot]
        AnyClient[Any MCP Client]
    end

    subgraph "End Users"
        User1[User]
        User2[User]
        User3[User]
    end

    API -->|Exposes REST API| MCP
    MCP -->|MCP Protocol| Agent
    MCP -.->|MCP Protocol| AnyClient
    Agent -->|API Calls| LLM
    Agent -->|Serves| UI
    Agent -->|Serves| Telegram
    UI -->|Interacts| User1
    Telegram -->|Interacts| User2
    AnyClient -.->|Interacts| User3

    style API fill:#0066CC,color:#fff
    style MCP fill:#00AA66,color:#fff
    style Agent fill:#FF6600,color:#fff
    style LLM fill:#8B5CF6,color:#fff
    style UI fill:#06B6D4,color:#fff
    style Telegram fill:#06B6D4,color:#fff

πŸ“– For detailed architecture documentation, request flows, and deployment options, see

πŸš€ Features

  • AI-Powered Agent: Natural language expense tracking using OpenAI GPT-4

  • SQLite Database: Persistent storage for all transactions

  • Auto-Initialization: Automatic database setup with seed data

  • MCP Integration: Extensible tool system for AI agents

  • REST API: Full CRUD operations for expense management

  • Multiple Clients: Web UI, Telegram bot, and direct agent interface

  • Smart Categorization: Automatic expense categorization and insights

  • Currency-Agnostic: Clean numerical formatting without currency symbols

πŸ“ Project Structure

MCPAgent/
β”œβ”€β”€ .env.example       # Environment variables template
β”œβ”€β”€ .env               # Your configuration (create from .env.example)
β”œβ”€β”€ agent/             # AI Agent with Agno framework
β”‚   β”œβ”€β”€ agent.py       # Main agent with system prompts
β”‚   └── agno.db        # Agent's SQLite database
β”œβ”€β”€ server/            # FastAPI backend with MCP server
β”‚   β”œβ”€β”€ main.py        # API routes and endpoints
β”‚   β”œβ”€β”€ store.py       # SQLite data store
β”‚   β”œβ”€β”€ models.py      # Pydantic data models
β”‚   β”œβ”€β”€ config.py      # Configuration settings
β”‚   β”œβ”€β”€ mcp_server.py  # MCP protocol server
β”‚   β”œβ”€β”€ start.py       # Server initialization & startup
β”‚   └── expenses.db    # Transactions database
└── client/
    β”œβ”€β”€ agent-ui/      # Next.js web interface
    └── telegram-bot/  # Telegram bot client

πŸƒ Quick Start

1. Install Dependencies

# Install Python dependencies
pip install -r server/requirements.txt
pip install agno openai python-dotenv

2. Set Environment Variables

# Copy example and add your API key
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY

3. Initialize and Start Servers

cd server

# Check dependencies and initialize database with seed data
python start.py

# Start MCP server (in one terminal)
python start.py --mcp

# Start API server (in another terminal)
python start.py --api

4. Run the AI Agent

cd agent
python agent.py

Access the agent at: http://localhost:7777

πŸ’¬ Usage Examples

Chat with the AI agent:

  • "Add a 50 grocery expense"

  • "I spent 75 on dinner last night"

  • "How much did I spend on food this month?"

  • "Show me my financial summary"

  • "What's my biggest expense category?"

  • "Add income of 5000 from salary"

πŸ› οΈ Tech Stack

  • Protocol: Model Context Protocol (MCP) - Custom server implementation

  • Agent Framework: Agno

  • AI Model: OpenAI GPT-4

  • MCP Server: FastAPI-MCP (converts REST API to MCP tools)

  • Backend: FastAPI + SQLite

  • Frontend: Next.js + React

  • Bot: Python Telegram Bot

πŸ”Œ How MCP Works Here

  1. FastAPI Backend (server/main.py) - Standard REST API with CRUD operations

  2. MCP Server (server/mcp_server.py) - Wraps the API and exposes it as MCP tools

  3. AI Agent (agent/agent.py) - Connects to MCP server and automatically discovers tools

  4. Natural Language - User chats with agent, agent uses tools to complete tasks

User Input β†’ AI Agent β†’ MCP Server β†’ FastAPI β†’ SQLite
              ↓
         Tool Selection & Execution
              ↓
         Natural Language Response

πŸ“Š API Endpoints

  • GET /transactions - List all transactions

  • POST /transactions - Create new transaction

  • PUT /transactions/{id} - Update transaction

  • DELETE /transactions/{id} - Delete transaction

  • GET /transactions/search?q= - Search transactions

  • GET /summary - Financial summary

  • GET /summary/categories - Category breakdown

  • GET /health - Health check

Full API docs: http://localhost:8002/docs

🎯 Server Commands

The start.py script manages server initialization and startup:

# Check dependencies and initialize database
python start.py

# Start MCP server only
python start.py --mcp

# Start API server only  
python start.py --api

# Custom ports
python start.py --api --port 8000
python start.py --mcp --port 9000

What

  • βœ… Checks all required dependencies

  • βœ… Verifies environment variables

  • βœ… Initializes SQLite database

  • βœ… Seeds database with sample transactions (first run only)

  • βœ… Starts requested server(s)

πŸ€– Agent Capabilities

The AI agent can:

  • Create, read, update, and delete expenses

  • Search transactions by keyword

  • Generate financial summaries and insights

  • Analyze spending patterns by category

  • Provide budgeting recommendations

  • Filter transactions by date, type, or category

πŸ”§ Configuration

Environment Variables (.env)

OPENAI_API_KEY=your_key_here    # Required for AI agent
HOST=localhost                  # Server host
PORT=8002                       # API server port
MCP_HOST=localhost              # MCP server host
MCP_PORT=9002                   # MCP server port

Server Configuration (server/config.py)

  • Server host/port settings

  • Database path

  • MCP server configuration

Agent Configuration (agent/agent.py)

  • AI model selection (default: gpt-4.1)

  • System prompt customization

  • Agent behavior settings

  • Database location

πŸ” Troubleshooting

Dependencies missing?

pip install -r server/requirements.txt
pip install agno openai python-dotenv

Database not initialized?

cd server && python start.py

Port already in use?

python start.py --api --port 8003
python start.py --mcp --port 9003

Agent can't connect to MCP?

πŸ“Š Presentation

This project includes a presentation about practical AI agent implementation:

🌐 Live Demo

View Slides Online β†’

πŸ“ Local Files

Open the slides to learn more about AI agents and MCP protocol.

πŸ“š Resources

This project is built with and inspired by amazing open-source projects:

Special thanks to these projects and their maintainers for making AI agent development accessible and enjoyable! πŸ™

πŸ“ License

MIT


Built with ❀️ using AI agents and MCP

-
security - not tested
A
license - permissive license
-
quality - not tested

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/dev-muhammad/MCPAgent'

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