# 记忆之锁 · Memory Lock MCP Server

为 **AI Agent** 提供「高危操作二次验证」能力的 MCP Server。当 Agent 准备执行删除数据、资金转账、重置覆盖等高风险操作前，先检测风险、再校验用户从「记忆之锁」小程序获取的 6 位动态口令，授权后方可继续。

## 前置条件

- Node.js ≥ 18
- 已上线的记忆之锁后端（默认 `https://api.memlock.cn`）
- 一个有效 `MEMLOCK_API_KEY`（从「记忆之锁」小程序 **接口信息** 页获取）

## 快速开始

```bash
cd mcp-server
npm install

# 设置 API Key（可从记忆之锁小程序"接口信息"页获取）
export MEMLOCK_API_KEY="你的APIKey"
# 可选：自定义后端地址，默认 https://api.memlock.cn
# export MEMLOCK_API_BASE="https://api.memlock.cn"

# 启动（stdio 模式，等待 MCP 宿主接管）
node src/index.js
```

## 提供的工具

### 1. `verify_dynamic_code`
- **作用**：校验用户提供的 6 位动态口令
- **入参**：`code`（6 位数字口令）
- **返回**：`verified`（是否通过）、`expires_in`（剩余秒数）、`message`
- **用途**：在高危操作执行前，要求用户从小程序取当前口令，以此确认操作者是本人

### 2. `detect_high_risk_action`
- **作用**：检测一段指令是否包含高危/中风险动作
- **入参**：`action`（待执行的指令或操作描述）
- **返回**：`is_high_risk`、`level`（high/medium/none）、`hits`（命中的风险规则）
- **规则覆盖**：
  - **高危**：删除/清空数据、资金转账、重置/覆盖、凭证/权限变更、不可逆操作
  - **中危**：批量/全量操作、合并/迁移、对外副作用
  - **豁免**：读操作（查询/查看/统计/列出等）不误判为批量风险

## 集成到 MCP 客户端

以 Claude Desktop / Cline 等 MCP 客户端为例，在客户端配置里添加：

```json
{
  "mcpServers": {
    "memory-lock": {
      "command": "node",
      "args": ["E:/workbuddy/2026-08-13-16-23-34/deploy-package/mcp-server/src/index.js"],
      "env": {
        "MEMLOCK_API_KEY": "你的APIKey",
        "MEMLOCK_API_BASE": "https://api.memlock.cn"
      }
    }
  }
}
```

## 测试

```bash
npm test   # 运行风险检测逻辑测试（7 个用例）
```

## 目录结构

```
mcp-server/
├── src/
│   ├── index.js         # MCP 入口（注册工具 + stdio）
│   ├── api-client.js    # 调后端 /v1/verify 校验口令
│   └── risk-detector.js # 高危操作检测词库与逻辑
├── test/
│   └── test.js          # 风险检测单测
├── package.json
└── README.md
```

## 安全说明

- `MEMLOCK_API_KEY` 是用户敏感凭证，**严禁写入公开仓库或提交到版本控制**，通过环境变量注入
- 后端 `/v1/verify` 只记录 `code` 的 SHA-256 哈希，不存储明文验证码
- MCP Server 启动日志输出到 stderr，不污染 stdio 协议通道
