All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 39s
- Streamable HTTP 传输,/mcp 端点,Bearer token 鉴权(data/mcp.json,已忽略) - 项目/配置完整增删改查工具,删除为两步式确认(delete_* + confirm_delete_*) - 写操作遵循系统模式,readonly 下拒绝 - 依赖 @modelcontextprotocol/sdk,新增单元测试
96 lines
3.5 KiB
Markdown
96 lines
3.5 KiB
Markdown
# Registry - 微服务配置管理中心
|
||
|
||
基于 Web 的注册表风格微服务配置管理系统。以项目为单位管理配置,支持机房、环境、分组三个维度划分,提供规划、编辑、只读三种工作模式。
|
||
|
||
## 快速开始
|
||
|
||
```bash
|
||
npm install
|
||
npm start
|
||
```
|
||
|
||
启动后访问 http://localhost:3000
|
||
|
||
## 功能概览
|
||
|
||
- **项目管理**:以项目为单位隔离配置;维度开关(机房/环境/分组)创建时确定,后续不可修改。
|
||
- **注册表风格界面**:左侧树形导航(项目 → 机房 → 环境 → 分组 → 配置),右侧键值详情表格。
|
||
- **配置项**:路径形式的 key,value 支持 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 远程配置文件)。
|
||
- 项目维度转换机制。
|