registry/README.md
cheney 963046edd9
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 39s
feat: 新增 MCP 服务,支持 AI 自动操作项目与配置
- Streamable HTTP 传输,/mcp 端点,Bearer token 鉴权(data/mcp.json,已忽略)
- 项目/配置完整增删改查工具,删除为两步式确认(delete_* + confirm_delete_*)
- 写操作遵循系统模式,readonly 下拒绝
- 依赖 @modelcontextprotocol/sdk,新增单元测试
2026-09-08 10:03:09 +08:00

96 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Registry - 微服务配置管理中心
基于 Web 的注册表风格微服务配置管理系统。以项目为单位管理配置,支持机房、环境、分组三个维度划分,提供规划、编辑、只读三种工作模式。
## 快速开始
```bash
npm install
npm start
```
启动后访问 http://localhost:3000
## 功能概览
- **项目管理**:以项目为单位隔离配置;维度开关(机房/环境/分组)创建时确定,后续不可修改。
- **注册表风格界面**:左侧树形导航(项目 → 机房 → 环境 → 分组 → 配置),右侧键值详情表格。
- **配置项**:路径形式的 keyvalue 支持 string/number/boolean/json 类型,每项必须有说明。
- **三种模式**
- 规划模式:定义配置结构(类型、说明、用途、值范围)。
- 编辑模式:填写/修改配置值,含类型与范围校验。
- 只读模式:仅查看,禁止修改。
- **持久化**:当前实现 JSON 文件方案,支持导出下载与导入合并。持久化层已抽象,后续可扩展 XML / YAML / SQLite / MySQL / Nacos。
- **MCP 服务**:通过 Model Context Protocol 暴露同一套能力AI 可自动完成项目/配置的增删改查;删除为两步式确认,写操作受系统模式(只读)约束。
## MCP 服务
MCP 服务以 Streamable HTTP 传输运行在 `POST /mcp` 端点,供 AI例如 Claude、Cursor 等支持 MCP 的客户端)自动操作。
### 配置
授权 token 写在 `data/mcp.json`(已被 .gitignore 忽略,不会提交):
```json
{
"enabled": true,
"token": "CHANGE_ME_REGISTRY_MCP_TOKEN"
}
```
客户端连接时需携带请求头 `Authorization: Bearer <token>`。若 token 为空字符串,则跳过鉴权(不推荐)。
### 配置示例(客户端)
```json
{
"mcpServers": {
"registry": {
"url": "http://localhost:3000/mcp",
"headers": { "Authorization": "Bearer CHANGE_ME_REGISTRY_MCP_TOKEN" }
}
}
}
```
### 可用工具
| 类别 | 工具 | 说明 |
| --- | --- | --- |
| 系统 | `get_mode` / `set_mode` | 读取/切换系统模式plan/edit/readonly |
| 项目 | `list_projects` / `get_project` | 项目查询 |
| 项目 | `create_project` | 创建项目(维度开关创建后不可改) |
| 项目 | `update_project_mappings` | 调整维度映射方式path/label |
| 项目 | `delete_project` / `confirm_delete_project` | 两步式删除:先 `delete_project` 获取令牌,再 `confirm_delete_project` 真正删除 |
| 配置 | `list_configs` / `get_config` | 配置项查询 |
| 配置 | `create_config` / `update_config` | 配置项新增/修改 |
| 配置 | `delete_config` / `confirm_delete_config` | 两步式删除,机制同上 |
两步式删除返回 `confirmation_token`5 分钟内有效、一次性),需调用对应的 `confirm_*` 工具并回传该令牌才会真正删除。
### 文档
- 需求文档:`docs/requirements.md`
- 概要设计文档:`docs/design.md`
## 目录结构
```
registry/
├── docs/ 需求与设计文档
├── data/ JSON 持久化数据
├── src/ 后端源码Express
│ ├── server.js
│ ├── routes/ 项目与配置路由
│ ├── services/ 业务逻辑
│ ├── persistence/ JSON 持久化适配器
│ └── utils/ 配置值校验
└── public/ 前端静态资源
```
## 后续规划
- 对接 SSO 单点登录(当前版本无认证)。
- 扩展更多持久化方案数据库、Nacos、SSH 远程配置文件)。
- 项目维度转换机制。