
Lint seu servidor MCP antes de publicá-lo (um eslint para MCP)
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.jsonpara 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.
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.


