Model Context Protocol (MCP) cho phép các trợ lý AI gọi công cụ và đọc dữ liệu từ các máy chủ do bạn vận hành. Nhiều máy chủ MCP chạy cục bộ, nhưng máy chủ từ xa trên VPS hữu ích khi nhiều người, công cụ hoặc agent cần dùng chung các khả năng đó. Hướng dẫn này nêu các lựa chọn thiết lập và một nền tảng an toàn.
MCP cục bộ hay từ xa?
- Cục bộ (stdio). Máy khách khởi động máy chủ như một tiến trình con trên máy của bạn. Đơn giản và riêng tư, nhưng chỉ hoạt động trên máy đó.
- Từ xa (HTTP). Máy chủ chạy trên VPS và các máy khách kết nối qua HTTPS. Đây là thứ bạn lưu trữ. Nó phù hợp với công cụ dùng chung, tác vụ chạy lâu và công cụ cần IP cố định.
Hãy kiểm tra đặc tả MCP hiện hành về phương thức truyền mà máy khách của bạn hỗ trợ. Streamable HTTP là lựa chọn thường dùng cho máy chủ từ xa. Cấu hình cho các tác vụ điển hình có trên trang lưu trữ máy chủ MCP của chúng tôi.
Bước 1: chuẩn bị máy chủ
Dùng một máy chủ Ubuntu LTS mới và các bước trong cách bảo mật VPS mới. Tạo một người dùng cho dịch vụ.
sudo adduser --disabled-password --gecos "" mcp
Bước 2: chạy máy chủ
Dùng SDK chính thức hoặc một máy chủ có sẵn. Ví dụ Python này dùng hàm hỗ trợ FastMCP của MCP SDK:
sudo -iu mcp
python3 -m venv ~/venv && . ~/venv/bin/activate
pip install "mcp[cli]"
# server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo", host="127.0.0.1", port=8000)
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
if __name__ == "__main__":
mcp.run(transport="streamable-http")
Bước 3: chạy nó như một dịch vụ
[Unit]
Description=MCP server
After=network-online.target
[Service]
User=mcp
WorkingDirectory=/home/mcp
ExecStart=/home/mcp/venv/bin/python server.py
Restart=always
[Install]
WantedBy=multi-user.target
Lưu nó thành /etc/systemd/system/mcp.service và chạy sudo systemctl enable --now mcp.
Bước 4: HTTPS và xác thực
Máy chủ MCP có thể chạy mã và đọc dữ liệu, vì vậy đừng bao giờ để nó mở. Đặt nó sau một reverse proxy có TLS và yêu cầu token:
mcp.example.com {
@noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
respond @noauth 401
reverse_proxy 127.0.0.1:8000
}
Với môi trường production, hãy dùng OAuth như mô tả trong đặc tả ủy quyền của MCP thay vì một token dùng chung.
Danh sách kiểm tra an toàn
- Chỉ cấp cho công cụ quyền truy cập tối thiểu cần thiết. Đừng cấp quyền shell cho công cụ trừ khi đó là mục đích.
- Giữ bí mật trong các tệp môi trường với
chmod 600. - Ghi nhật ký các lần gọi công cụ để bạn biết điều gì đã xảy ra.
- Giữ cổng gắn vào 127.0.0.1 và chỉ mở proxy ra ngoài.