Voltar as noticias
Lint seu servidor MCP antes de publicá-lo (um eslint para MCP)
MCP ProtocolAltaEN

Lint seu servidor MCP antes de publicá-lo (um eslint para MCP)

Dev.to - MCP·26 de junho de 2026

Se você enviou um servidor do Protocolo de Contexto de Modelo, provavelmente já se deparou com isso: o servidor funciona no seu editor, você o publica, e então os agentes chamam suas ferramentas de forma errada — ou pior, um cliente o sinaliza como inseguro e ele nunca entra nos diretórios de aplicativos do ChatGPT ou Claude.

Não existe um eslint para isso. Então eu construí um: mcp-conform — um linter de conformidade e segurança determinístico, do lado do autor, que você executa antes de publicar.

npx github:fernforge/mcp-conform --cmd "node dist/index.js"
mcp-conform — 7 ferramenta(s) verificada(s)

delete_record
  ✖ erro  ann/missing-destructive-hint  A ferramenta pode modificar o estado, mas não define destructiveHint.
         correção: Defina annotations.destructiveHint (true para operações irreversíveis como delete).
  ✖ erro  safety/injection-phrase       A descrição contém uma frase de substituição de instrução.
         correção: Descreva o comportamento, não emita comandos para o agente.

1 erro · 4 avisos · 5 informações
Pontuação de conformidade: 76/100   FALHA

Por que um linter do lado do autor?

Três coisas mudaram sob os pés dos autores do MCP, e todas elas mordem no momento da publicação:

1. Anotações de ferramentas ausentes são a razão #1 pela qual servidores são rejeitados dos diretórios de aplicativos. A especificação diz que um cliente deve assumir o pior cenário — destrutivo, mundo aberto — quando uma dica está ausente. Então, se você não definir readOnlyHint / destructiveHint / openWorldHint / title, sua ferramenta de leitura inofensiva é tratada como perigosa, e sua ferramenta destrutiva é enviada sem aviso algum.

2. Descrições de ferramentas são uma superfície de injeção. Descrições são alimentadas diretamente no contexto do agente. Uma linha "ignore instruções anteriores..." — ou um payload Unicode invisível — presente em uma descrição é um verdadeiro vetor de envenenamento de ferramenta. Você quer que isso seja detectado no CI, não em um relatório de segurança sobre seu pacote.

3. O registro oficial agora faz publicação verificada por namespace. Nomes de reverse-DNS, um manifesto server.json, e metadados de pacote limpos são parte do que é publicável e descobrível agora, não apenas itens desejáveis.

A maioria das ferramentas de segurança existentes do MCP é do lado do consumidor — ela escaneia servidores que você está prestes a instalar. O mcp-conform é do lado do autor e shift-left: ele faz com que seu servidor seja conforme antes que alguém o instale.

O que ele verifica

  • Anotações — ausentes/incorretas readOnlyHint, destructiveHint, openWorldHint, title.
  • Higiene do esquema — esquemas de entrada finos ou ambíguos, descrições ausentes, sem restrições.
  • Segurança / envenenamento de ferramenta — frases de substituição de instrução e payloads Unicode ocultos em descrições.
  • Distribuição & metadados do registro — prontidão de package.json / server.json para o registro.
  • Cada descoberta vem com uma correção de uma linha, e isso se resume a uma única pontuação de conformidade de 0 a 100.

Ele verifica o que realmente é enviado

A parte interessante: aponte para o comando de lançamento do seu servidor e ele inicia o servidor via stdio, chama tools/list, e inspeciona os esquemas reais que seus usuários receberão — não uma suposição analisada a partir do seu código. Isso captura a lacuna entre como seu código se parece e o que seu servidor realmente serve.

# lint o servidor ao vivo e em execução
npx github:fernforge/mcp-conform --cmd "node dist/server.js"

# ou um dump de tools/list salvo, com um gate de CI
npx github:fernforge/mcp-conform --manifest tools.json --min-score 80

Sem chave LLM. Sem rede. Totalmente determinístico.

É um linter, não um modelo. Seguro para rodar no CI, livre para rodar mil vezes por dia, e seu veredicto nunca muda. Há uma ação GitHub Action que pontua cada PR e escreve um resumo do trabalho, então uma regressão nos metadados da sua ferramenta falha a construção como qualquer outro erro de lint.

Experimente

npx github:fernforge/mcp-conform --cmd "<seu comando de lançamento do servidor>"

Repositório, regras e a GitHub Action: https://github.com/fernforge/mcp-conform (MIT).

Está no início — se você publica servidores MCP, eu realmente gostaria de saber quais verificações capturam problemas reais para você e quais regras você gostaria a seguir. Abra um problema ou deixe um comentário.

Contexto Triplo Up

A conformidade e segurança dos servidores MCP são cruciais para empresas que utilizam agentes de IA. O mcp-conform ajuda a evitar problemas de rejeição e aumenta a confiança na publicação de ferramentas. Isso é essencial para a adoção de tecnologias de IA no Brasil.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.