# 客户端接入：Claude Desktop 与 Cursor

`security-center-mcp` 是一个 MCP stdio server：AI 客户端以子进程方式启动它，通过标准输入/输出走 MCP 协议（stdout 只跑协议帧，日志全走 stderr）。本文给出 Claude Desktop 与 Cursor 的接入配置。

## 1. 构建

```bash
cd security-center-mcp
go build -o security-center-mcp .
```

记下产物的绝对路径，例如：

```bash
cd security-center-mcp && go build -o security-center-mcp . && pwd
# => /path/to/security-center-mcp   （实际为 <pwd>/security-center-mcp）
```

## 2. 准备 API Key

**填你自己的 key**：在 Security Center 前端的 **API Keys** 页创建，形如 `sc_...`。不要用他人的 key，也不要把 key 提交进仓库。

两个环境变量：

| 环境变量 | 必填 | 说明 |
| --- | --- | --- |
| `SECURITY_CENTER_BASE_URL` | 否 | 后端 API 地址，默认 `http://127.0.0.1:8080` |
| `SECURITY_CENTER_API_KEY` | 是 | 你的 API Key；缺失或过短（< 16 字符）时进程直接退出并在 stderr 提示 |

## 3. Claude Desktop

编辑配置文件（macOS：`~/Library/Application Support/Claude/claude_desktop_config.json`），在 `mcpServers` 中加入：

```json
{
  "mcpServers": {
    "security-center": {
      "command": "/absolute/path/to/security-center-mcp",
      "env": {
        "SECURITY_CENTER_BASE_URL": "http://127.0.0.1:8080",
        "SECURITY_CENTER_API_KEY": "sc_换成你自己的key"
      }
    }
  }
}
```

保存后**完全退出并重启 Claude Desktop**（⌘Q，不是关窗口）。之后在对话中即可让它调用 `search_assets`、`search_vulnerabilities` 等 14 个只读工具。

## 4. Cursor

编辑 `~/.cursor/mcp.json`（或项目级 `.cursor/mcp.json`）：

```json
{
  "mcpServers": {
    "security-center": {
      "command": "/absolute/path/to/security-center-mcp",
      "env": {
        "SECURITY_CENTER_BASE_URL": "http://127.0.0.1:8080",
        "SECURITY_CENTER_API_KEY": "sc_换成你自己的key"
      }
    }
  }
}
```

保存后在 Cursor 设置（Settings → MCP）里确认 `security-center` 显示为已启用、工具列表加载成功。

## 5. 不想预编译：用 go run 启动

客户端的 `command` 也可以是 `go`，把编译交给客户端每次启动时完成（首次启动稍慢）：

```json
{
  "mcpServers": {
    "security-center": {
      "command": "go",
      "args": ["run", "/absolute/path/to/security-center-mcp"],
      "env": {
        "SECURITY_CENTER_BASE_URL": "http://127.0.0.1:8080",
        "SECURITY_CENTER_API_KEY": "sc_换成你自己的key"
      }
    }
  }
}
```

注意 `command`/`args` 都用绝对路径：客户端的工作目录不可预期，相对路径会找不到二进制或源码目录。

## 6. 排障

- **启动即退出**：多半是 `SECURITY_CENTER_API_KEY` 缺失或过短，查看客户端的 MCP 日志（stderr 里有 `security-center-mcp: SECURITY_CENTER_API_KEY is required ...`）。
- **工具调用返回 `{"error": {"code": 401, ...}}`**：key 无效或已被吊销，去前端 API Keys 页重建。
- **工具调用返回 `{"error": {"code": "upstream", ...}}`**：连不上后端，检查 `SECURITY_CENTER_BASE_URL` 与后端进程。
- 手动验证服务端是否能起来：`SECURITY_CENTER_API_KEY=sc_... /absolute/path/to/security-center-mcp`，正常时 stderr 打印一行 `serving MCP over stdio ...` 后挂起等待协议帧（Ctrl+C 退出）。
