费用管理代理系统

ExpensesMCP是一个基于OpenAI MCP工具、FastAPI微服务、Gradio UI和SQLite的多容器代理驱动费用跟踪系统,提供自然语言交互的CRUD操作。

  • by ganapathyp
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ganapathyp/expenses-mcp

使用说明

🚀 MCP费用

使用MCP、FastAPI、SQLite和Gradio进行代理费用管理


📘 概述

MCP费用 是一个多容器、代理驱动的费用跟踪系统,演示了如何 OpenAI MCP工具, FastAPI微服务, Gradio用户界面,以及 SQLite 可以组合成一个安全、可扩展、LLM驱动的应用程序。

使用ExpensesMCP,用户可以自然地进行交互:

  • “增加20美元的午餐费用”
  • “列出本周的所有费用”
  • “将费用3更新为14美元”
  • “删除出租车”

底层AI代理使用 MCP工具 以在后端API上安全地执行结构化操作。


🧱 建筑

系统流量

Gradio UI → OpenAI Agent → MCP Server → Expense API → SQLite DB

美人鱼图

flowchart LR
    A[Gradio UI<br/>expense_agent_app] --> B(OpenAI Responses API<br/>MCP Tools)
    B --> C[expense_mcp_server<br/>MCP Tool Gateway]
    C --> D[expense_api<br/>FastAPI CRUD Service]
    D --> E[(SQLite Database)]

🧩 组件

1. expense_agent_app –Gradio+OpenAI代理

  • 聊天UI使用 Gradio块
  • 使用OpenAI 响应API 和 MCP工具
  • 无状态容器;易于扩展
  • 继续运行 端口7860

2. expense_mcp_server –MCP工具网关

  • 暴露安全的、类型化的MCP工具端点:

    • add_expense
    • list_expenses
    • get_expense
    • update_expense
    • delete_expense
  • 将工具请求转发到API容器

  • 继续运行 端口8000

3. expense_api –FastAPI+SQLite后端

  • CRUD操作费用:

    • POST /expenses
    • GET /expenses
    • GET /expenses/{id}
    • PUT /expenses/{id}
    • DELETE /expenses/{id}
  • 坚持使用简单的SQLite存储

  • 继续运行 端口9000


📂 文件夹结构

expenses-mcp/
│
├── expense_api/              # FastAPI CRUD backend
│   ├── main.py
│   ├── db.py
│   ├── repository.py
│   └── Dockerfile
│
├── expense_mcp_server/       # MCP tools proxy
│   ├── main.py
│   ├── config.py
│   └── Dockerfile
│
├── expense_agent_app/        # Gradio UI + OpenAI SDK
│   ├── client.py
│   ├── mcp_client.py
│   └── Dockerfile
│
├── docker-compose.yml
└── README.md

🚀 快速入门

1.克隆仓库

git clone https://github.com/ganapathyp/expenses-mcp.git
cd expenses-mcp

2.设置您的OpenAI API密钥

export OPENAI_API_KEY=sk-...

(Windows PowerShell)

setx OPENAI_API_KEY "sk-..."

3.启动完整的多容器环境

docker compose up --build

您现在将拥有:

组件 URL 描述
API http://localhost:9000/docs CRUD后端费用
MCP服务器 http://localhost:8000/docs MCP工具网关
代理UI(Gradio) http://localhost:7860 交互式聊天机器人

🧪 示例命令(与代理聊天)

在Gradio UI中尝试以下操作:

  • “在食品类别中添加12美元的午餐费用”
  • “列出所有费用”
  • “将费用1更新为18美元”
  • “删除费用3”

🏗 部署说明

✔ 微服务边界

每个服务都可以通过Docker独立部署。

✔ 扩展

  • API和MCP服务器可以在负载均衡器后面水平扩展。
  • Gradio UI可以扩展为无状态前端工作者。

✔ 数据库

SQLite用于可移植性——易于与Postgres交换。


🔧 未来的增强功能

  • 🔐 API和MCP认证
  • 📊 支出仪表板可视化(绘图仪、梯度图)
  • 🧮 月度预算跟踪和总结
  • 📁 CSV导入/导出
  • ☁️ 地形+云部署示例