银行账户查询工具

一个通过浏览器自动化提供对BECU账户只读访问的MCP服务器,支持查询账户余额和交易历史。

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

使用说明

becu-mcp

一 MCP(模型上下文协议) 提供只读访问权限的服务器 BECU 通过浏览器自动化创建帐户。与Claude Code或任何兼容MCP的客户端一起使用,以对话方式查询账户余额和交易历史。

它做什么

显示三个工具:

工具 说明
get_accounts 返回所有当前余额、可用余额和年初至今利息的账户
get_balance 按索引返回单个帐户的余额详细信息
get_transactions 返回账户的交易历史记录(日期、描述、金额、余额)

使用Playwright驱动Chromium浏览器自动处理身份验证。会话被持久化 session.json 所以后续的通话都是无头的。如果会话到期或需要MFA,将打开一个可见的浏览器窗口供您完成登录。

安装

先决条件

步骤

  1. 克隆存储库:

    git clone https://github.com/jrolstad/becu-mcp.git
    cd becu-mcp
    
  2. 安装依赖项:

    pip install -r requirements.txt
    
  3. 安装Playwright的Chromium浏览器:

    playwright install chromium
    
  4. 使用以下两个选项之一设置您的BECU凭据。

使用Claude代码进行配置

将服务器添加到您的Claude Code MCP设置中(~/.claude.json 在...之下 mcpServers).凭据可以直接在MCP配置中提供(推荐)或通过 .env 文件。

选项A——MCP配置中的凭据(推荐)

将凭据作为环境变量传递到MCP服务器条目中。这将所有东西放在一个地方,避免了需要 .env 磁盘上的文件。

{
  "mcpServers": {
    "becu": {
      "type": "stdio",
      "command": "python",
      "args": ["/path/to/becu-mcp/server.py"],
      "env": {
        "BECU_USERNAME": "your_username_here",
        "BECU_PASSWORD": "your_password_here"
      }
    }
  }
}

选项B-- .env 文件

创建一个 .env repo目录中的文件:

cp .env.example .env

然后编辑 .env:

BECU_USERNAME=your_username_here
BECU_PASSWORD=your_password_here

服务器通过以下方式自动加载 python-dotenv 在启动时。这 .env 文件被标记为无效。

用法

连接后,您可以问Claude以下问题:

  • “列出我的BECU账户及其余额”
  • “我的支票最近20笔交易是什么?”
  • “我的储蓄账户余额是多少?”
  • “年度付款储蓄账户年初至今赚取了多少利息?”

身份验证和会话

  • 首次运行时,Chromium浏览器窗口会打开,并使用您的凭据登录。
  • 如果需要MFA,您有60秒的时间在浏览器窗口中完成它。
  • 成功登录后,Cookie将保存到 session.json 为了未来的无头跑步。
  • 如果会话到期,浏览器窗口将自动再次打开。
  • session.json 是合法的,不要犯。

发展

项目结构

becu_client.py   # Playwright scraping and HTML parsing logic
server.py        # MCP server (FastMCP) — exposes tools to MCP clients
requirements.txt # Python dependencies
.env.example     # Credential template
session.json     # Persisted browser session cookies (gitignored)

刮擦是如何工作的

becu_client.py 使用Playwright从以下位置加载页面 onlinebanking.becu.org,然后使用BeautifulSoup解析HTML。BECU页面使用 桌锯 响应式表库,在每个表中嵌入列标签 <td> 作为 <b class="tablesaw-cell-label"> 元素。解析器提取这些标签来标识每个单元格的字段,而不管列顺序如何,使其对布局更改具有弹性。

主要功能:

  • _get_page_html() --获取页面,处理身份验证/会话管理
  • _cell_label_and_value() --从表格中提取字段标签和值 <td>
  • _parse_currency() --转换 "$1,234.56" 到 1234.56
  • get_accounts() --抓取摘要页面,按帐号进行重复数据消除
  • get_transactions() --抓取“活动”页面,过滤掉摘要/非事务行

在本地运行

python server.py

或者通过MCP CLI:

mcp dev server.py

添加新工具

  1. 添加一个新的异步函数 becu_client.py 它获取并解析相关的BECU页面。
  2. 将其注册为工具 server.py 使用 @mcp.tool() 装饰师。
  3. 重新连接MCP客户端以获取新工具。

依赖项

包装 用途
mcp MCP服务器框架(FastMCP)
playwright 用于抓取的无头浏览器自动化
beautifulsoup4 HTML解析
python-dotenv 正在从加载凭据 .env