什么日子pH项目
一个基于NestJS的API服务器,具有模型上下文协议(MCP)集成、代码生成功能和用于数据库管理的Prisma ORM。
概述
该项目提供了一个现代的API框架,该框架将NestJS与MCP工具相结合,实现了与数据库实体的人工智能交互。该架构支持从数据库模式自动生成服务和MCP解析器,简化开发并保持整个应用程序的一致性。
特性
- NestJS框架:强大、可扩展的服务器端应用程序架构
- 模型上下文协议(MCP):用于数据库操作的AI原生工具接口
- Prisma ORM:支持PostgreSQL的类型安全数据库客户端
- 代码生成:从数据库模式自动生成服务和MCP工具
- LangChain集成:支持LLM驱动的交互
- Zod验证:使用Prisma模型自动生成的Zod类型进行模式验证
技术栈
- 运行时:使用TypeScript的Node.js
- 框架:NestJS 11.x
- 数据库:PostgreSQL与Prisma ORM
- AI/ML:
- @模型上下文协议/sdk - @nestjs mcp/服务器 - 带OpenAI适配器的LangChain
- 验证:带prisma-Zod发电机的Zod
- 测试:杰斯特
项目结构
src/
├── generated/ # Auto-generated services
│ ├── employee.service.ts
│ ├── project.service.ts
│ └── timelog.service.ts
├── mcp/ # MCP implementation
│ ├── interfaces/ # MCP interface definitions
│ ├── tools/ # MCP tool resolvers
│ │ ├── generated/ # Auto-generated MCP resolvers
│ │ └── status/ # Custom MCP tools
│ ├── mcp.module.ts
│ └── mcp.registry.ts
├── llm/ # LLM service integration
├── message/ # Message handling with streaming support
├── prisma/ # Prisma service
└── app.module.ts # Root application module
prisma/
├── schema.prisma # Database schema definition
└── generated/ # Generated Prisma client and Zod schemas
openmapper/
└── mapper.ts # Open schema mapper configuration (in the future, something like this?)入门指南
先决条件
- Node.js(v18或更高版本)
- PostgreSQL数据库
- npm或纱线
安装
- 克隆存储库并安装依赖项:
npm install- 设置环境变量:
cp .env.example .env
# Edit .env and add your DATABASE_URL and other required variables- 生成Prisma客户端并运行迁移:
npx prisma generate
npx prisma migrate dev运行应用程序
热重载开发模式:
npm run start:dev生产方式:
npm run build
npm run start:prod调试模式:
npm run start:debug发展
可用脚本
npm run build-构建应用程序npm run format-使用Prettier格式化代码npm run lint-使用ESLint抓取并修复代码npm run test-运行单元测试npm run test:watch-在监视模式下运行测试npm run test:cov-生成测试覆盖率报告npm run test:e2e-运行端到端测试
数据库模式
该项目使用Prisma来管理数据库模式。修改后 prisma/schema.prisma:
# Create a new migration
npx prisma migrate dev --name your_migration_name
# Regenerate Prisma client and Zod schemas
npx prisma generateMCP工具
MCP工具在解析器类中使用装饰器定义:
@Tool({
name: 'get_employee',
description: "Gets employee record by ID",
paramsSchema: {
employee_id: z.string()
}
})
async getEmployee(payload: Prisma.EmployeeWhereUniqueInput) {
// Tool implementation
}建筑
代码生成流程
- Prisma 数据模型 -在中定义数据库模型
schema.prisma - 生成的服务 -Prisma生成类型安全的客户端和Zod模式
- 商业服务 -自动生成的服务
src/generated/提供CRUD操作 - MCP解析器 -自动生成的解析器
src/mcp/tools/generated/公开AI可访问的工具
MCP集成
MCP(模型上下文协议)集成允许AI模型通过定义良好的工具接口与数据库交互。每个数据库实体都有相应的MCP工具,用于获取、列出、创建、更新和删除等操作。
计划
数据库映射的开放模式
开发一个开放模式系统,用于生成将数据库结构映射到服务和模块的脚本:
- 架构定义:定义一个灵活的映射模式,描述数据库表和应用程序服务之间的关系
- 映射器配置:扩展
openmapper/mapper.ts支持全面的字段映射、转换和关系 - 代码生成管道:创建自动脚本以生成:
- 基于模式定义的服务层实现 - 具有适当依赖注入的模块配置 - 用于复杂数据访问的存储库模式
- 验证层:基于数据库映射自动生成验证模式和DTO
- 文档生成:来自架构定义的自动API文档
从映射生成MCP工具
基于开放模式映射系统自动生成MCP工具:
- 动态工具生成:从数据库映射自动生成MCP解析器类
- 模式到工具管道:使用以下命令将数据库模式转换为MCP工具定义:
- 使用Zod的适当参数模式 - 描述性工具名称和描述 - 类型安全输入/输出处理
- 自定义工具模板:支持基于实体类型的自定义MCP工具模板
- CRUD工具生成:自动生成标准CRUD操作作为MCP工具
- 关系处理:生成处理实体关系和嵌套操作的工具
- 工具注册表:在MCP注册表中自动注册生成的工具
- 配置驱动:支持YAML/JSON配置文件以自定义工具生成行为
维护人员注意事项
- 不要使用
/messages由于与冲突而导致的端点@nestjs/mcp-server - MCP工具输出是同步的
- 消息流是通过提供者层处理的
- 考虑解耦消息处理以避免端点冲突
许可证
MIT许可证
