MCP推送通知首选项
一个安全、可扩展的系统,供MCP最终用户管理特定事件类型的推送通知偏好,并对产品执行CRUD操作。使用Node.js(Express)、React、TypeScript、PostgreSQL、JWT身份验证和加密存储构建。
______________________________________________________________________
特性
- 推送通知首选项
- 查看、启用或禁用每种支持的事件类型的推送通知。 - 首选项在静止时被安全地存储和加密。 - 只有经过身份验证的用户才能修改自己的设置。 - 强大的错误处理和原子更新。
- 产品管理
- 产品的完整CRUD(创建、读取、更新、删除)操作。 - RESTful API设计。 - 安全、经过身份验证的访问。
- 安全与合规
- 基于JWT的身份验证和授权。 - 静态加密的首选项(AES-256-GCM,具有KMS就绪设计)。 - 集中错误处理。 - Docker化以实现一致的本地开发。
- 测试与质量
- 使用Jest和Supertest进行自动化测试。 - ESLint/Pretier用于代码质量。 - Swagger-ready API文档。
______________________________________________________________________
技术栈
- 前端: React(TypeScript)
- 后端: Node.js(Express、TypeScript)
- 数据库: PostgreSQL
- ORM: 类型ORM
- 认证: JWT公司
- 加密: AES-256-GCM(KMS就绪)
- 集装箱化: Docker,Docker编写
- 测试: 是的,超级测试
- Linting: ESLint,Prettier
______________________________________________________________________
入门指南
先决条件
地方发展
- 克隆存储库:
git clone https://github.com/your-org/mcp-push-notification-preferences.git
cd mcp-push-notification-preferences- 启动所有服务(前端、后端、数据库):
docker-compose up --build- 前端: http://localhost:3000 - 后端API: http://localhost:4000/api - PostgreSQL: 本地主机:5432
- 停止服务:
docker-compose down______________________________________________________________________
环境变量
看 docker-compose.yml 对于所有必需的环境变量。
- 后端
- PORT:API端口(默认值:4000) - DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME:PostgreSQL连接 - JWT_SECRET:JWT签名密钥 - PREFERENCES_ENCRYPTION_KEY:AES-256-GCM的32字节密钥 - CORS_ORIGIN:允许的前端来源
- 前端
- REACT_APP_API_BASE_URL:后端API基本URL
______________________________________________________________________
API终点
认证
GET /api/auth/me--获取当前经过身份验证的用户POST /api/auth/logout--注销用户
通知首选项
GET /api/notification-preferences/:userId--获取首选项(经过身份验证,仅限自己的用户)PUT /api/notification-preferences/:userId--更新首选项(仅限经过身份验证的用户)
产品
GET /api/products--列出所有产品POST /api/products--创建产品PUT /api/products/:productId--更新产品DELETE /api/products/:productId--删除产品
______________________________________________________________________
测试
- 运行后端测试:
docker-compose exec backend npm test- 运行前端测试:
docker-compose exec frontend npm test______________________________________________________________________
代码质量
- 棉绒:
npm run lint - 格式:
npm run format
______________________________________________________________________
安全说明
- 所有敏感的偏好在静止时都是加密的。
- 只有经过身份验证的用户才能访问/修改自己的首选项。
- JWT机密和加密密钥应得到安全管理(在生产中使用KMS)。
- 所有的变化都是原子性的;部分更新被阻止。
______________________________________________________________________
扩展和自定义
- 添加新的事件类型: 更新前端和后端的事件类型列表。
- 与真正的推送通知服务集成: 扩展后端逻辑以触发已启用事件的推送通知。
- Swagger/OpenAPI: 将Swagger装饰器添加到API文档的后端路由。
______________________________________________________________________
故障排除
- 数据库连接问题: 确保Docker正在运行,且端口未被阻塞。
- JWT/auth错误: 检查
JWT_SECRET以及令牌有效性。 - 加密错误: 确保
PREFERENCES_ENCRYPTION_KEY是32字节。
______________________________________________________________________
许可证
麻省理工学院
______________________________________________________________________
