Trong vài tháng qua, khái niệm MCP đã trở nên bùng nổ. MCP (Model Context Protocol) được phát triển và phát hành vào cuối năm 2024 bởi Anthropic. Giao thức này cho phép các tác nhân AI và các mô hình ngôn ngữ lớn (LLM) tương tác với các API bên thứ ba để làm việc với dữ liệu thực và thực hiện hành động thay mặt bạn.
Trong trường hợp của Redis MCP — như bạn sẽ thấy ở phần sau — điều đó có nghĩa là bạn có thể tìm kiếm trong cơ sở dữ liệu của mình bằng ngôn ngữ tự nhiên.
Để sử dụng MCP và cho phép nó tương tác với các API khác, bạn cần có một máy chủ MCP cung cấp các công cụ cho tác nhân AI sử dụng.
Câu hỏi lớn đặt ra là: làm sao vận hành máy chủ MCP mà không gây khó khăn cho các lập trình viên? Việc để mọi người tự cài đặt máy chủ cục bộ vừa tốn công, vừa dễ gây ra nhiều sự không nhất quán. Việc tập trung hóa thành một dịch vụ chia sẻ sẽ giúp đơn giản hóa, bảo mật hơn và cho phép đội ngũ tập trung vào xây dựng thay vì "canh chừng" máy chủ.
Trong bài viết này, chúng tôi sẽ hướng dẫn cách bạn có thể triển khai các máy chủ MCP trên Kubernetes. Với cấu hình như vậy, bạn có thể dễ dàng sử dụng chúng cho nhiều trường hợp khác nhau và cho phép lập trình viên kết nối mà không gặp trở ngại.
Cấu trúc của một máy chủ MCP
Máy chủ MCP hỗ trợ hai loại giao thức truyền tải — tức là “cách mà tác nhân AI giao tiếp với máy chủ”: stdin và SSE.
- Máy chủ stdin được chạy dưới dạng nhị phân, nơi tác nhân gửi yêu cầu qua đầu vào chuẩn (stdin) và nhận phản hồi qua đầu ra chuẩn (stdout). Điều này hoạt động tốt ở môi trường cục bộ, nhưng trong môi trường công ty, việc mỗi người chạy máy chủ riêng có thể gây rối loạn.
- Ngược lại, máy chủ dùng SSE (Server-Sent Events) giao tiếp qua HTTP. Tác nhân AI sẽ đăng ký với máy chủ qua endpoint SSE để nhận phản hồi, và gửi yêu cầu qua các lệnh POST.
Với SSE, máy chủ MCP được tập trung hóa trong một môi trường kiểm soát và được chia sẻ như một dịch vụ. Điều này không chỉ cải thiện trải nghiệm phát triển mà còn giảm rủi ro bảo mật và lỗi cấu hình từ các phiên bản máy chủ chạy cục bộ.
Kiến trúc triển khai máy chủ MCP
Tôi đã tạo một thiết lập giúp bạn triển khai các máy chủ MCP yêu thích vào cụm Kubernetes của bạn. Khi hoàn tất, bạn sẽ có một nơi tập trung để quản lý hoặc triển khai các máy chủ mới.
Trong trường hợp này chúng ta sẽ sử dụng Cyclops, tôi đã tạo ra một mẫu UI cho phép bạn triển khai máy chủ MCP chỉ bằng vài cú nhấp chuột — kể cả triển khai máy chủ MCP tùy chỉnh từ Docker image.
Hình minh họa phía trên là kiến trúc được đề xuất.
Một đội kỹ sư chuyên trách có thể sở hữu, quản lý các máy chủ MCP thông qua giao diện Cyclops. Họ có thể cấu hình để máy chủ giao tiếp với các ứng dụng bên ngoài như Grafana, Redis.
Từ đó, các lập trình viên khác chỉ cần kết nối Cursor với máy chủ MCP được công khai để thực hiện hành động thay mặt họ.
Cách chạy máy chủ MCP trên Kubernetes
Yêu cầu:
- Một cụm Kubernetes đang chạy (Bạn có thể tạo bằng Minikube)
- Đã cài đặt
kubectl
- Tác nhân AI — ví dụ trong bài là Cursor
Cài đặt Cyclops:
kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.20.3/install/cyclops-install.yaml && kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.20.3/install/demo-templates.yaml
Điều này sẽ tạo namespace cyclops
và triển khai mọi thứ cần thiết để Cyclops hoạt động.
Mở Cyclops UI:
kubectl port-forward svc/cyclops-ui 3000:3000 -n cyclops
Truy cập Cyclops tại: http://localhost:3000
Ví dụ: Redis MCP
Sau khi Cyclops đã hoạt động, ta có thể khởi chạy một phiên bản Redis trong cụm và máy chủ Redis MCP kết nối tới nó.
Bước 1: Thêm module Redis
Vào Cyclops → Chọn "Add module" → Chọn mẫu Redis.
Bạn có thể cài đặt xác thực cho phiên bản Redis này — ví dụ: mật khẩu my-secret-password
(sẽ dùng khi kết nối với máy chủ MCP).
Bây giờ bạn sẽ được chuyển hướng đến trang chi tiết Module hiển thị Redis của bạn đang hoạt động. Khi phiên bản Redis của bạn đã sẵn sàng, bạn có thể tạo máy chủ MCP và kết nối nó để quản lý phiên bản của mình.
Bước 2: Tạo MCP server kết nối Redis
- Vào Add Module → chọn mẫu
mcp-server
- Ở phần cấu hình, chọn loại MCP là redis
- Cung cấp thông tin kết nối:
REDIS_HOST
: Tên dịch vụ, ví dụcache-redis-master.default
REDIS_PORT
: Mặc định là6379
REDIS_PWD
:my-secret-password
Sau khi triển khai xong máy chủ MCP, bạn cần mở cổng để truy cập:
kubectl port-forward -n default svc/redis-mcp 8000:8000
Bước 3: Cấu hình Cursor kết nối MCP
{ "mcpServers": { "redis": { "url": "http://localhost:8000/sse" } }
}
Giờ bạn có thể hỏi Cursor về trạng thái Redis hoặc dữ liệu trong đó.
Các máy chủ MCP khác
Với template trên, bạn có thể dễ dàng triển khai các máy chủ như:
- Wikipedia MCP
- Grafana MCP
- Hoặc tùy chỉnh từ Docker Image riêng của bạn
Chỉ cần chọn custom ở dropdown và khai báo Docker image bạn muốn dùng.
Tổng kết
Chúng tôi tin rằng AI đang ngày càng trở thành một phần của quy trình phát triển phần mềm, nhưng cần có các lớp trừu tượng và kiểm soát để đảm bảo an toàn và hiệu quả. Đây là bước đi đầu tiên của chúng tôi trong hành trình đó.