Cấu hình kết nối trực tiếp trong VS Code: dùng servers thay vì mcpServers
Bạn sao chép một cấu hình đang chạy tốt từ Claude hoặc Cursor, dán vào VS Code, khởi động lại, và không có gì xảy ra. Không có lỗi, không có cảnh báo, không có máy chủ nào trong danh sách. Tệp là JSON hợp lệ và VS Code hoàn toàn hài lòng với nó. Vấn đề nằm ở một từ, và là từ ngoài cùng.
- VS Code bọc các máy chủ trong khóa servers. Claude, Cursor và hầu hết ứng dụng khác dùng mcpServers.
- Khóa sai không tạo ra lỗi nào, đó là lý do chuyện này làm người ta mất cả tiếng.
- Định nghĩa máy chủ bên trong giống hệt nhau giữa các ứng dụng khách. Chỉ lớp bọc khác nhau.
Sự khác biệt, đặt cạnh nhau
Cùng một máy chủ, cùng lệnh, cùng tham số. Thứ duy nhất thay đổi là khóa bọc.
| Ứng dụng khách | Tệp cấu hình | Khóa bọc |
|---|---|---|
| GitHub Copilot trong VS Code | .vscode/mcp.json | servers |
| Cursor | ~/.cursor/mcp.json | mcpServers |
| Claude Desktop | claude_desktop_config.json | mcpServers |
| Hầu hết ứng dụng khách khác dựa trên tệp cấu hình | tùy ứng dụng | mcpServers |
VS Code muốn gì
Trong .vscode/mcp.json, ở thư mục gốc của không gian làm việc. Lấy trình kết nối của MyLinedChart làm ví dụ:
{ "servers": { "mylinedchart": { "command": "npx", "args": ["-y", "@mylinedchart/mcp-chart-context"] } } }
Thay bằng lệnh và tham số của máy chủ bạn. Hình dạng của đối tượng bên trong không đổi giữa các ứng dụng khách.
Mọi thứ khác muốn gì
Cùng máy chủ đó, cho Claude hoặc Cursor:
{ "mcpServers": { "mylinedchart": { "command": "npx", "args": ["-y", "@mylinedchart/mcp-chart-context"] } } }
Nếu bạn mở cả hai trình soạn thảo, bạn thực sự cần cả hai tệp. Hai trình soạn thảo không thể dùng chung một cấu hình.
Vì sao nó thất bại mà không có lỗi
VS Code đọc tệp, thấy JSON hợp lệ và tìm khóa servers. Tệp không có khóa servers, nên VS Code thấy không có máy chủ nào để khởi động. Không có máy chủ nào không phải là điều kiện lỗi. Theo góc nhìn của VS Code, bạn chưa cấu hình gì cả, và đó là điều hoàn toàn hợp lệ.
Vì vậy không có gạch đỏ, không có thông báo và không có mục nào trong bất kỳ nhật ký nào nói khóa bị sai. Thất bại trông y hệt máy chủ bị lỗi khi khởi động, đó là lý do mọi người lao vào gỡ lỗi máy chủ.
- Tệp là JSON hợp lệ, nên không có lỗi phân tích nào xuất hiện.
- Khóa cấp cao nhất không nhận ra bị bỏ qua thay vì bị từ chối.
- Không có máy chủ nào được cấu hình là trạng thái bình thường, nên VS Code không báo lỗi.
Cách xác nhận bạn đang gặp vấn đề nào
Trước khi cho rằng máy chủ bị hỏng, hãy chứng minh VS Code có từng thử khởi động nó.
- Kiểm tra khóa bọc trước. Việc kiểm tra mất năm giây và phần lớn thời gian chính là đáp án.
- Chạy lệnh của máy chủ bằng tay trong terminal. Nếu máy chủ khởi động được, vấn đề nằm ở chỗ khác.
- Tìm máy chủ trong danh sách máy chủ MCP của VS Code. Không thấy nghĩa là chưa từng được cấu hình; có mặt nhưng lỗi nghĩa là có lỗi khởi động thật.
- Nếu bạn cài qua liên kết một cú nhấp thay vì bằng tay, cả nhóm vấn đề này không áp dụng.
Hai cái bẫy liên quan
Nhân tiện đang ở đây, có hai thứ khác thất bại theo cùng cách im lặng.
Thứ nhất, các liên kết cài đặt máy chủ một cú nhấp mang dữ liệu của chúng dưới dạng JSON mã hóa URL thuần. Base64 được trình phân tích URL chấp nhận rồi âm thầm không làm gì, đó là kiểu thất bại tệ nhất có thể: một nút trông như đã hoạt động.
Thứ hai, tên máy chủ đi bên trong dữ liệu cho VS Code, thay vì là một tham số truy vấn riêng như cách Cursor làm. Một liên kết xây theo dạng của Cursor sẽ không cài đúng trong VS Code dù nó vẫn mở ra.
MyLinedChart nằm ở đâu
MyLinedChart có sẵn một trình kết nối trực tiếp, cho một tác tử AI biết biểu đồ trực tiếp của bạn: các mã, nét vẽ, giá trị chỉ báo và các thanh nến trên màn hình. Trình kết nối chạy trên máy của bạn và dữ liệu không đi qua máy chủ của chúng tôi.
Ứng dụng có nút Add to VS Code một cú nhấp tự ghi đúng khóa cho bạn, đó là lý do nên dùng nó thay vì sửa tay. Thiết lập và các ứng dụng khách khác: /resources/articles/ibkr-chart-data-github-copilot-vs-code.
Bước tiếp theo
Sửa khóa, khởi động lại VS Code và máy chủ sẽ xuất hiện. Nếu máy chủ vẫn không xuất hiện, giờ bạn biết vấn đề nằm ở máy chủ chứ không phải cấu hình, một danh sách ngắn hơn nhiều để xử lý.
Kết nối AI của bạn tại /mcp.
Câu hỏi thường gặp
- Vì sao VS Code dùng servers thay vì mcpServers?
- Khóa servers là một lựa chọn đặt tên trong định dạng cấu hình riêng của VS Code, được đưa ra độc lập với quy ước Claude Desktop đã thiết lập. Không cái nào đúng hơn. Khác biệt chỉ thành vấn đề vì hai cái trông có vẻ thay thế được cho nhau và một trong hai thất bại mà không nói gì.
- VS Code có cảnh báo nếu tôi dùng sai khóa không?
- Không, và đó chính là điểm khó. Tệp là JSON hợp lệ, khóa cấp cao nhất không nhận ra bị bỏ qua thay vì bị từ chối, và không có máy chủ nào được cấu hình là trạng thái bình thường. Không có gì ở đó trông giống một lỗi.
- Tôi có thể dùng một tệp cấu hình cho cả VS Code và Cursor không?
- Không. Chúng đọc các đường dẫn khác nhau và mong đợi các khóa bọc khác nhau, nên bạn cần cả hai tệp. Định nghĩa máy chủ bên trong giống hệt nhau, nên đó chỉ là một bản sao đổi một từ.
- Điều này có áp dụng cho Copilot của Windows không?
- Không. Copilot ở đây là GitHub Copilot trong VS Code, hỗ trợ máy chủ MCP. Trợ lý trên thanh tác vụ Windows là một sản phẩm riêng dùng chung tên và không dùng các tệp cấu hình này.
Dùng thử MyLinedChart
MyLinedChart lưu nét vẽ, ghi chú và giá trị chỉ báo của bạn thành dữ liệu để bạn xuất, xem lại và dùng lại.
Khám phá MyLinedChart