MCP推送通知设置同步
MCP终端用户的一个集中式模块,用于管理多个设备上的推送通知设置,确保一致的偏好,防止重复警报,并安全处理设置更新。
______________________________________________________________________
特性
- 集中管理 每个用户帐户的推送通知设置
- 同步 链接到用户的所有设备的设置更改
- 防止重复通知 适用于拥有多台设备的用户
- 设备级启用/禁用 用于推送通知
- 安全传输和存储 设置更新(传输和静止加密)
- 稳健的错误处理 用于未经授权或过期的会话
- 审核日志记录 所有设置更改
______________________________________________________________________
技术栈
- 后端: Python 3.11+,快速API
- 数据库: PostgreSQL
- ORM: SQL炼金术
- 迁移: 蒸馏器
- 身份验证: PyJWT,OAuth2
- 加密: 密码学(Fernet)
- 测试: pytest,pytest-cov
- 集装箱化: 码头工人
______________________________________________________________________
设置和安装
1.克隆存储库
git clone https://github.com/your-org/mcp-push-sync.git
cd mcp-push-sync2.配置环境变量
为生产安全设置以下环境变量:
FERNET_KEY(用于加密的32字节base64字符串)SECRET_KEY(JWT密钥)DATABASE_URL(PostgreSQL连接字符串)
您可以使用 .env 本地开发文件。
3.使用Docker构建和运行
docker build -t mcp-push-sync .
docker run -p 8000:8000 --env-file .env mcp-push-sync4.手动本地设置(无Docker)
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
export FERNET_KEY=your_fernet_key
export SECRET_KEY=your_jwt_secret
export DATABASE_URL=postgresql://user:pass@localhost:5432/dbname
uvicorn src.main:app --reload5.数据库迁移
alembic upgrade head______________________________________________________________________
API终点
看 src/main.py 用于完整路由。
GET /users/me-获取当前用户信息GET /users/me/devices-列出用户的所有设备GET /users/me/notification-settings-获取用户的通知设置PUT /users/me/notification-settings-更新/同步通知设置GET /devices/{device_id}/settings-获取设备通知设置PUT /devices/{device_id}/settings-更新设备通知设置POST /notifications/send-发送推送通知(无重复项)GET /health-健康检查
所有端点都需要通过JWT进行身份验证。
______________________________________________________________________
安全
- 所有敏感数据在传输(TLS)和静止(Fernet、PostgreSQL)时都是加密的。
- JWT身份验证和会话管理。
- 所有设置更改和访问尝试的审核日志。
- 设备级和用户级授权检查。
______________________________________________________________________
测试
使用以下命令运行所有测试:
pytest --cov=src测试文件位于 tests/ 目录。
______________________________________________________________________
贡献
- 分叉仓库并创建功能分支(
git checkout -b feature/xyz) - 提交您的更改(
git commit -am 'Add feature xyz') - 推到分支(
git push origin feature/xyz) - 创建新的Pull请求
______________________________________________________________________
许可证
MIT许可证
______________________________________________________________________
联系
如有疑问或需要支持,请联系 your-team@your-org.com
