Model Context Protocol (MCP) позволяет ИИ-ассистентам вызывать инструменты и читать данные с серверов, которые вы запускаете. Многие MCP-серверы работают локально, но удалённый сервер на VPS полезен, когда нескольким людям, инструментам или агентам нужны одни и те же возможности. В этом руководстве рассмотрены варианты настройки и безопасная базовая конфигурация.
Локальный или удалённый MCP?
- Локальный (stdio). Клиент запускает сервер как дочерний процесс на вашей машине. Просто и приватно, но работает только на этой машине.
- Удалённый (HTTP). Сервер работает на VPS, а клиенты подключаются по HTTPS. Именно его вы размещаете. Он подходит для общих инструментов, долго выполняющихся задач и инструментов, которым нужен фиксированный IP.
Проверьте актуальную спецификацию MCP на предмет транспорта, который поддерживает ваш клиент. Streamable HTTP — обычный выбор для удалённых серверов. Размеры для типичных задач указаны на странице хостинга MCP-серверов.
Шаг 1: подготовьте сервер
Возьмите новый сервер Ubuntu LTS и выполните шаги из статьи как защитить новый VPS. Создайте пользователя для службы.
sudo adduser --disabled-password --gecos "" mcp
Шаг 2: запустите сервер
Используйте официальный SDK или готовый сервер. В этом примере на Python применяется вспомогательный класс FastMCP из 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")
Шаг 3: запустите как службу
[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
Сохраните файл как /etc/systemd/system/mcp.service и выполните sudo systemctl enable --now mcp.
Шаг 4: HTTPS и аутентификация
MCP-сервер может выполнять код и читать данные, поэтому никогда не оставляйте его открытым. Поставьте его за обратный прокси с TLS и требуйте токен:
mcp.example.com {
@noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
respond @noauth 401
reverse_proxy 127.0.0.1:8000
}
Для рабочей конфигурации используйте OAuth, как описано в спецификации авторизации MCP, а не один общий токен.
Чек-лист безопасности
- Давайте инструментам минимально необходимый доступ. Не предоставляйте инструменту доступ к оболочке, если только в этом не заключается его назначение.
- Храните секреты в файлах окружения с правами
chmod 600. - Журналируйте вызовы инструментов, чтобы видеть, что происходило.
- Держите порт привязанным к 127.0.0.1 и открывайте наружу только прокси.