费用分析工具

一个使用Google OAuth认证和Supabase数据库的安全费用分析应用,提供交互式聊天界面和交易分析工具。

  • by crystas-sc
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 crystas-sc/mcp-oauth-sample

使用说明

带有费用分析的MCP OAuth示例

这个项目展示了一个使用Google OAuth认证、FastMCP进行工具管理以及Gradio作为用户界面的安全支出分析应用程序。它连接到Supabase数据库以存储和查询交易数据。

特点

  • 🔐 Google OAuth 认证
  • 💬 使用Gradio的交互式聊天界面
  • 由谷歌Gemini AI驱动的ReAct智能体
  • 📊 交易分析工具
  • 🔒 安全的数据库查询
  • 🗄️ 与Supabase的集成

先决条件

  • Python 3.8或更高版本
  • 一个已配置OAuth 2.0的Google Cloud项目
  • 一个已设置好交易表的Supabase项目

数据库模式

该应用程序期望一个 transactions 在Supabase中的表格,其模式如下:

CREATE TABLE transactions (
    email_id VARCHAR(255) NOT NULL,          -- identifies the person
    amount NUMERIC(12,2) NOT NULL,           -- transaction amount with 2 decimal places
    currency VARCHAR(10) NOT NULL DEFAULT 'USD', -- ISO 4217 currency code
    transaction_type VARCHAR(50) NOT NULL,   -- e.g., 'debit', 'credit', 'refund'
    category VARCHAR(50) NOT NULL,           -- e.g., 'food', 'clothes', 'shopping', 'other'
    description TEXT,                        -- optional description
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

设置

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 在(系统/环境中)设置环境变量 .env:

    # Google OAuth Configuration
    CLIENT_ID=your_google_oauth_client_id
    CLIENT_SECRET=your_google_oauth_client_secret
    GOOGLE_API_KEY=your_gemini_api_key
    
    # Supabase Configuration
    SUPABASE_URL=your_supabase_project_url
    SUPABASE_KEY=your_supabase_anon_key
    SUPABASE_DATABASE_URL=your_supabase_direct_connection_string
    

运行应用程序

  1. 启动MCP服务器:

    fastmcp run server.py --transport http --port 8000
    
  2. 在另一个终端中,启动聊天界面:

    python react_agent.py
    

聊天界面将在 http://localhost:7860。

可用工具

1. 用户信息

  • get_user_info()获取已认证用户的电子邮件和姓名

2. 交易分析

  • execute_transaction_query(query: str, email_id: str)在交易表上执行自定义的SELECT查询
    • 支持聚合、过滤和复杂分析
    • 需要 WHERE email_id = %s 安全条款
    • 示例查询:
      SELECT amount, category FROM transactions WHERE email_id = %s AND created_at < '2026-01-01'
      SELECT SUM(amount) FROM transactions WHERE email_id = %s AND transaction_type = 'debit'
      

聊天界面使用指南

聊天界面提供了一种交互式的方式来分析支出。示例查询:

  • “创建费用分析”
  • “有哪些可用的工具?”
  • “你能帮我分析一些数据吗?”

ReAct代理将:

  1. 理解您的需求
  2. 使用适当的工具来收集数据
  3. 处理并分析信息
  4. 提供人性化的回应

安全特性

  • 使用Google进行OAuth 2.0认证
  • 使用参数化语句确保数据库查询安全
  • 基于电子邮件的数据隔离
  • 只读事务分析
  • 需要进行电子邮件验证

屏幕截图

建筑

  • server.py带有工具定义和OAuth设置的MCP服务器
  • react_agent.py聊天界面和ReAct代理实现
  • 用于网页界面的Gradio
  • 用于自然语言理解的Gemini AI
  • Supabase 用于安全数据存储

贡献;做出贡献

  1. 为仓库创建分支(或“克隆仓库”)
  2. 创建你的特性分支
  3. 提交您的更改
  4. 推送至分支
  5. 创建一个新的拉取请求