API服务器框架

一个基于NestJS的API服务器框架,集成了模型上下文协议(MCP)和代码生成功能,用于数据库管理。

  • by vonuyvicoo
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 vonuyvicoo/ano-raw-mcp-api

使用说明

什么日子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或纱线

安装

  1. 克隆存储库并安装依赖项:
npm install
  1. 设置环境变量:
cp .env.example .env
# Edit .env and add your DATABASE_URL and other required variables
  1. 生成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 generate

MCP工具

MCP工具在解析器类中使用装饰器定义:

@Tool({
    name: 'get_employee',
    description: "Gets employee record by ID",
    paramsSchema: {
        employee_id: z.string()
    }
})
async getEmployee(payload: Prisma.EmployeeWhereUniqueInput) {
    // Tool implementation
}

建筑

代码生成流程

  1. Prisma 数据模型 -在中定义数据库模型 schema.prisma
  2. 生成的服务 -Prisma生成类型安全的客户端和Zod模式
  3. 商业服务 -自动生成的服务 src/generated/ 提供CRUD操作
  4. 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许可证