Verifique o que um servidor MCP declara
Uma descrição de ferramenta não é documentação. O cliente recebe os nomes e descrições das ferramentas em
tools/list, antes que qualquer ferramenta seja chamada, e eles vão para o contexto do modelo — então uma descrição
é executável no único sentido que importa: ela pode carregar instruções.
Quando isso se aplica
- adicionar um servidor MCP a um agente e querer saber o que ele irá expor
- uma revisão de segurança perguntando quais ferramentas de terceiros o agente pode chamar
- um agente se comportando de forma estranha, onde uma descrição de ferramenta é suspeita
Execute
pip install "git+https://github.com/sushant-me/mcpaudit"
mcpaudit audit tools.json # exit 1 se encontrar problemas, 0 se limpo
Instale a partir do repositório, não do PyPI — o nome mcpaudit no PyPI é um projeto diferente
e não relacionado, cuja CLI não aceitará um argumento de arquivo.
Obtenha tools.json do que o cliente recebeu: mcp-client --list > tools.json, ou do
arquivo de declaração publicado pelo fornecedor (melhor, pois nada é executado). Usar pipe também funciona:
mcp-client --list | mcpaudit audit -
As onze verificações
crítico — colisão-com-nome-reservado: uma ferramenta com nome que o framework instala fora da
tabela de ferramentas (set_model_response, google_search, finish), então ela desloca silenciosamente uma primitiva.
alto — instrução-na-declaração, caracteres-invisíveis, nomes-de-ferramentas-semelhantes,
destrutivo-declarado-somente-leitura, nome-de-ferramenta-duplicado.
médio / baixo — nome-de-ferramenta-confuso, anotações-faltantes, parâmetro-sink-sem-restrição,
url-na-descrição, ferramenta-sem-documentação.
Duas delas não podem ser vistas lendo a declaração. O bloco de tags Unicode codifica
ASCII imprimível em texto de largura zero invisível, e mcpaudit relata para o que ele decodifica. Dois
nomes que normalizam para o mesmo ASCII (search / ѕearch) derrotam uma lista de permissões escrita de
memória.
Triagem
Trabalhe de cima para baixo por severidade. Um achado crítico é uma parada: resolva-o, ou obtenha o risco aceito por
escrito, antes de conectar. Um resultado limpo é um resultado — um servidor bem comportado produz zero
achados, o que permite que um revisor o aprove rapidamente.
Limitação
Isso lê declarações, não comportamento. Não pode dizer se a implementação de um servidor está correta, apenas se o que ele anuncia é seguro de colocar na frente de um modelo.
Quer a parte de aplicação
Fixar o conjunto de ferramentas aprovado como um arquivo de política, para que um servidor que edite silenciosamente uma descrição após revisão falhe no CI em vez de mudar silenciosamente, é a versão paga: Revisão de Segurança de Servidor MCP, listada na Agensi. Até que essa listagem esteja ativa, a referência de regras com exemplos práticos está em https://github.com/sushant-me/mcpaudit-mcp-security
Limitação
Isso lê declarações, não comportamento. Não pode dizer se a implementação de um servidor está correta, apenas se o que ele anuncia é seguro de colocar na frente de um modelo.