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.
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")
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.