内容
# T-Bank MCP
**T-Bank(Т-Банк)MCP** — 面向 Claude Code、Codex、ChatGPT 等其他支持 MCP 的智能代理的移动银行 API 服务器。
## 功能特点
- **32 个工具**:账户、操作、订购杂货、转账、消息、投资等
- **6 种技能**:订购杂货、支付账单、转账、预算分析、投资建议、登录
- **自愈 TLS**:处理俄罗斯受信任的根 CA + HARICA 证书轮换
- **杂货结账**:搜索 → 购物车 → 订单 → 支付(已验证的端到端)
- **安全登录**:密码/PIN 码保留在本地 CLI 或环境变量中,不进入 LLM 上下文
## 快速安装
```bash
git clone https://github.com/icyberdeveloper/tbank-mcp.git
cd tbank-mcp
python -m venv .venv && . .venv/bin/activate
pip install -e .
python -m playwright install chromium
# MCP 服务器:
claude mcp add tbank -- ./.venv/bin/python -m src.server
# 技能:
cp -r skills/* ~/.claude/skills/
```
## 🔒 登录 — 安全(密码不会被泄露给代理)
密码和 PIN 码是秘密。它们 **不会被传递到模型(LLM)上下文**。
登录由本地脚本执行或通过环境变量传递。
### 方法 1(推荐):本地 CLI
```bash
cd tbank-mcp
# 脚本会要求输入密码(getpass 不会在终端中显示):
.venv/bin/python login_cli.py +79991234567
# [1/3] 登录(+79991234567) ... SMS 已发送
# [2/3] SMS 代码:**** ← 输入短信验证码(隐藏输入)
# [3/3] 密码(不显示):**** ← 输入密码(隐藏输入)
# ✓ 完成!session.json 已保存(权限 0600)。
# 在此仓库中启动 Claude Code。
# 密码 **不会被传递给代理** — 它使用保存的会话。
```
或使用环境变量中的密码(CI/脚本):
```bash
TBANK_PASSWORD="密码" .venv/bin/python login_cli.py +79991234567
```
登录后 **启动 Claude Code**。代理会看到保存的会话并在无密码的情况下工作。
密码永远不会进入 LLM 上下文。
### 方法 2:通过代理(方便,但密码可见 LLM)
如果您愿意将密码传递给代理:
```
> 登录(+79991234567)
> [短信验证码] 1234
> confirm_otp("1234")
> [银行要求输入密码]
> confirm_password("您的密码")
```
⚠️ **注意:** 密码进入了模型上下文和调用日志。
对于敏感账户,请使用方法 1。
### 方法 3:环境变量(CI/自动化)
```bash
export TBANK_PASSWORD="密码"
export TBANK_PHONE="+79991234567"
# 登录()会自动从环境变量中获取密码,然后执行 confirm_otp()
```
## 其他代理(Codex、ChatGPT、Hermes、OpenClaw)
```jsonc
{
"mcpServers": {
"tbank": {
"command": "/path/to/tbank-mcp/.venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/path/to/tbank-mcp"
}
}
}
```
## 工具(32 个)
| 分组 | 工具 |
|---|---|
| **登录** | `login`, `confirm_otp`, `confirm_password`, `confirm_pin` |
| **会话** | `refresh_session`, `session_status`, `keepalive` |
| **读取** | `list_accounts`, `list_operations`, `spending_categories`, `operations_histogram`, `get_data` |
| **杂货** | `grocery_stores`, `grocery_search`, `grocery_plan_order`, `grocery_add_to_cart`, `grocery_cart`, `grocery_checkout`, `grocery_attempts`, `grocery_order_status` |
| **消息** | `messenger_conversations`, `messenger_messages`, `messenger_send`, `messenger_unread` |
| **资金** | `transfer`, `payment_commission` |
| **投资** | `invest_accounts`, `invest_portfolio`, `invest_operations`, `invest_securities` |
| **实用** | `flows`, `diagnostics` |
`get_data(section)` 涵盖 60+ 个接口:订阅、信用计划、报表、凭证、投资账户、投资组合等。
杂货工具(`grocery_search`, `grocery_plan_order`, `grocery_add_to_cart`, `grocery_cart`, `grocery_checkout`)需要 `app_id` + `point_id`,来自 `grocery_stores()` — 没有默认商店,因此添加/购物车/结账始终在同一个购物车中操作(添加后不会出现“购物车为空”)。
## 技能(6 种)
| 技能 | 功能 |
|---|---|
| `tbank-grocery-order` | 食谱 → 搜索 → 购物车 → 确认 → 结账 |
| `tbank-bill-pay` | 电话、互联网、公用事业、税收、罚款 |
| `tbank-transfer-money` | P2P、СБП、账户转账 |
| `tbank-budget-analyzer` | 消费分析、订阅审计、储蓄建议 |
| `tbank-invest-advisor` | 投资组合、损益、再平衡、税收优化 |
| `tbank-login` | 多步登录、会话管理 |
## 安全
- **`session.json`** — 典型路径 `~/.local/share/tbank-mcp/session.json`
(可以通过环境变量 `TBANK_SESSION` 重定义),权限 0600(仅所有者可访问)。包含令牌。
同一个文件被 `login_cli.py` 和 MCP 服务器读取,无需手动配置。
MCP 在启动时仅记录路径/大小/访问权限,不包含令牌和 Cookie。
- **密码/PIN** — 不在 git 中,不在代码中,不在 LLM 上下文中(如果使用 `login_cli.py`)。
- **0 个硬编码秘密** 在代码中(通过审计验证)。
- **`events.jsonl` + `attempts.jsonl`** — 审查诊断日志(`~/.local/share/tbank-mcp/`)。
仅包含步骤 / http 状态 / 原因 / 金额 / 订单 ID — 永远不会包含令牌、Cookie、地址、电话、电子邮件、账户号码。
可以放心地在调试时分享(可被 `diagnostics` 工具读取)。
- 资金工具(`transfer`, `grocery_checkout`)需要确认。
## 免责声明
仅供个人使用您自己的 T-Bank 账户。与 T-Bank 无关。