npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

security-review-mcp-tool

v1.0.4

Published

Servidor MCP para revisão de segurança de código

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 install

Uso

Compilar o código

npm run build

Iniciar o servidor (via stdio)

npm start

Iniciar o servidor (via HTTP)

npm run start:http

Isso 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:http

Endpoints 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 analisado
  • linguagem (string, opcional): A linguagem de programação do código
  • nivel_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 analisado
  • linguagem (string, opcional): A linguagem de programação do código
  • nivel_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:

  1. Inicie o servidor com npm run start:http
  2. Conecte-se ao endpoint /mcp usando um cliente MCP compatível
  3. Use o header mcp-session-id para 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 alto

Aná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 alto

Scripts 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:

  1. Identifica os arquivos de código relevantes (modificados no Git ou todos no diretório)
  2. Filtra arquivos de código com extensões relevantes
  3. Analisa cada arquivo para vulnerabilidades de segurança
  4. Gera um relatório consolidado em formato Markdown
  5. 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:

  1. 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
  1. Torne o arquivo executável:
chmod +x .git/hooks/pre-commit

Pre-push Hook

Para executar a análise antes de enviar commits ao repositório remoto:

  1. Crie ou edite o arquivo .git/hooks/pre-push:
#!/bin/bash
node /caminho/para/dist/index.js git-commit alto
  1. Torne o arquivo executável:
chmod +x .git/hooks/pre-push