# ACW Tools MCP

MCP (Model Context Protocol) 工具集，用于在 Cursor / Codex 中通过自然语言下载 ACW 规则、技能，并自动收集和上传 AI 对话记录。

资产下载目录会按当前 Agent 自动选择：

- 技能：`agent: auto`（默认）写入工作区 `.agents/skills`；用户级写入 `$CODEX_HOME/skills`（未设置时 `~/.codex/skills`）。仅当需要 Cursor 目录时传 `agent: cursor` 或设置 `ACW_INSTALL_AGENT=cursor`。
- 规则：`agent: auto` 默认写入工作区 `.agents/rules`；需要 `.cursor/rules` 时用 `agent: cursor`。
- 知识库：`agent: auto` 默认写入工作区 `.agents/knowledge`；需要 `.cursor/knowledge` 时用 `agent: cursor`。
- 开发底座：按本地模板资产口径识别 `.cursor/dev-bases` 与 `.agents/dev-bases`，MCP 资产安装不在这套目录模型内。

知识库工具：`upload_knowledge` 默认使用 `overwrite` 全量覆盖；传 `mode: "incremental"` 时同名文件覆盖、其他文件保留。需要删除单个文档时调用 `delete_knowledge`，传入 `knowledgeName` 和知识库内相对 `filePath`。

## Cursor 配置方法

### 配置文件位置

`~/.cursor/mcp_settings.json` (或通过 Cursor Settings → MCP → Edit MCP Settings)

### 配置示例（Token 认证）

```json
{
  "mcpServers": {
    "acw-tools": {
      "command": "npx",
      "args": ["-y", "@bangdao-ai/acw-tools@latest"],
      "env": {
        "ACW_BASE_URL": "https://acw.bangdao-tech.com",
        "ACW_TOKEN": "your-token-here"
      }
    }
  }
}
```

**配置说明**:
- `ACW_BASE_URL`: ACW 服务端地址（默认：https://acw.bangdao-tech.com）
- `ACW_TOKEN`: 你的用户 Token（必需，在 ACW 平台个人中心 → Token 管理中创建）

### 连接自检

在 Cursor 对话中让助手调用 MCP 工具 **`check_acw_connection`**（或说明「检查 acw-tools 与云端是否通」）。该工具会：

- 请求无鉴权配置接口，确认 `ACW_BASE_URL` 网络可达；
- 在配置了 `ACW_TOKEN` 时调用技能搜索接口，确认 Token 被服务端接受。

**注意**：Cursor 界面里「MCP 已连接」只表示编辑器与本进程的 stdio 已建立，**不能**代替上述云端检测。安装失败时请先完成下文排障再谈 Token。

## Codex 配置提示

在 Codex 的 `config.toml` 或 `codex mcp add` 中为 `acw-tools` 增加：

```toml
[mcp_servers.acw-tools.env]
ACW_BASE_URL = "https://acw.bangdao-tech.com"
ACW_TOKEN = "your-token-here"
ACW_INSTALL_AGENT = "cursor"
```

仅在需要写入 `.cursor/*` 时设置 `ACW_INSTALL_AGENT=cursor`；默认 `agent: auto` 写入 `{工作区}/.agents/skills/`。

## 安装与排障（Windows 编译失败 / Node 版本）

**首选方案（推荐，可视为「直接解决」）**：让 **运行 `npx` 的 Node 为 22 LTS 或更新（约 22.5+）**。此时使用 **Node 内置 `node:sqlite`** 读取 Cursor 的 `state.vscdb`，**不需要** `better-sqlite3` 的原生 `.node`，也不需要 Visual Studio Build Tools。

**包行为说明**

- `better-sqlite3` 是 **optionalDependency**：在旧 Node 上仍由 npm 正常尝试安装；安装失败时 **不会** 拖垮整包安装。
- 包不会在安装期或运行期联网下载、替换原生二进制，也不会自动执行 `npm rebuild`。
- SQLite 不可用时，MCP 核心工具仍可启动，仅 Cursor 对话采集和依赖本地 Cursor 数据库的遥测会降级关闭。

**仍使用 Node 20 时**

- 依赖可选安装成功的 `better-sqlite3`（预编译或本机编译）。Windows 常需 **VS Build Tools**；与 Cursor / `npx` 所用 Node **主版本** 需一致，否则易出现 ABI 不匹配。
- 避免多份 Node 混用导致 `npx` 与预期版本不一致。

**macOS / Linux 旧 Node**

- 编译失败时：`xcode-select --install` 或 `build-essential`（及 Python 3，若 npm 提示），再重装本包。

## 平台侧数据说明（对话采集导出）

从 ACW 导出的执行明细中：

- **`tool_name`**：对 Cursor 上报的 MCP 工具名会在采集侧归一为 **`配置名:工具名`**（如 `acw-tools:download_rule`），便于统计；内置工具（如 `read_file_v2`）保持原名。
- **`execution_time`**：对应 AI 气泡在客户端记录的一段耗时；**`timing_info.measurementKind`** 为 `cursor_client_timing` 时表示来自 Cursor 的 `clientSettleTime - clientRpcSendTime`，通常覆盖模型推理与编排，**不是**「单个 MCP 工具 RPC 耗时」。为 `estimated_turn_latency` 时表示无原生 timing 时的兜底估算，见该 JSON 内 `measurementNote`。

---

## 许可证

MIT License

## 作者

邦道科技 - 产品技术中心
