Về Field Notes

Claude Desktop Developer Mode:
trỏ API endpoint sang gateway riêng

Vì sao có người muốn đổi API endpoint của Claude Desktop

Mặc định Claude Desktop nói chuyện trực tiếp với endpoint chính thức của Anthropic. Với phần lớn người dùng thì không có gì phải bàn. Nhưng có ba tình huống lặp lại đủ nhiều để sinh ra cả một thị trường gateway trung gian:

🐢
Latency & timeout
Đường đi vòng, response chậm hoặc đứt giữa stream
🌍
unsupported_region
API không khả dụng ở khu vực đang ngồi
🔑
Key vs subscription
Anthropic tách bạch gói Claude.ai và quyền truy cập API

Ý tưởng của hướng dẫn gốc rất đơn giản: thay vì cấu hình proxy ở tầng hệ điều hành, ta trỏ thẳng baseURL của client sang một API aggregation gateway — nghĩa là sửa một file JSON, restart app, xong. Tác giả quảng cáo mất khoảng 5 phút, và MCP tools / Projects / Artifacts vẫn hoạt động bình thường.

Developer Mode là gì

Developer Mode không phải một runtime riêng. Nó chỉ là cái cửa để mở file cấu hình claude_desktop_config.json. Có hai đường vào, dùng đường nào cũng ra cùng một file:

Đường vàoThao tác
Menu barHelp → Enable Developer Mode
Trong appSettings → Developer → Edit Config

File này điều khiển ba thứ:

  • MCP server definitions — Claude được gọi những local tool server nào
  • Environment variables — trong đó có ANTHROPIC_BASE_URLANTHROPIC_API_KEY
  • Log verbosity — để debug MCP tool call

Mọi thay đổi chỉ có hiệu lực sau khi thoát app hoàn toàn rồi mở lại. Đóng cửa sổ là chưa đủ — trên macOS app vẫn nằm ở menu bar, trên Windows vẫn nằm ở system tray.

Điều kiện cần

  • Claude Desktop đã cài — khuyến nghị bản 0.10 trở lên
  • Một endpoint gateway + API key — ví dụ bên dưới dùng CodeGateway: https://api.codegateway.dev/v1
  • Bất kỳ text editor nào — VS Code, Notepad++, hoặc editor mặc định mà Settings mở ra

Cấu hình trên macOS

1
Mở file config Help → Enable Developer Mode để hiện tab Developer, rồi Settings → Developer → Edit Config. Nếu tab Developer đã có sẵn thì vào thẳng Claude → Settings → Developer → Edit Config.
2
Thêm khối env Ghi endpoint và key của gateway vào file JSON.
3
Quit hẳn rồi mở lại Claude (menu bar) → Quit Claude. Đóng cửa sổ không tính.

Đường dẫn mặc định của file:

macOS — config path
~/Library/Application Support/Claude/claude_desktop_config.json # Mở nhanh từ Terminal open ~/Library/Application\ Support/Claude/claude_desktop_config.json

Cấu hình tối giản:

claude_desktop_config.json
{ "mcpServers": {}, "env": { "ANTHROPIC_BASE_URL": "https://api.codegateway.dev/v1", "ANTHROPIC_API_KEY": "your-codegateway-api-key" } }

Nếu đang có MCP server rồi thì thêm khối env vào, đừng ghi đè phần còn lại:

Giữ nguyên MCP, thêm env
{ "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"] } }, "env": { "ANTHROPIC_BASE_URL": "https://api.codegateway.dev/v1", "ANTHROPIC_API_KEY": "your-codegateway-api-key" } }
Bắt buộc có hậu tố /v1 Client nối path vào sau base URL để tạo request dạng {ANTHROPIC_BASE_URL}/messages. Thiếu /v1 thì URL cuối thành api.codegateway.dev/messages → 404.

Cấu hình trên Windows

Quy trình y hệt macOS, chỉ khác đường dẫn và cách thoát app. Dán đường dẫn dưới đây vào address bar của File Explorer rồi Enter là nhảy thẳng tới file:

Windows — config path
%APPDATA%\Claude\claude_desktop_config.json

Nội dung JSON không đổi so với macOS. Riêng đường dẫn filesystem trong args của MCP server phải escape bằng double backslash:

Windows path trong JSON
"args": ["C:\\Users\\yourname\\Documents"]

Thoát app: right-click icon Claude ở system tray → Exit, rồi mở lại.

Cách 2: biến môi trường hệ thống

Nếu quản nhiều máy, hoặc không muốn API key nằm trong file config, thì set ở tầng OS. Key sẽ không bao giờ chạm vào claude_desktop_config.json.

