Skip links

Como Criar seu Primeiro MCP (Model Context Protocol): Integrando Logs de Produção no Cursor AI

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:

  1. Criar uma instância do servidor MCP
  2. Definir as ferramentas (tools) que serão disponibilizadas
  3. 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

O que exatamente é o Model Context Protocol (MCP)?
O Model Context Protocol (MCP) é um protocolo desenvolvido pela Anthropic que permite a comunicação bidirecional entre modelos de IA e sistemas externos. Ele fornece uma interface padronizada para que modelos de linguagem possam solicitar e receber informações contextuais específicas de ferramentas externas durante uma conversa.

Em termos práticos, o MCP permite que ferramentas como o Cursor AI se conectem a bancos de dados, APIs, sistemas de arquivos e outros serviços para obter informações além do que está contido no prompt inicial do usuário. Isso possibilita que a IA tenha acesso a dados em tempo real, melhorando significativamente a relevância e utilidade das respostas.

Este protocolo representa uma evolução importante na interação com IA, passando de um modelo baseado apenas em texto para um modelo enriquecido com contextualização dinâmica de múltiplas fontes.

Quais são os requisitos técnicos para criar um MCP?
Para criar um MCP funcional, você precisará de alguns componentes técnicos essenciais:

1. Conhecimento básico de JavaScript/TypeScript ou Python, já que os SDKs oficiais do MCP estão disponíveis nessas linguagens (também existe suporte para Java)

2. Ambiente de desenvolvimento Node.js configurado (se estiver usando JavaScript/TypeScript)

3. Instalação do SDK do MCP via NPM (@anthropic/sdk) ou pip (anthropic)

4. Conhecimento básico de APIs RESTful e protocolos de comunicação como Server-Sent Events (SSE)

5. Uma ferramenta que suporte MCP, como o Cursor AI, Claude ou outros ambientes compatíveis

Não é necessário conhecimento avançado em IA ou machine learning, pois o MCP funciona como uma interface de comunicação. O foco está em definir claramente as ferramentas (tools) que seu MCP oferecerá e implementar corretamente os handlers que processarão as solicitações do modelo de IA.

Como posso depurar problemas em um MCP que não está funcionando?
Quando seu MCP não está funcionando como esperado, existem várias estratégias de depuração que podem ajudar:

1. Adicione logs detalhados em todas as funções de handler do seu MCP para rastrear o fluxo de execução e identificar onde ocorrem falhas. Console.log para JavaScript ou print para Python são suas melhores amigas nesta fase.

2. Verifique o formato da resposta que seu MCP está enviando. O contentType deve corresponder ao conteúdo real (text/plain para texto, application/json para JSON).

3. Monitore os eventos de transporte, especialmente se estiver usando SSE. Ferramentas como o DevTools do navegador podem ajudar a verificar se os eventos estão sendo enviados e recebidos corretamente.

4. Isole problemas testando partes individuais do seu MCP. Por exemplo, teste a conexão SSH separadamente antes de integrá-la ao MCP completo.

5. Reinicie o Cursor AI regularmente durante o desenvolvimento, pois ele pode manter estados anteriores de conexão que interferem com novas tentativas.

Se o problema persistir, experimente implementar uma versão simplificada do seu MCP (como um “Hello World”) para confirmar que a configuração básica está funcionando antes de adicionar mais complexidade.

Quais são os casos de uso mais comuns para MCPs?
Os MCPs estão sendo utilizados em diversos cenários inovadores que melhoram significativamente fluxos de trabalho de desenvolvimento e outras áreas. Alguns dos casos de uso mais comuns incluem:

1. Integração com sistemas de controle de versão (Git) para fornecer contexto de código e histórico de alterações durante o desenvolvimento

2. Conexão com ferramentas de design (Figma, Sketch) para validar implementações de UI/UX contra especificações originais

3. Monitoramento e análise de logs de produção para debugging rápido e eficiente

4. Integração com ferramentas de comunicação (Slack, Discord) para extrair requisitos e informações de projeto de conversas

5. Acesso a documentações internas e bases de conhecimento para referência durante o desenvolvimento

6. Automação de testes, incluindo comparação visual de interfaces e validação de resultados

7. Integração com pipelines de CI/CD para monitoramento e resolução de problemas em tempo real

Empresas estão continuamente descobrindo novos usos para MCPs à medida que a tecnologia evolui, com foco em eliminar tarefas repetitivas e fornecer contexto valioso durante o processo de desenvolvimento.

O uso de MCPs representa riscos de segurança para minha empresa?
Como qualquer tecnologia que conecta sistemas internos a serviços externos, os MCPs apresentam considerações de segurança que devem ser avaliadas cuidadosamente:

Exposição de dados: MCPs podem potencialmente expor dados sensíveis a modelos de IA externos. É crucial implementar controles que limitem precisamente quais dados são acessíveis através do MCP.

Autenticação e autorização: Implemente mecanismos robustos para garantir que apenas usuários autorizados possam configurar e utilizar MCPs que acessam sistemas críticos da empresa.

Auditoria de uso: Mantenha registros detalhados de todas as interações com MCPs, especialmente aquelas que acessam dados sensíveis ou sistemas de produção.

Isolamento de ambientes: Considere criar MCPs específicos para ambientes de desenvolvimento e produção, com níveis de acesso diferenciados.

Revisão de código: MCPs personalizados devem passar por revisões de segurança assim como qualquer outro código de produção.

A boa notícia é que muitos desses riscos podem ser mitigados através de práticas de segurança adequadas. Muitas empresas estão desenvolvendo políticas específicas para uso seguro de MCPs, reconhecendo seus benefícios enquanto protegem seus ativos digitais.

Assista ao vídeo original

Este artigo foi baseado no vídeo abaixo. Se preferir, você pode assistir ao conteúdo original: