LangGraph MCP财务代理
一个由人工智能驱动的个人理财助理,可以让你跟踪支出、管理预算并获得支出见解——所有这些都是通过自然语言对话实现的。
建于 LangGraph, FastMCP, Supabase,以及 溪流,它具有多用户身份验证系统、持久的聊天历史记录和一个干净的代理循环,可以智能地决定何时调用工具,何时只聊天。
______________________________________________________________________
截图
客座观点
创建账户
主聊天界面
代理图
______________________________________________________________________
特性
- 自然语言费用跟踪 --只需描述费用即可添加、更新和删除费用(“我在杂货上花了45美元”)
- 智能更新检测 --代理识别更正(“实际上是50美元”)并更新现有记录,而不是创建重复记录
- 预算管理 --设置月度预算,并通过超预算警告获取实时状态
- 支出趋势 --您过去6个月支出的可视化ASCII条形图
- 类别摘要 --按类别分列的月度和历史细分
- 经常性支出 --登记每月固定费用(租金、订阅费等)
- 持续聊天记录 --对话按用户保存,可从侧边栏访问
- 多用户身份验证 --安全注册和登录;凭据在工具调用时注入,因此LLM永远不会看到它们
- 访客模式 --无需账号即可自由聊天;费用工具提示您登录
______________________________________________________________________
项目结构
LangGraph-MCP-Finance-Agent/
├── Expense_tracker_mcp.py # FastMCP server — all tools + Supabase logic
├── agent_graph.py # LangGraph agent loop + MCP client + auth helpers
├── app.py # Streamlit frontend
├── requirements.txt # Python dependencies
└── .env # Environment variables (not committed)______________________________________________________________________
入门指南
先决条件
1.克隆存储库
git clone https://github.com/manozpdel/LangGraph-MCP-Finance-Agent.git
cd LangGraph-MCP-Finance-Agent2.安装依赖项
pip install -r requirements.txt3.在FastMCP Cloud上托管MCP服务器
MCP服务器(Expense_tracker_mcp.py)托管在 FastMCP云 通过GitHub集成。此项目的实时服务器可在以下网址获得:
https://unlikely-blue-starfish.fastmcp.app/mcp要部署自己的实例,请执行以下操作:
- 首选 fastmcp.cloud 并使用您的GitHub帐户登录
- 连接您的存储库并选择
Expense_tracker_mcp.py作为服务器文件
- 在FastMCP Cloud仪表板中,添加以下内容 环境变量 部署前:
| 变量 | 描述 |
|---|---|
SUPABASE_URL | 您的Supabase项目URL(例如。 https://your-project.supabase.co) |
SUPABASE_KEY | 您的Supabase匿名/服务密钥 |
- 部署-FastMCP Cloud将为您提供托管MCP URL和API密钥
4.设置环境变量(本地)
创建一个 .env 用于在本地运行Streamlit前端的根目录中的文件:
# Groq
GROQ_API_KEY=your-groq-api-key
# FastMCP Cloud
FASTMCP_KEY=your-fastmcp-api-key注:SUPABASE_URL和SUPABASE_KEY只需在 FastMCP云服务器 (步骤3),不在您的本地.envStreamlit应用程序从不直接与Supabase通信——所有数据库访问都通过托管的MCP服务器进行。
5.配置代理
代理人在 agent_graph.py 已指向实时托管服务器。如果部署自己的实例,请相应地更新URL:
SERVERS = {
"expense": {
"transport": "streamable_http",
"url": "https://unlikely-blue-starfish.fastmcp.app/mcp", # hosted MCP server
"headers": {
"Authorization": f"Bearer {mcp_api_key}"
}
}
}6.设置辅助数据库表
MCP服务器将在第一次运行时尝试自动创建所需的表。如果失败(由于Supabase RPC权限),请在您的 Supabase SQL编辑器:
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
username TEXT UNIQUE NOT NULL,
password TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS expenses (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
amount FLOAT NOT NULL,
category TEXT NOT NULL,
description TEXT,
date TEXT NOT NULL,
timestamp FLOAT NOT NULL
);
CREATE TABLE IF NOT EXISTS budgets (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
month INTEGER NOT NULL,
year INTEGER NOT NULL,
amount FLOAT NOT NULL,
UNIQUE(user_id, month, year)
);
CREATE TABLE IF NOT EXISTS recurring_expenses (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
amount FLOAT NOT NULL,
category TEXT NOT NULL,
description TEXT,
day_of_month INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS chat_history (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
role TEXT NOT NULL,
content TEXT NOT NULL,
timestamp FLOAT NOT NULL,
date TEXT NOT NULL
);7.运行Streamlit应用程序
streamlit run app.py打开 http://localhost:8501 在您的浏览器中。
______________________________________________________________________
可用工具
MCP服务器向代理公开以下工具:
| 类别 | 工具 | 描述 |
|---|---|---|
| 开支 | add_expense | 记录新的支出 |
get_expenses | 获取最近的支出(可按类别筛选) | |
update_expense | 按ID编辑现有支出 | |
delete_expense | 按ID删除费用 | |
get_total_by_category | 按类别分组的所有时间总计 | |
get_monthly_summary | 特定月份的支出明细 | |
| 预算 | set_budget | 设定每月支出限额 |
check_budget_status | 看看你的预算有多少被使用了 | |
| 趋势 | get_spending_trend | 过去6个月的ASCII条形图 |
| 循环的 | add_recurring_expense | 登记每月固定成本 |
get_recurring_expenses | 列出所有经常性费用 | |
delete_recurring_expense | 删除经常性费用 | |
| 认证 | register_user | 创建新帐户 |
login_user | 对用户进行身份验证 | |
change_password | 更新帐户密码 | |
| 历史 | save_chat_exchange | 坚持谈话转向 |
get_chat_history_raw | 以JSON格式检索历史记录 | |
clear_chat_history | 清除所有聊天记录 |
______________________________________________________________________
依赖项
使用的关键包:
langgraph--代理状态图与工具路由langchain-groq--Groq LLM集成langchain-mcp-adapters--LangChain的MCP工具加载fastmcp--MCP服务器框架streamlit--前端用户界面requests-支持REST API调用python-dotenv--环境变量管理
看 requirements.txt 查看完整列表。
______________________________________________________________________
贡献
欢迎拉取请求!对于重大更改,请先打开一个问题来讨论您想要更改的内容。