macOS / Linux — ~/.zshrc hoặc ~/.bashrc
export ANTHROPIC_BASE_URL="https://api.codegateway.dev/v1" export ANTHROPIC_API_KEY="your-codegateway-api-key" # Phải launch từ terminal để app thừa hưởng biến của shell open -a "Claude"
Trên macOS, double-click icon app không đi qua shell nên sẽ không thấy các biến này. Trên Windows thì biến môi trường hệ thống được mọi process thừa hưởng, không cần launch từ terminal: System → Advanced system settings → Environment Variables, thêm ANTHROPIC_BASE_URLANTHROPIC_API_KEY ở mức system.

Thứ tự ưu tiên: khối env trong claude_desktop_config.json thắng biến môi trường hệ thống khi cả hai cùng được set.

Verify: xác nhận traffic thật sự đi đúng đường

Đây là bước hay bị bỏ qua nhất, và cũng là bước quan trọng nhất — vì nếu config không có tác dụng, app vẫn chạy bình thường qua endpoint cũ mà không báo lỗi gì. Sau khi restart, gửi một message rồi mở dashboard của gateway: request phải xuất hiện trong usage log sau vài giây.

Kiểm tra endpoint độc lập bằng dòng lệnh:

Bash — kiểm tra endpoint
curl -s https://api.codegateway.dev/v1/models \ -H "Authorization: Bearer your-codegateway-api-key" \ | python3 -m json.tool | head -20
Hiện tượngNguyên nhân thường gặpCách xử lý
Trả về danh sách model Endpoint và key đều đúng Chuyển sang kiểm tra phía app
401 Unauthorized Key sai hoặc hết hạn Lấy lại key từ dashboard
curl OK nhưng app vẫn lỗi JSON syntax error trong config Soát dấu phẩy thừa, thiếu ngoặc, thiếu quote
404 khi app gọi Base URL thiếu /v1 Thêm /v1, quit hẳn rồi mở lại
Dashboard không thấy request nào Config không được app đọc Kiểm tra đúng đường dẫn file config, quit hẳn app rồi mở lại
Trailing comma là thủ phạm số một JSON không cho phép dấu phẩy sau phần tử cuối. Trước khi restart, chạy python3 -m json.tool < claude_desktop_config.json — parse được thì file mới hợp lệ.

MCP tools vẫn chạy song song

Điểm này đáng nhớ: đổi API endpoint không ảnh hưởng MCP, vì đây là hai kênh hoàn toàn khác nhau.

MCP tool call
filesystem, database, external service… đi qua local inter-process communication, không qua API endpoint.
Model inference
Toàn bộ request suy luận của model đi qua ANTHROPIC_BASE_URL.

Một config hoàn chỉnh dùng cả hai:

Config đầy đủ — 2 MCP server + custom endpoint
{ "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/projects"] }, "postgres": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"] } }, "env": { "ANTHROPIC_BASE_URL": "https://api.codegateway.dev/v1", "ANTHROPIC_API_KEY": "your-codegateway-api-key" } }

Theo số liệu CodeGateway tự công bố: chạy đồng thời 4 MCP server thì tool-call latency gần như không đổi, còn time-to-first-byte có cải thiện khi đi qua edge network của Cloudflare — kèm ghi chú rõ đây là small-sample internal test, mang tính minh hoạ, không phải benchmark chính thức.

FAQ

Cấu hình xong mà không kết nối được, kiểm tra gì trước?
Chạy lệnh curl ở trên. 401 là sai key. Nếu curl thông mà app vẫn lỗi thì gần như chắc chắn file JSON bị lỗi cú pháp — mở lại soát dấu phẩy thừa, ngoặc lệch, thiếu quote.
ANTHROPIC_BASE_URL có nhất thiết phải kèm /v1?
Có. Client nối path vào sau base URL thành {ANTHROPIC_BASE_URL}/messages. Thiếu /v1 thì thành api.codegateway.dev/messages và trả về 404.
Để API key trong file config local có an toàn?
Trên máy một người dùng, file chỉ user hiện tại đọc được — với môi trường dev cá nhân thì đây là thực hành bình thường. Máy dùng chung thì đổi sang cách biến môi trường, key không chạm vào file config.
Mỗi conversation một endpoint khác nhau được không?
Không. ANTHROPIC_BASE_URL là global cho cả instance Claude Desktop; muốn đổi thì sửa config và restart app. Cần kiểm soát chi tiết hơn thì dùng Claude Code — set ANTHROPIC_BASE_URL theo từng shell session.
Update Claude Desktop có mất config?
Không. claude_desktop_config.json là user data, nằm tách khỏi binary của app, update vẫn giữ nguyên.
Projects và Artifacts còn hoạt động?
Có — dữ liệu Projects/Artifacts nằm phía account Anthropic và không đi qua API, nên cấu hình base URL chỉ ảnh hưởng request inference.