OffshoreVps
Tutoriais6 out. 20266 min de leituraPor a equipe da OffshoreVps

Como hospedar um servidor MCP em um VPS

Execute um servidor remoto do Model Context Protocol: local versus remoto, um exemplo em Python, um serviço systemd, HTTPS com token e uma lista de verificação de segurança.

O Model Context Protocol (MCP) permite que assistentes de IA chamem ferramentas e leiam dados de servidores que você executa. Muitos servidores MCP rodam localmente, mas um remoto em um VPS é útil quando várias pessoas, ferramentas ou agentes precisam compartilhar as mesmas capacidades. Este guia cobre as escolhas de configuração e uma base segura.

Janela de terminal em um VPS mostrando os comandos usados para hospedar um servidor MCP, começando com “sudo adduser --disabled-password --gecos "" mcp”
O tipo de comandos que você executará no servidor neste guia.

MCP local ou remoto?

  • Local (stdio). O cliente inicia o servidor como um processo filho na sua própria máquina. Simples e privado, mas só funciona nessa máquina.
  • Remoto (HTTP). O servidor roda em um VPS e os clientes se conectam por HTTPS. É isso que você hospeda. Serve para ferramentas compartilhadas, tarefas de longa duração e ferramentas que precisam de um IP fixo.

Consulte a especificação atual do MCP para saber qual transporte o seu cliente suporta. O Streamable HTTP é a escolha usual para servidores remotos. Os tamanhos para cargas de trabalho típicas estão na nossa página de hospedagem de servidor MCP.

Passo 1: prepare o servidor

Use um servidor Ubuntu LTS novo e os passos de como proteger um novo VPS. Crie um usuário para o serviço.

sudo adduser --disabled-password --gecos "" mcp

Passo 2: execute o servidor

Use o SDK oficial ou um servidor existente. Este exemplo em Python usa o auxiliar FastMCP do SDK do MCP:

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")
Os passos deste guia em ordem: 1. MCP local ou remoto?; 2. prepare o servidor; 3. execute o servidor; 4. execute-o como serviço; 5. HTTPS e autenticação; 6. Lista de verificação de segurança
Os passos deste guia, em ordem.

Passo 3: execute-o como serviço

[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

Salve como /etc/systemd/system/mcp.service e execute sudo systemctl enable --now mcp.

Passo 4: HTTPS e autenticação

Um servidor MCP pode executar código e ler dados, então nunca o deixe aberto. Coloque-o atrás de um proxy reverso com TLS e exija um token:

mcp.example.com {
  @noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
  respond @noauth 401
  reverse_proxy 127.0.0.1:8000
}

Para uma configuração de produção, use OAuth como descrito na especificação de autorização do MCP em vez de um único token compartilhado.

Lista de verificação de segurança

  • Dê às ferramentas o menor acesso de que precisam. Não dê acesso ao shell a uma ferramenta, a menos que seja esse o objetivo.
  • Mantenha os segredos em arquivos de ambiente com chmod 600.
  • Registre as chamadas de ferramentas em log para ver o que aconteceu.
  • Mantenha a porta vinculada a 127.0.0.1 e exponha apenas o proxy.