🅿️ 停车管理MCP服务器
一个全面的模型上下文协议(MCP)服务器,用于使用PostgreSQL和Prisma ORM管理3层楼300个停车位的停车设施。
📋 特性
- 300个停车位 分布在3层楼(每层100个座位)
- PostgreSQL数据库 使用Prisma ORM实现可靠的数据持久性
- 多种斑点类型:标准、残疾人、电动和贵宾
- 车辆管理:使用车主信息登记和跟踪车辆
- 预订系统:保留和释放交易安全的停车位
- 实时统计:按楼层和类型获取入住率和可用性
- 12个MCP工具 用于综合停车操作
🏗️ 建筑
┌─────────────────────────────────────────┐
│ MCP Tools Layer │
│ (12 tools for parking operations) │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Services Layer │
│ - ParkingService │
│ - ReservationService │
│ - VehicleService │
│ - InitializationService │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Database Layer │
│ - Prisma Client │
│ - PostgreSQL Database │
└─────────────────────────────────────────┘🚀 快速开始
先决条件
- Node.js (v18或更高版本)
- PostgreSQL (v14或更高版本)
- npm 或 纱线
安装
- 克隆存储库
git clone https://github.com/BlackWarTurtle/pk-mcp-testing.git
cd pk-mcp-testing- 安装依赖项
npm install- 配置环境变量
cp .env.example .env编辑 .env 并更新数据库连接:
DATABASE_URL="postgresql://username:password@localhost:5432/parking_db?schema=public"- 设置数据库
# Generate Prisma client
npm run db:generate
# Run database migrations
npm run db:migrate- 启动服务器
npm start🛠️ 可用的MCP工具
初始化工具
initialize_parking-初始化3层楼的300个停车位get_database_status-检查数据库状态和统计数据reset_database-重置并重新初始化整个系统
停车位工具
register_parking_spot-手动注册新的停车位get_available_spots-使用过滤器查询可用位置(楼层、类型)get_spot_status-获取特定地点的详细信息list_all_spots-列出所有带有可选过滤器的地点get_parking_statistics-获取全面的停车统计数据
预订工具
reserve_spot-为车辆预留停车位release_spot-释放一个停车位并结束停车过程get_active_reservations-列出所有活动预订
车辆工具
register_vehicle-在系统中注册新车get_vehicle_info-获取车辆详细信息和停车历史记录
📊 数据库模式
停车场
- 货位号(例如“1-001”、“2-050”)
- 楼层(1-3)
- 状态(可用、占用、保留、维护)
- 类型(标准、禁用、电动、VIP)
车辆
- 车牌(唯一)
- 所有者姓名和电话
- 车辆类型
预订
- 将车辆连接到停车位
- 开始和结束时间
- 状态(活动、已完成、已取消)
📝 使用示例
初始化停车系统
// Call the initialize_parking tool
// This creates 300 spots across 3 floors预订停车位
// Call reserve_spot with:
{
"spotNumber": "1-001",
"licensePlate": "ABC123",
"ownerName": "John Doe",
"ownerPhone": "+34600111222",
"vehicleType": "sedan"
}获取2楼的可用位置
// Call get_available_spots with:
{
"floor": 2
}释放停车位
// Call release_spot with:
{
"spotNumber": "1-001"
}获取停车统计数据
// Call get_parking_statistics
// Returns overall stats, stats by floor, and stats by type🗂️ 项目结构
pk-mcp-testing/
├── config/
│ ├── constants.js # System constants and enums
│ └── database.js # Prisma client singleton
├── prisma/
│ └── schema.prisma # Database schema
├── services/
│ ├── parkingService.js # Parking spot operations
│ ├── reservationService.js # Reservation management
│ ├── vehicleService.js # Vehicle tracking
│ └── initializationService.js # Database initialization
├── tools/
│ └── parkingTools.js # MCP tool registrations
├── utils/
│ └── errorHandler.js # Custom error classes
├── .env # Environment variables
├── .env.example # Environment template
├── package.json # Dependencies and scripts
├── server.js # Main server entry point
└── README.md # This file🔧 发展
可用脚本
npm start-启动MCP服务器npm run dev-从文件更改时自动重新加载开始npm run db:generate-生成Prisma客户端npm run db:migrate-运行数据库迁移npm run db:push-将架构更改推送到数据库npm run db:studio-打开Prisma Studio(数据库GUI)
数据库管理
在Prisma Studio中查看数据库:
npm run db:studio重置数据库: 使用 reset_database MCP工具或手动:
npx prisma migrate reset🎯 斑点分布
每层楼有100个座位,分布如下:
- 5个景点 残疾人停车场(001-005)
- 10个景点 电动汽车(006-015)
- 5个景点 VIP(016-020)
- 80个景点 标准停车场(021-100)
点编号格式: {Floor}-{Number} (例如,“1-001”、“2-050”、“3-100”)
🔒 错误处理
该系统包括全面的错误处理:
SpotNotFoundError-停车位不存在SpotNotAvailableError-位置已被占用VehicleNotFoundError-车辆未登记InvalidFloorError-楼层号超出范围DuplicateSpotError-点已存在DuplicateVehicleError-车辆已登记
📄 许可证
ISC
👤 作者
黑龟
🤝 贡献
欢迎投稿、问题和功能请求!
⭐ 表示支持
给一个⭐️ 如果这个项目对你有帮助!
