贷款管理系统

一个基于MCP协议的银行贷款管理系统,提供异步架构、PostgreSQL数据库支持和贷款管理工具。

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

使用说明

🏦 贷款管理系统-MCP服务器

银行贷款管理系统作为MCP服务器(Model Context Protocol)与FastMCP、PostgreSQL和Sqlalchemy一起实现。

📋 描述

该项目提供了一个MCP服务器,可以管理银行贷款及其相关配额。它使用以PostgreSQL为数据库的异步体系结构,并公开了用于查询贷款、客户和付款配额信息的MCP工具。

🎥 视频教程

📺 在YouTube上查看完整课程

在这段视频中,您将逐步解释MCP服务器的实现、项目架构以及如何将PostgreSQL与FastMCP集成。

✨ 特点

  • 🔄 Asynchronous 架构:使用Asyncio和AsyncPG完全异步实现
  • 🗄️ PostgreSQL数据库:健壮和可扩展的存储
  • 🛠️ MCP 服务器:使用模型上下文协议展示工具
  • 🐳 码头:使用Docker Compose轻松部署
  • 📊 贷款管理:全面监测贷款和分期付款
  • 🔍 优化查询:使用sqlalchemy优化的索引和查询

🏗️ 建筑

mcp-database/
├── src/
│   ├── __init__.py
│   ├── database.py      # Configuración de base de datos y pool de conexiones
│   ├── models.py        # Modelos SQLAlchemy (Loan, LoanInstallment)
│   ├── tools.py         # Herramientas MCP expuestas
│   └── utils.py         # Utilidades auxiliares
├── server.py            # Punto de entrada del servidor
├── docker-compose.yml   # Orquestación de servicios
├── Dockerfile           # Imagen del servidor MCP
└── pyproject.toml       # Dependencias del proyecto

🗃️ 数据模型

贷款(贷款)

  • id:贷款的唯一标识符
  • customer_id:客户ID
  • customer_name:客户名称
  • loan_amount:贷款金额
  • interest_rate:利率
  • loan_term_months:月内
  • start_date:开始日期
  • status:Estado(活跃、已支付、违约)
  • remaining_balance:未偿余额

贷款安装(Cuota)

  • id:配额的唯一标识符
  • loan_id:关联贷款ID
  • installment_number:配额数量
  • due_date:到期日期
  • amount_due: 支付金额
  • principal_amount:资本金额
  • interest_amount:利息金额
  • amount_paid:已完成
  • payment_date:付款日期
  • status:Estado(待定、已支付、逾期、部分)

🛠️ 可用的MCP工具

1. get_customer_loans

获取特定客户的所有贷款。

参数:

  • customer_id (STR):客户的唯一ID(例如:CUST001)

返回 : 贷款清单及其所有细节(ID、金额、利率、期限、状态、未偿余额)

2. get_all_customers

获取系统中所有客户端的列表。

返回 : 按字母顺序排列的ID和名称的客户列表

3. get_loan_installments

获取特定贷款的所有分期付款。

参数:

  • loan_id (int):贷款的唯一ID

返回 : 贷款细节和按配额编号排序的完整配额清单

4. get_pending_installments

获取特定贷款的所有未付分期付款。

参数:

  • loan_id (int):贷款的唯一ID

返回 : 状态为“待定”、“逾期”或“部分”的会费清单,包括未缴总额

使用案例:

  • 验证客户在特定贷款中应支付的金额
  • 确定未来期限
  • 计算未付款总额

5. get_overdue_installments

他通过所有贷款从客户那里获得所有到期的分期付款。

参数:

  • customer_id (str):客户的唯一ID

返回 : 客户所有到期分期付款清单、到期总金额、到期分期付款金额和逾期天数

使用案例:

  • 识别拖欠客户
  • 计算延迟罚款
  • 生成收款报告

6. get_customer_summary

获取按名称搜索的客户的完整和详细摘要。

参数:

  • customer_name (str):客户名称(支持部分搜索)

返回 : 完整摘要包括:

  • 客户信息(ID和名称)
  • 一般统计:
    • 贷款和活跃贷款总额
    • 借款总额
    • 未偿余额总额
    • 支付总额
    • 未付金额
    • 到期金额
    • 到期和未缴摊款金额
  • 每笔贷款的细节

使用案例:

  • 客户360°视图
  • 信用风险评估
  • 支付行为分析
  • 执行报告

🚀 安装和使用

先决条件

  • Docker y Docker编写
  • Python 3.14+(用于本地开发)

使用Docker Compose部署

  1. 克隆存储库
git clone <repository-url>
cd mcp-database
  1. 配置环境变量(可选)

创建一个新文件 .env 在项目的根源上:

POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_DB=loans_db
POSTGRES_PORT=5432
POOL_SIZE=20
DATABASE_ECHO=False
  1. 开始服务
docker-compose up -d

这将开始:

  • 5432端口上的PostgreSQL
  • 端口8000上的MCP服务器
  1. 验证状态
docker-compose ps
docker-compose logs -f mcp_server

地方发展

  1. 安装依赖项
pip install -e .
  1. 配置数据库
export DATABASE_URL="postgresql+asyncpg://postgres:password@localhost:5432/loans_db"
  1. 运行服务器
python server.py

🔧 配置

环境变量

变量 描述 默认值
DATABASE_URL 连接到PostgreSQL的URL postgresql+asyncpg://postgres:password@postgres:5432/loans_db
POOL_SIZE 连接池大小 20
DATABASE_ECHO SQL日志 False
POSTGRES_USER PostgreSQL用户 postgres
POSTGRES_PASSWORD PostgreSQL密码 password
POSTGRES_DB 数据库名称 loans_db

连接池

服务器使用配置为:

  • 池大小:20个连接
  • 最大溢出:额外10个连接
  • 池超时:30秒
  • 游泳池回收:3600秒

📡 服务器API

MCP服务器通过服务器发送事件(SSE)在以下位置公开其工具:

http://localhost:8000

服务器日志

docker-compose logs -f mcp_server

👥 作者