Aula 14 - Deploy de Servidor MCP 🚢
Objetivo
Objetivo: Aprender a preparar um servidor MCP para produção, utilizando Docker para isolamento, gerenciando variáveis de ambiente e explorando opções de hospedagem na nuvem.
1. Dockerização: Portabilidade e Isolamento 🐳
O Docker é a ferramenta padrão para garantir que seu servidor MCP rode da mesma forma no seu computador e na nuvem.
Exemplo de Dockerfile (Node.js)
FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["node", "build/index.js"]
2. Gerenciando Segredos (Variáveis de Ambiente) 🔑
Nunca deixe chaves de API ou senhas de banco de dados no seu código-fonte. Use arquivos .env ou o gerenciador de segredos da sua nuvem.
OPENAI_API_KEY: Para servidores que fazem sampling.DATABASE_URL: Para conexão com bancos de dados.LOG_LEVEL: Para controlar o detalhamento dos logs.
3. Estratégias de Deploy 🚀
Dependendo do seu caso de uso, você pode escolher diferentes caminhos:
- Local (Claude Desktop): O deploy é apenas apontar o caminho do binário no arquivo
config.json. - Remote (Managed Services):
- Render / Railway / Fly.io: Excelentes para deploy rápido via HTTP/SSE.
- AWS Lambda: Ideal para ferramentas que são chamadas esporadicamente (Escalabilidade Automática).
4. CI/CD: Automatizando o Lançamento 🤖
Use GitHub Actions para automatizar o build e o teste do seu servidor MCP a cada commit.
graph LR
A[Dev: git push] --> B[GitHub Actions]
B -- "Rodar Testes" --> C{Passou?}
C -- Sim --> D[Build Docker Image]
D --> E[Push para Registry]
E --> F[Update no Servidor]
5. Prática: Buildando sua Imagem 💻
Vamos simular o build de uma imagem Docker para o nosso servidor.
$ docker build -t meu-servidor-mcp .
[INFO] Construindo imagem...
[SUCCESS] Imagem 'meu-servidor-mcp:latest' criada com sucesso!
[INFO] Testando localmente...
$ docker run -p 3000:3000 meu-servidor-mcp
6. Mini-Projeto: Configurações de Deploy 🧪
- Crie um arquivo
docker-compose.ymlque sobe o seu servidor MCP e um banco de dados PostgreSQL. - Defina as variáveis de ambiente necessárias para a conexão.
- Simule um script de deploy que atualiza o servidor sem derrubar a conexão dos usuários (Zero Downtime).
7. Exercícios de Fixação 📝
- Por que o Docker é fundamental para servidores MCP que serão distribuídos para outros usuários?
- Como você gerenciaria segredos (como senhas) em um deploy no AWS Lambda?
- Qual a vantagem de usar SSE (Server-Sent Events) em vez de Stdio para um servidor que precisa ser acessado por vários clientes ao redor do mundo?
Importante
Em deploy remoto, certifique-se de configurar um Firewall ou API Gateway para garantir que apenas Clientes autorizados consigam conversar com o seu servidor MCP.
Próxima Aula: Projeto Prático Orientado 🎓