银行模拟服务器

一个实现Model Context Protocol (MCP)的银行模拟服务器,为AI代理提供账户查询、转账和任务管理功能。

  • by SAUL-VIDAL-NTT
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 hvidalsi/banking-mcp

使用说明

银行MCP服务器

该服务器实现 模型上下文协议(MCP) 提供模拟银行系统。它旨在供人工智能代理使用,使他们能够查询账户、进行转账和管理任务。

概述

服务器暴露了这么多 工具(工具) 用于代理,例如 端点HTTP个性化设置 直接互动或外部整合。使用 FastMCP 作为基础和 SQLModel 用于数据持久化。

主要功能

  • 用户管理:注册和列出用户(客户)。
  • 账户管理:创建账户、查询余额和按身份证搜索账户。
  • 交易:在具有余额验证的账户之间转移资金。
  • 任务管理:代理记录和跟踪自己进展的工具。
  • 监测:系统健康终结点。

📂 项目结构


src/
├── controllers/        # Controladores de lógica de negocio (Account, Transaction, User)
│   ├── account.py      # Lógica de cuentas bancarias
│   ├── transaction.py  # Lógica de transferencias
│   └── user.py         # Lógica de gestión de usuarios
├── core/               # Configuración central
│   ├── settings.py     # Variables de entorno y configuración
│   └── logger.py       # Configuración de logging
├── db/                 # Base de datos
│   └── database.py     # Conexión y sesión de base de datos
├── routes/             # Endpoints API (REST)
│   ├── account.py      # Rutas para cuentas
│   ├── transaction.py  # Rutas para transacciones
│   └── user.py         # Rutas para usuarios
├── services/           # Servicios de negocio adicionales
├── tools/              # Herramientas MCP expuestas
│   ├── banking.py      # Tools de operaciones bancarias
│   └── task_tool.py    # Tools de gestión de tareas
├── utils/              # Utilidades y decoradores
└── main.py             # Punto de entrada y configuración del servidor


🛠️ MCP工具

这些工具暴露在外,以便特工直接使用。

银行工具(banking.py)

工具 描述 参数
get_user_accounts 检索与身份证相关的所有银行账户。 dni (str)
get_main_user_account 返回用户的主账户(余额最大的账户)。 dni (str)
make_transfer 在两个账户之间进行转账。 from_account_number (str), to_account_number (str), amount (浮动)

任务管理工具(task_tool.py)

工具 描述 参数
create_task 创建新的跟踪任务。 title (str), description (STR,可选)
get_task 按ID获取任务的详细信息 task_id (str)
update_task_progress 更新任务的进度百分比。 task_id (str), progress (浮动0-100)
list_tasks 列出所有注册的任务。 -

🔌 自定义API端点

可供外部使用的HTTP RESTful终结点。

用户(routes/user.py)

  • 发布 /user/add
    • 创建新用户。
    • 主体: {"dni": "...", "name": "..."}
  • 获取 /user/list
    • 列出所有注册用户。

账户(routes/account.py)

  • 发布 /account/add
    • 创建一个新的银行账户。
    • 主体: {"account_number": "...", "account_name": "...", "balance": 100.0, "user_id": "..."}
  • 获取 /account/list
    • 列出所有帐户。
  • 获取 /account/dni/{dni}
    • 获取用户的身份证帐户。
  • 获取 /account/main/{dni}
    • 通过身份证获取主帐户。

交易(routes/transaction.py)

  • 发布 /transaction/transfer
    • 执行资金转移。
    • 主体: {"from_account_number": "...", "to_account_number": "...", "amount": 50.0}

系统(routes/health_check.py)

  • 获取 /health
    • 验证服务器的状态。

📊 流程图(传输)

sequenceDiagram
    participant Agent
    participant MCP as MCP Server
    participant DB as Database

    Agent->>MCP: Call tool: get_user_accounts(dni)
    MCP->>DB: Query accounts by DNI
    DB-->>MCP: Return accounts list
    MCP-->>Agent: JSON with accounts

    Note over Agent: Agent selects source account

    Agent->>MCP: Call tool: make_transfer(from, to, amount)
    MCP->>DB: Begin Transaction
    MCP->>DB: Check balance source
    MCP->>DB: Deduct from source
    MCP->>DB: Add to dest
    MCP->>DB: Commit Transaction
    DB-->>MCP: Success
    MCP-->>Agent: Transfer Receipt

执行

要启动服务器:

python src/main.py