feat: 新增 MCP 服务,支持 AI 自动操作项目与配置
build-and-deploy / build-and-deploy (push) Successful in 39s

- Streamable HTTP 传输,/mcp 端点,Bearer token 鉴权(data/mcp.json,已忽略)
- 项目/配置完整增删改查工具,删除为两步式确认(delete_* + confirm_delete_*)
- 写操作遵循系统模式,readonly 下拒绝
- 依赖 @modelcontextprotocol/sdk,新增单元测试
This commit is contained in:
cheney
2026-09-08 10:03:09 +08:00
parent f9f3184f98
commit 963046edd9
9 changed files with 1623 additions and 7 deletions
+49 -3
View File
@@ -19,10 +19,56 @@ npm start
- **三种模式**:
- 规划模式:定义配置结构(类型、说明、用途、值范围)。
- 编辑模式:填写/修改配置值,含类型与范围校验。
- 只读模式:仅查看,禁止修改。
- 只读模式:仅查看,禁止修改。
- **持久化**:当前实现 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`
@@ -46,4 +92,4 @@ registry/
- 对接 SSO 单点登录(当前版本无认证)。
- 扩展更多持久化方案(数据库、Nacos、SSH 远程配置文件)。
- 项目维度转换机制。
- 项目维度转换机制。