security-review-mcp-tool
v1.0.4
Published
Servidor MCP para revisão de segurança de código
Maintainers
Readme
Revisor de Segurança de Código - Servidor MCP
Um servidor MCP (Model Context Protocol) que realiza análises de segurança automatizadas em código-fonte. Este servidor permite que modelos de linguagem (LLMs) enviem código para análise e recebam relatórios detalhados sobre vulnerabilidades de segurança.
Funcionalidades
- Detecção automática da linguagem de programação
- Análise de vulnerabilidades comuns em múltiplas linguagens:
- JavaScript/TypeScript
- Python
- PHP
- Java
- C#
- Relatórios detalhados com:
- Resumo de vulnerabilidades encontradas
- Recomendações para correção
- Exemplos de código corrigido para vulnerabilidades comuns
- Links para recursos adicionais de segurança
Instalação
git clone https://github.com/seu-usuario/security-review-mcp.git
cd security-review-mcp
npm installUso
Compilar o código
npm run buildIniciar o servidor (via stdio)
npm startIniciar o servidor (via HTTP)
npm run start:httpIsso iniciará o servidor na porta 3000 (ou na porta definida pela variável de ambiente PORT).
Desenvolvimento
Para desenvolvimento com recarga automática:
# Via stdio
npm run dev
# Via HTTP
npm run dev:httpEndpoints MCP
O servidor expõe as seguintes ferramentas MCP:
Ferramenta: revisar-seguranca-codigo
Realiza a análise de segurança em um trecho de código.
Parâmetros:
codigo(string): O código-fonte a ser analisadolinguagem(string, opcional): A linguagem de programação do códigonivel_detalhe(string, opcional): Nível de detalhe do relatório ("baixo", "medio", "alto"). O padrão é "medio".
Exemplo de uso:
// Chamada da ferramenta MCP
const resultado = await client.callTool({
name: "revisar-seguranca-codigo",
arguments: {
codigo: "function getUserData(userId) { return db.query('SELECT * FROM users WHERE id = ' + userId); }",
linguagem: "javascript",
nivel_detalhe: "alto"
}
});Prompt: revisar-codigo
Fornece um prompt formatado para análise de segurança, que pode ser enviado a um LLM.
Parâmetros:
codigo(string): O código-fonte a ser analisadolinguagem(string, opcional): A linguagem de programação do códigonivel_detalhe(string, opcional): Nível de detalhe da análise
Exemplos
Exemplo de análise em JavaScript
const codigo = `
function login(username, password) {
const query = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'";
const user = db.exec(query);
if (user) {
document.getElementById('profile').innerHTML = user.profile;
return true;
}
return false;
}
`;
const resultado = await client.callTool({
name: "revisar-seguranca-codigo",
arguments: {
codigo,
linguagem: "javascript",
nivel_detalhe: "alto"
}
});
console.log(resultado.content[0].text);Uso com HTTP
Quando executado via HTTP, o servidor implementa o transporte Streamable HTTP do MCP. Para usar o servidor:
- Inicie o servidor com
npm run start:http - Conecte-se ao endpoint
/mcpusando um cliente MCP compatível - Use o header
mcp-session-idpara manter a sessão entre requisições
Exemplo de código cliente:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
async function main() {
const transporte = new StreamableHTTPClientTransport(
new URL("http://localhost:3000/mcp")
);
const cliente = new Client({
name: "cliente-seguranca",
version: "1.0.0"
});
await cliente.connect(transporte);
// Listar ferramentas disponíveis
const ferramentas = await cliente.listTools();
console.log("Ferramentas disponíveis:", ferramentas);
// Chamar a ferramenta de análise
const resultado = await cliente.callTool({
name: "revisar-seguranca-codigo",
arguments: {
codigo: "function perigosa(input) { eval(input); }",
linguagem: "javascript",
nivel_detalhe: "alto"
}
});
console.log(resultado.content[0].text);
}
main().catch(console.error);Tecnologias Utilizadas
- TypeScript
- MCP (Model Context Protocol)
- Zod para validação de esquemas
- Expressões regulares para análise de padrões
- Express (para o servidor HTTP)
Licença
MIT
Análise de Commits Git
O revisor de segurança pode analisar automaticamente todos os arquivos modificados no commit atual:
# Analisar arquivos modificados no commit atual
npx security-review-mcp-tool git-commit
# Analisar com nível de detalhe específico
npx security-review-mcp-tool git-commit altoAnálise de Diretório
Também é possível analisar todos os arquivos de código no diretório atual:
# Analisar todos os arquivos de código no diretório atual
npx security-review-mcp-tool analisar-dir
# Analisar com nível de detalhe específico
npx security-review-mcp-tool analisar-dir altoScripts de Conveniência
Use os scripts incluídos para facilitar a análise:
# Windows - Analisar arquivos modificados no Git
analisar-commit.bat [nivel_detalhe]
# Windows - Analisar todos os arquivos no diretório
analisar-commit.bat --dir [nivel_detalhe]
# Linux/Mac - Analisar arquivos modificados no Git
./analisar-commit.sh [nivel_detalhe]
# Linux/Mac - Analisar todos os arquivos no diretório
./analisar-commit.sh --dir [nivel_detalhe]O processo de análise:
- Identifica os arquivos de código relevantes (modificados no Git ou todos no diretório)
- Filtra arquivos de código com extensões relevantes
- Analisa cada arquivo para vulnerabilidades de segurança
- Gera um relatório consolidado em formato Markdown
- Salva o relatório em um arquivo
relatorio-seguranca-[data].md
Integração com Fluxos de Trabalho Git
Você pode incorporar essa ferramenta em seus ganchos (hooks) do Git para automatizar a análise de segurança:
Pre-commit Hook
Para executar a análise automaticamente antes de cada commit:
- Crie ou edite o arquivo
.git/hooks/pre-commit:
#!/bin/bash
node /caminho/para/dist/index.js git-commit medio
# Se você deseja bloquear commits com vulnerabilidades:
# if [ $? -ne 0 ]; then
# echo "Vulnerabilidades de segurança encontradas. Commit cancelado."
# exit 1
# fi- Torne o arquivo executável:
chmod +x .git/hooks/pre-commitPre-push Hook
Para executar a análise antes de enviar commits ao repositório remoto:
- Crie ou edite o arquivo
.git/hooks/pre-push:
#!/bin/bash
node /caminho/para/dist/index.js git-commit alto- Torne o arquivo executável:
chmod +x .git/hooks/pre-push