OffshoreVps
Bài hướng dẫn6 thg 10 20266 phút đọcBởi đội ngũ OffshoreVps

Cách lưu trữ máy chủ MCP trên VPS

Chạy máy chủ Model Context Protocol từ xa: cục bộ so với từ xa, ví dụ Python, dịch vụ systemd, HTTPS với token và danh sách kiểm tra an toàn.

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.

Cửa sổ terminal trên VPS hiển thị các lệnh dùng để lưu trữ máy chủ MCP, bắt đầu bằng “sudo adduser --disabled-password --gecos "" mcp”
Loại lệnh bạn sẽ chạy trên máy chủ của mình trong hướng dẫn này.

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")
Các bước của hướng dẫn này theo thứ tự: 1. MCP cục bộ hay từ xa?; 2. chuẩn bị máy chủ; 3. chạy máy chủ; 4. chạy như một dịch vụ; 5. HTTPS và xác thực; 6. Danh sách kiểm tra an toàn
Các bước trong hướng dẫn này, theo thứ tự.

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.