# 網路設定

說明 KuraDB 如何選擇 HTTP port、何時掛載遠端 MCP endpoint，以及 client 如何取得目前的 URL。

## HTTP port

`config.json` 目前支援兩個 property：

```json
{
  "port": 8080,
  "remote": false
}
```

| Property | 型別 | 預設 | 規則 |
|---|---|---|---|
| `port` | integer | `0`／省略 | 透過 CLI 設定時必須介於 1–65535 |
| `remote` | boolean | `false`／省略 | 為 true 時掛載 `/mcp` 的 MCP endpoint |

請透過 KuraDB 管理此值，不要手動編輯 JSON：

```bash
kura port set 8080
kura port clear
```

`port set` 會持久化設定、停止執行中的 daemon 並啟動新的 daemon；原本沒有 daemon 在跑時也會直接啟動。`port clear` 只重設 `port`（保留 `remote` 旗標），於下次手動啟動後生效。

未固定 port 時，KuraDB 會在 10000 到 65535 之間隨機嘗試最多 10 個 port。固定 port 已被占用時不會重試：HTTP listener 記錄錯誤後不啟動。固定與隨機 listener 都只綁定 `127.0.0.1`；發布的 URL 使用 `localhost`。

## Remote MCP endpoint

HTTP listener 上的 MCP endpoint 需明確開啟：

```bash
kura remote enable
kura remote disable
```

兩個指令都會持久化 `remote` 旗標，且只在 daemon 執行中時重啟它，因為 route 是在啟動時掛載的。旗標為 false 時，daemon 照常提供 `/api/*`，而 `/mcp` 回 404。stdio transport（`kura mcp`）完全不受此設定影響。兩種 transport 的 client 設定見[連接 MCP Client](/zh/mcp-server-connect)。

## Endpoint discovery

Listener 就緒後，KuraDB 會將 URL 寫入 `~/.config/kuradb/endpoint`：

```bash
BASE="$(cat ~/.config/kuradb/endpoint)"
curl "$BASE/api/health"
```

Launcher 會等待此檔案最多 10 秒，出現後印出 URL。Graceful shutdown 會將它移除，因此 consumer 應在每次重啟後重新讀取。
