内容
# AI 驱动的安全教程管理系统
一个全栈、AI 驱动的 Web 应用程序,允许用户使用自然语言无缝管理教程数据库。该系统具有一个嵌入式 MCP(模型上下文协议)服务器,支持大型语言模型(LLM)代表用户动态执行 RESTful CRUD 操作,严格遵守基于 JWT 的角色访问控制(RBAC)。
## 🚀 功能特点
* **自然语言数据库操作**:与嵌入式 AI 聊天,创建、读取、更新或删除教程。
* **零信任 AI 代理**:AI 无法直接访问数据库。它必须使用活动用户的 JIT(即时)会话令牌通过标准后端 API 验证 REST 请求。
* **视觉自动登录和 UI 同步**:AI 聊天可以通过对话提示以编程方式验证用户,立即同步浏览器的 UI 状态(例如,自动登录、转换仪表板和更新角色而无需刷新页面)。
* **基于角色的访问控制(RBAC)**:严格执行权限。管理员具有完整的 CRUD 功能,而标准用户仅限于只读操作。AI 会主动拒绝未经授权的操作。
* **现代 Vanilla UI**:快速、响应式的 glassmorphism 风格前端,带有始终存在的浮动聊天窗口小部件。
## 🏗️ 系统架构
下面是系统的详细架构流程图。前端与 Express 后端通信,后端包含标准 REST 端点和内部 AI 聊天引擎。聊天引擎安全地启动一个隔离的 MCP 服务器,将 LLM 工具调用映射回身份验证的 API 请求。
```mermaid
graph TD
classDef ui fill:#3b82f6,stroke:#1d4ed8,stroke-width:2px,color:#fff
classDef backend fill:#10b981,stroke:#047857,stroke-width:2px,color:#fff
classDef db fill:#f59e0b,stroke:#b45309,stroke-width:2px,color:#fff
classDef ai fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
classDef mcp fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
User((用户)) -->|交互| UI[浏览器 UI / 聊天窗口]:::ui
subgraph 浏览器前端
UI
end
UI -->|REST + JWT 头部| API[Express REST API]:::backend
UI -->|POST /api/chat + 会话 ID| ChatEngine[后端 AI 聊天引擎]:::ai
subgraph Node.js 服务器
API
ChatEngine
end
API <-->|Mongoose 查询| DB[(MongoDB)]:::db
ChatEngine <-->|聊天完成| LLM[OpenAI / OpenRouter API]:::ai
ChatEngine <-->|MCP 工具执行| MCPServer[本地 MCP SDK 服务器]:::mcp
subgraph 专用工具
MCPServer -->|自动注入 JWT| API
end
```
## 🛠️ 技术栈
* **前端**:Vanilla HTML5、CSS3、JavaScript
* **后端框架**:Node.js、Express.js
* **数据库**:MongoDB(通过 Mongoose ORM)
* **安全**:JSON Web Tokens(JWT)、bcrypt.js
* **AI 集成**:`@modelcontextprotocol/sdk`(MCP 客户端/服务器)、`openai` SDK(配置为 OpenRouter 兼容性)
## 📦 前置条件
确保在设置项目之前已安装以下内容:
* [Node.js](https://nodejs.org/)(v18.x 或更高版本)
* [MongoDB](https://www.mongodb.com/)(在 `mongodb://localhost:27017/` 上本地运行或通过云 URI)
* OpenRouter 或 OpenAI 的 API 密钥(用于 LLM 引擎)。
## ⚙️ 安装和设置
1. **克隆仓库:**
```bash
git clone <您的仓库 URL>
cd node-express-mongodb
```
2. **安装核心依赖项:**
```bash
npm install
```
3. **安装和构建 MCP 服务器:**
AI 工具包含在子项目中,使用 TypeScript 构建。
```bash
cd tutorials-mcp-server
npm install
npm run build
cd ..
```
4. **环境变量:**
在根目录中创建 `.env` 文件,并添加您的 AI 提供商凭证。如果使用 OpenRouter 的免费模型,请使用 `sk-or-` 前缀。
```env
OPENAI_API_KEY=sk-or-您的 API 密钥
```
5. **初始化数据库角色:**
`server.js` 中的初始化脚本会在首次执行时自动在 MongoDB 中创建默认的 `user` 和 `admin` 角色。
## 🚀 运行应用程序
启动后端服务器。后端将自动在后台启动已构建的 MCP 服务器进程。
```bash
node server.js
```
服务器将在端口 `8080` 上运行。
打开浏览器,导航到:**`http://localhost:8080`**
## 💡 使用指南
### 直接 API / 手动使用
您可以使用提供的 UI 框手动登录。首次设置管理员帐户时,点击“注册”,然后使用 MongoDB Compass 手动将管理员角色 ObjectId 注入用户记录中,或者使用聊天代理通过预配置的 `claude_bot` 模拟凭证安全登录。
### AI 聊天窗口 💬
在任何时候(甚至在登录前),点击右下角的浮动聊天气泡与 LLM 交互。
**示例提示:**
* *"以管理员身份登录"* - 自动验证您,更新浏览器 UI,并返回管理员 JWT。
* *"以用户身份登录并向我显示所有已发布的教程"* - AI 在一轮对话中链接登录和获取命令。
* *"创建一个名为 'Intro to React' 的新教程,描述为 'Hooks 基础知识',并将其标记为已发布。"* - 使用自然语言轻松执行数据库写入操作。(如果您是标准用户,AI 将礼貌地拒绝此操作)。
* *"注销用户并切换到管理员帐户。"* - AI 主动注销您,指示 UI 清除本地状态并在视觉上切换帐户。