A relação entre desenvolvedores e inteligência artificial está mudando rapidamente. Desde que a Anthropic introduziu o Model Context Protocol (MCP) em novembro de 2024, empresas inovadoras não apenas permitem que seus funcionários utilizem IA em suas tarefas diárias – elas incentivam ativamente essa prática. Em vez de penalizar o uso de ferramentas de IA, algumas organizações estão agora avaliando positivamente o quanto seus colaboradores aproveitam essas tecnologias para aumentar a produtividade.
Neste artigo, vou compartilhar minha experiência criando um MCP personalizado que conecta os logs de um servidor de produção diretamente ao Cursor AI, permitindo monitorar aplicações remotamente sem precisar acessar manualmente a VPS. Esta solução prática demonstra o poder do Model Context Protocol e como ele pode transformar seu fluxo de trabalho de desenvolvimento.
O que é o Model Context Protocol (MCP) e Por Que Importa
O Model Context Protocol é um protocolo desenvolvido pela Anthropic que permite a conexão entre modelos de IA e sistemas externos. Em termos práticos, o MCP possibilita que ferramentas como o Cursor AI interajam com outros serviços, databases e sistemas para obter contexto adicional além do que está no prompt do usuário.
Algumas aplicações práticas de MCP incluem:
- Comparação automatizada de screenshots para testes de regressão em interfaces
- Conexão com logs de aplicações em produção
- Integração com ferramentas de design como Figma
- Acesso a conversas em plataformas como Slack para entender requisitos de projetos
Empresas visionárias estão agora perguntando: “Qual MCP você configurou para seu time neste trimestre?”, evidenciando como essa tecnologia está rapidamente se tornando parte essencial do desenvolvimento moderno.
Criando um MCP Simples: O Hello World
Antes de mergulharmos na criação de um MCP mais avançado para monitoramento de logs, vamos entender a estrutura básica de um MCP com um exemplo simples de “Hello World”.
Para implementar um MCP funcional, precisamos seguir três passos fundamentais:
- Criar uma instância do servidor MCP
- Definir as ferramentas (tools) que serão disponibilizadas
- Iniciar o servidor e configurá-lo no Cursor
Aqui está um exemplo simplificado de uma ferramenta de “greeting” que recebe um nome e responde com uma saudação:
// Inicializando o servidor MCP
const server = new MCPServer();// Definindo a ferramenta de saudação
server.addTool({
name: “greeting”,
description: “Says hello to a person”,
schema: z.object({
name: z.string().describe(“The name of the person to greet”)
}),
handler: async ({ name }) => {
return {
content: `Hey ${name}, nice to meet you!`,
contentType: “text/plain”
};
}
});// Iniciando o servidor
server.start({
transport: [
new StdioTransport(),
new SSEServerTransport({ port: 8765 })
] });
Esta implementação básica nos permite interagir com o MCP através do Cursor AI, solicitando que ele cumprimente alguém usando a ferramenta que definimos.
Integrando Logs de Produção com SSH
Agora, vamos avançar para um caso de uso mais prático: extrair logs de um servidor de produção usando SSH e disponibilizá-los diretamente no Cursor AI para análise e debugging.
O objetivo é simples: quero monitorar os logs do meu jogo “LumberJK versus Zombies” que está rodando em uma VPS, sem precisar me conectar manualmente via SSH toda vez que preciso verificar problemas em produção.
Componentes Necessários
Para esta implementação, precisamos:
- Biblioteca SSH2 para conectar à VPS
- SDK do MCP para criar nosso servidor e definir as ferramentas
- Uma estrutura para capturar e filtrar os logs relevantes
A implementação do nosso extrator de logs ficará assim:
// Importando as bibliotecas necessárias
const { Client } = require(‘ssh2’);
const { MCPServer } = require(‘@anthropic/sdk/mcp’);
const { z } = require(‘zod’);// Armazenamento para os logs recentes
const logs = [];// Definindo a ferramenta de extração de logs
server.addTool({
name: “extractLogs”,
description: “Extract logs from the production VPS”,
schema: z.object({
service: z.string().optional().describe(“The service name to get logs for”)
}),
handler: async ({ service = “simulator” }) => {
// Conectando via SSH
const ssh = new Client();return new Promise((resolve, reject) => {
ssh.on(‘ready’, () => {
// Executando o comando PM2 para obter logs
ssh.exec(`pm2 logs ${service} –lines 20`, (err, stream) => {
if (err) reject(err);stream.on(‘data’, (data) => {
const lines = data.toString().split(‘\n’);
for (const line of lines) {
if (line.trim()) {
logs.push({
timestamp: new Date(),
message: line
});
}
}
});// Após 5 segundos, retornamos os logs coletados
setTimeout(() => {
const recentLogs = logs.filter(log =>
(new Date() – log.timestamp) < 10000 ); resolve({ content: JSON.stringify(recentLogs, null, 2), contentType: "text/plain" }); ssh.end(); }, 5000); }); }); // Configurando a conexão SSH ssh.connect({ host: 'your-vps-ip', port: 22, username: 'root', password: 'your-password' // Em produção, use chaves privadas! }); }); } });
Configurando o MCP no Cursor
Com nosso código implementado, precisamos configurar o MCP no Cursor AI para usar nossa ferramenta. No Cursor, acesse Settings > MCP e adicione um novo MCP com estas opções:
- Tipo: Comando
- Comando: node index.js (caminho para o arquivo buildado)
Depois de configurado, podemos pedir ao Cursor para verificar os logs do nosso serviço com comandos como: “Check my logs in the VPS to see what we have running there” ou “Analyze the recent errors in the simulator service”.
Problemas Comuns e Soluções
Durante o desenvolvimento de MCPs, você pode encontrar alguns obstáculos:
- Erros de formato: O Cursor espera que as respostas do MCP estejam em formatos específicos. Certifique-se de retornar o contentType correto.
- Bugs do Cursor: Às vezes, o próprio Cursor pode apresentar comportamentos inesperados. Reiniciar o aplicativo frequentemente resolve estes problemas.
- Problemas de conexão: Se o MCP envolve conexões externas (como SSH), implemente timeouts adequados e tratamento de erros.
Uma dica importante: se seu MCP parar de funcionar repentinamente, verifique se não ultrapassou os limites de dados que o Cursor consegue processar em uma única conversa.
Ampliando Possibilidades com MCPs
O exemplo de extração de logs é apenas o começo. Você pode expandir o conceito para criar MCPs que:
- Integram com pipelines de CI/CD para monitoramento de builds
- Conectam-se a ferramentas de design como Figma para validação
- Extraem requisitos de conversas no Slack ou outras plataformas
- Analisam métricas de desempenho de aplicações em tempo real
A chave está em identificar os processos repetitivos em seu fluxo de trabalho que poderiam se beneficiar de um contexto mais rico dentro de suas ferramentas de IA.
Leve Sua Produtividade ao Próximo Nível
O Model Context Protocol representa uma mudança significativa na forma como interagimos com ferramentas de IA. Em vez de apenas recebermos respostas baseadas em texto, podemos agora criar interações ricas que incorporam dados em tempo real de nossos próprios sistemas.
Se você está procurando se destacar neste novo paradigma, comece criando MCPs simples como o exemplo que compartilhei, e gradualmente expanda para casos de uso mais complexos. O código completo para o exemplo está disponível publicamente e pode ser adaptado para suas necessidades específicas.
Não se deixe intimidar pela complexidade inicial – a documentação e a comunidade estão crescendo rapidamente. Dê o próximo passo hoje mesmo e explore como os MCPs podem transformar sua experiência de desenvolvimento!
Perguntas Frequentes
Assista ao vídeo original
Este artigo foi baseado no vídeo abaixo. Se preferir, você pode assistir ao conteúdo original: