Skip to content

dev-muhammad/MCPAgent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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
Loading

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

πŸš€ 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 start.py does:

  • βœ… 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

About

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

Topics

Resources

License

Stars

Watchers

Forks