内容
# duckcoop
MCP 服务器,允许 LLM 客户端在沙盒中运行只读 SQL(通过 DuckDB)查询 CSV/Parquet/JSON 文件,文件位于您选择的目录下。就像一只鸭子,它只能在您为它搭建的围栏中划水。
## 使用方法
```bash
npm run build
node dist/cli.js /path/to/sandbox-root
```
可选参数: `--scratch-dir <path>` (默认为临时目录), `--max-temp-size <size>` (默认为 `4GB` )。
暴露两个工具: `query` (仅限 SELECT / CREATE TEMP VIEW / CREATE TEMP TABLE)和 `list_files` (沙盒根目录下的数据文件)。有关安全模型,请参见 `docs/adr/`。
## 注册到 MCP 客户端
### Claude 代码
```bash
claude mcp add duckcoop node /absolute/path/to/duckcoop/dist/cli.js /absolute/path/to/sandbox-root
```
### Claude 桌面版
在 `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` )中添加一项:
```json
{
"mcpServers": {
"duckcoop": {
"command": "node",
"args": [
"/absolute/path/to/duckcoop/dist/cli.js",
"/absolute/path/to/sandbox-root"
]
}
}
}
```
重启 Claude 桌面版以使更改生效。
**查询拖放文件到聊天中:** Claude 桌面版不会将聊天附件保存到 duckcoop 可以看到的路径中。在本地代理模式会话中,文件会放在 `~/Library/Application Support/Claude/local-agent-mode-sessions/<account-id>/<session-id>/local_<id>/outputs/` 下。将沙盒根目录指向稳定的父目录 `~/Library/Application Support/Claude/local-agent-mode-sessions`,这样新创建的会话文件夹就会被覆盖,无需再次编辑配置:
```json
{
"mcpServers": {
"duckcoop": {
"command": "node",
"args": [
"/absolute/path/to/duckcoop/dist/cli.js",
"/Users/<you>/Library/Application Support/Claude/local-agent-mode-sessions"
]
}
}
}
```