# mcp-cms **Repository Path**: mcp_qc/mcp-cms ## Basic Information - **Project Name**: mcp-cms - **Description**: mcp服务后台管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-13 - **Last Updated**: 2026-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MCP 后台管理系统 一个功能完整的 Spring Boot 后台管理系统,包含用户管理、角色管理、菜单管理、功能管理和文档管理功能。 ## 技术栈 - **后端**: Spring Boot 3.x + Spring Data JPA + Spring Security - **数据库**: PostgreSQL - **认证**: JWT - **构建工具**: Maven ## 功能特性 ### 1. 用户管理 - 用户列表查看 - 用户增删改查 - 用户状态管理 - 用户密码重置 ### 2. 角色管理 - 角色列表查看 - 角色增删改查 - 角色状态管理 ### 3. 菜单管理 - 树形菜单展示 - 支持两级菜单 - 菜单排序 - 菜单状态管理 ### 4. 功能管理 - 功能权限点管理 - 功能 Key 配置 - 功能名称维护 ### 5. 文档管理 - 文档列表查看 - 文档详情查看 - 文档内容编辑 ### 6. 认证与授权 - 用户登录 - JWT Token 认证 - 修改密码 - 权限控制 ## 快速开始 ### 1. 数据库初始化 项目使用双库,分别执行初始化脚本: ```bash # 系统库(用户 / 角色 / 菜单 / 权限) psql -h datalocal -U postgres -d cms -f sql/system_init.sql # MCP 业务库(文档 / 令牌 / 用户令牌绑定) psql -h datalocal -U postgres -d mcp_db -f sql/mcp_init.sql ``` ### 2. 修改配置 编辑 `src/main/resources/application.yml`,修改数据库连接信息: ```yaml spring: datasource: cms: jdbc-url: jdbc:postgresql://localhost:5432/cms username: postgres password: your_password mcp: jdbc-url: jdbc:postgresql://localhost:5432/mcp_db username: postgres password: your_password ``` ### 3. 编译运行 ```bash mvn clean install mvn spring-boot:run ``` ### 4. 访问系统 打开浏览器,访问: `http://localhost:8080/` **默认账号**: - 用户名: `admin` - 密码: `admin123` ## 项目结构 ``` mcp-cms/ ├── sql/ # SQL 脚本 │ ├── system_init.sql # 系统库 (cms) 初始化 │ └── mcp_init.sql # MCP 业务库 (mcp_db) 初始化 ├── src/main/ │ ├── java/com/qc/cms/ │ │ ├── common/ # 公共模块 │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 实体类 │ │ ├── repository/ # 数据访问层 │ │ ├── security/ # 安全认证模块 │ │ ├── service/ # 业务服务层 │ │ └── McpCmsApplication.java │ └── resources/ │ └── application.yml # 应用配置 └── pom.xml ``` ## API 接口 ### 认证相关 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/change-password` - 修改密码 - `GET /api/auth/user` - 当前登录用户 - `GET /api/auth/menus` - 当前用户侧栏菜单树 ### 用户管理 - `GET /api/user` - 获取用户列表 - `GET /api/user/{id}` - 获取用户详情 - `POST /api/user` - 创建用户 - `PUT /api/user/{id}` - 更新用户 - `DELETE /api/user/{id}` - 删除用户 ### 角色管理 - `GET /api/role` - 获取角色列表 - `GET /api/role/{id}` - 获取角色详情 - `POST /api/role` - 创建角色 - `PUT /api/role/{id}` - 更新角色 - `DELETE /api/role/{id}` - 删除角色 ### 菜单管理 - `GET /api/menu/tree` - 获取菜单树 - `GET /api/menu/parents` - 获取顶级菜单 - `GET /api/menu/{id}` - 获取菜单详情 - `POST /api/menu` - 创建菜单 - `PUT /api/menu/{id}` - 更新菜单 - `DELETE /api/menu/{id}` - 删除菜单 ### 系统元数据 - `GET /api/system/functions` - 全部内置功能点(来自 `AppFunction` 枚举,供菜单绑定与角色授权 UI) ### 文档管理 - `POST /api/document` - 创建文档 - `GET /api/document` - 获取文档列表(分页) - `GET /api/document/{documentId}` - 获取文档详情 - `PUT /api/document/{documentId}` - 更新文档内容 ## 数据库 全新环境分别执行 `sql/system_init.sql`(库 `cms`)与 `sql/mcp_init.sql`(库 `mcp_db`)。功能点由 Java 枚举 `AppFunction` 定义,不再使用 `sys_function` 表。 **系统库 cms** | 表名 | 说明 | |------|------| | `sys_user` | 用户表 | | `sys_user_role` | 用户角色关联表 | | `sys_role` | 角色表 | | `sys_menu` | 菜单表 | | `sys_role_menu` | 角色菜单关联表 | | `sys_menu_function` | 菜单功能关联表(`function_key`) | | `sys_role_function` | 角色功能关联表(`function_key`) | **MCP 业务库 mcp_db** | 表名 | 说明 | |------|------| | `documents` | RAG 文档元信息表 | | `document_chunks` | 文档分块表(含 pgvector 向量) | | `mcp_token` | MCP 数据令牌表 | | `mcp_user_token` | CMS 用户与令牌绑定表 | ## 页面路由 菜单地址统一以 `/s` 为前缀(前端 `route-config.js`、后端 `WebRouteConstants.MENU_PATH_PREFIX`,修改时需两处同步)。 - `/login` - 登录页面(非菜单地址) - `/s/dashboard` - 首页 - `/s/user` - 用户管理页面 - `/s/role` - 角色管理页面 - `/s/menu` - 菜单管理页面 - `/s/document` - 文档管理页面 - `/s/token` - 令牌管理页面 - `/s/user-token` - 用户令牌绑定页面 - `/s/change-password` - 修改密码页面 ## 开发说明 ### 类名规范 - **Entity**: `*Entity` 后缀(如 `SysUserEntity`) - **请求 DTO**: `*ReqDTO` 后缀(如 `LoginReqDTO`) - **响应 DTO**: `*RespDTO` 后缀(如 `LoginRespDTO`) ### 类注释位置 类注释必须位于类注解(如 `@RestController`、`@Entity`)和 package 之后、import 之后。 ### 依赖版本 项目继承 `com.qc.tomorrow:parent`,Spring Boot 相关依赖建议使用父 POM 定义的版本。