银行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