项目简介
这是一个结合了无头数据抓取和Model Context Protocol (MCP) 服务器的后端应用。它能够从以色列的银行和信用卡提供商处抓取您的金融数据,安全地存储在本地SQLite数据库中,并通过标准的MCP接口向大型语言模型(LLM)客户端提供上下文信息和功能。这使得任何支持MCP的LLM应用都能理解和分析您的个人财务状况。
主要功能点
- 自动化数据抓取: 从支持的以色列银行和信用卡服务商处定期或按需抓取最新的账户和交易数据。
- 本地数据存储: 将抓取到的数据存储在本地SQLite数据库中,确保数据安全和隐私。
- 丰富的金融工具: 提供多种MCP工具供LLM调用,包括:
- 获取账户列表及余额
- 检索交易记录(支持按日期、账户过滤)
- 生成财务总览(收入、支出、趋势)
- 分析月度信用卡账单
- 检测重复发生的费用(如订阅)
- 分析特定商家的消费模式
- 按商家统计消费排名
- 比较不同类别的消费支出
- 分析按周几的消费习惯
- 搜索交易记录(按描述、金额、类别)
- 获取可用的交易类别列表
- 触发数据刷新
- 查询数据抓取状态和数据库元数据
- LLM集成: 通过标准MCP接口(如Stdio传输)与Raycast AI、Claude Desktop等支持MCP的LLM客户端无缝集成。
安装步骤
该项目推荐使用 Docker Compose 进行安装和运行。
- 安装 Docker Compose: 确保您的系统已安装 Docker 和 Docker Compose。
- 获取代码: 克隆本仓库到您的本地机器上。
- 配置环境变量: 复制项目根目录下的 'env.example' 文件为 '.env'。编辑 '.env' 文件,填入您的以色列银行和信用卡账户的登录凭据。根据您拥有的账户,填写对应的环境变量(例如 'LEUMI_USERNAME', 'LEUMI_PASSWORD', 'ISRACARD_ID', 'ISRACARD_CARD6DIGITS' 等)。
- 启动服务: 在项目根目录下运行 Docker Compose 命令启动抓取器和数据库服务:
这将启动数据库和定期抓取数据的服务。数据库文件将保存在 './data' 目录下,日志保存在 './logs' 目录下。LEUMI_USERNAME=your_leumi_user LEUMI_PASSWORD=your_leumi_pass \ # 根据需要添加其他提供商的凭据环境变量 docker compose up -d - 首次数据抓取: 建议首次运行后触发一次手动抓取,确保LLM有数据可分析。具体的触发方式取决于您的MCP客户端(见基本使用方法或客户端文档)。
服务器配置 (LLM客户端需要)
MCP服务器需要由您的LLM客户端(如Raycast AI或Claude Desktop)启动和管理。您需要在客户端中配置一个MCP服务器条目,告知客户端如何启动 'il-bank-mcp' 的MCP服务器组件。配置信息通常是 JSON 格式,您需要根据您的实际安装路径进行调整。
基本的配置信息结构如下:
{ "server name": "给您的MCP服务器起一个易于识别的名称,例如 'israeli-bank-assistant'", "command": "用于启动Docker的命令,例如 'docker'", "args": [ "Docker Compose 的参数,指示运行 MCP 服务器服务", "通常是 'compose'", "-f", "/您克隆仓库的**绝对路径**/docker-compose.yml", "run", "--rm", "-i", "mcp-server" // Docker Compose 文件中 MCP 服务器服务的名称 ], "env": { "MCP_SERVER_LOG_LEVEL": "可选,设置日志级别,例如 'info'", "DATABASE_PATH": "可选,如果您的数据库路径不是默认的,可以在这里指定", "IGNORED_ACCOUNT_IDS": "可选,忽略特定账户ID,逗号分隔", // **重要**: 客户端配置中通常无需再次提供银行/信用卡凭据, // 因为它们已在 Docker Compose 启动时的 '.env' 文件或环境变量中配置。 // 如果客户端支持直接传递环境变量给MCP进程,您也可以在这里提供, // 但推荐通过 '.env' 文件或 Docker 环境管理。 } }
请查阅您的具体LLM客户端(如 Raycast AI Manual 或 Claude Desktop config.jsonc)关于如何添加和配置外部 MCP 服务器的详细说明。您需要将上述结构中的占位符替换为您的实际值,特别是仓库的绝对路径。
基本使用方法
一旦MCP服务器在您的LLM客户端中配置并成功启动:
- 检查状态: 在LLM聊天中,您可以尝试询问服务器的状态,例如 "检查一下我的财务数据最后更新是什么时候?" 或 "数据抓取进行中吗?"。LLM应能调用 'get_scrape_status' 工具并返回信息。如果数据是旧的或从未抓取过,LLM可能会建议您触发刷新。
- 触发刷新: 如果数据不新鲜,您可以要求LLM刷新数据,例如 "请刷新我所有的银行数据"。LLM会调用 'refresh_all_data' 或 'refresh_service_data' 工具。注意,抓取过程可能需要几分钟并在后台运行。
- 进行财务查询: 数据就绪后,您可以像与财务助手对话一样进行查询,例如:
- "我这个月在餐饮上花了多少钱?" (LLM可能先调用 'get_available_categories' 获取类别列表,然后调用 'get_financial_summary' 或 'get_transactions' 进行分析)
- "我的储蓄账户余额是多少?" (LLM调用 'get_accounts')
- "帮我找出所有超过 1000 谢克尔的交易。" (LLM调用 'search_transactions')
- "我有哪些订阅服务?" (LLM调用 'get_recurring_charges')
- "我一般周几花的钱最多?" (LLM调用 'analyze_day_of_week_spending')
- 理解LLM的响应: LLM会调用相应的工具获取数据,然后根据获取到的数据进行分析和总结,以自然语言回复您的问题。LLM可能会在回复中包含从工具返回的结构化数据(JSON),以供您参考。
通过这种方式,您可以利用强大的LLM能力,结合您的真实财务数据,获得个性化的财务洞察和建议。
信息
分类
商业系统