File size: 2,172 Bytes
852e525 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | # z.ai MCP endpoints via local proxy
## What we wanted
- Allow apps to use z.ai MCP servers **without configuring z.ai keys** in those apps.
- Keep secrets out of URLs (avoid query-string auth).
- Make each MCP capability toggleable.
## What we got
When `proxy.zai.mcp.enabled=true`, the proxy can expose MCP endpoints under its own base URL.
### 1) Web Search (remote reverse-proxy)
Local endpoint:
- `/mcp/web_search_prime/mcp`
Upstream:
- `https://api.z.ai/api/mcp/web_search_prime/mcp`
Implementation:
- Handler: [`src-tauri/src/proxy/handlers/mcp.rs`](../../src-tauri/src/proxy/handlers/mcp.rs) (`handle_web_search_prime`)
### 2) Web Reader (remote reverse-proxy)
Local endpoint:
- `/mcp/web_reader/mcp`
Upstream:
- `https://api.z.ai/api/mcp/web_reader/mcp`
Implementation:
- Handler: [`src-tauri/src/proxy/handlers/mcp.rs`](../../src-tauri/src/proxy/handlers/mcp.rs) (`handle_web_reader`)
### 3) Vision MCP (built-in server)
Local endpoint:
- `/mcp/zai-mcp-server/mcp`
Implementation:
- Route wiring: [`src-tauri/src/proxy/server.rs`](../../src-tauri/src/proxy/server.rs)
- Handler: [`src-tauri/src/proxy/handlers/mcp.rs`](../../src-tauri/src/proxy/handlers/mcp.rs) (`handle_zai_mcp_server`)
- Session state: [`src-tauri/src/proxy/zai_vision_mcp.rs`](../../src-tauri/src/proxy/zai_vision_mcp.rs)
- Tool execution: [`src-tauri/src/proxy/zai_vision_tools.rs`](../../src-tauri/src/proxy/zai_vision_tools.rs)
## Auth model
- Local proxy auth (if enabled) is handled by the proxy middleware:
- [`src-tauri/src/proxy/middleware/auth.rs`](../../src-tauri/src/proxy/middleware/auth.rs)
- z.ai auth is always injected upstream by the proxy using `proxy.zai.api_key`.
- No z.ai key needs to be configured in MCP clients that point at the local endpoints.
## UI wiring
The MCP toggles and local endpoints are shown in:
- [`src/pages/ApiProxy.tsx`](../../src/pages/ApiProxy.tsx)
## Validation
1) Enable `proxy.zai.enabled=true` and set `proxy.zai.api_key`.
2) Enable:
- `proxy.zai.mcp.enabled=true`
- any subset of `{web_search_enabled, web_reader_enabled, vision_enabled}`
3) Start the proxy and point an MCP client at the corresponding local endpoint(s).
|