Semgrep MCP Server

oficial

Permite que agentes de IA protejam código com Semgrep.

Documentação

⚠️ O servidor MCP do Semgrep foi movido de um repositório independente para o repositório principal semgrep! ⚠️

Este repositório foi descontinuado, e futuras atualizações do servidor MCP do Semgrep serão feitas por meio do binário oficial semgrep.

Semgrep logo

Documentation Join Semgrep community Slack Follow on LinkedIn Follow @semgrep on X

Servidor MCP do Semgrep

Add MCP Server semgrep to LM Studio Install in Cursor Install in VS Code UV Install in VS Code Docker Install in VS Code semgrep.ai PyPI Docker Install in VS Code Insiders Install in VS Code Insiders

Um servidor Model Context Protocol (MCP) para usar o Semgrep na varredura de código em busca de vulnerabilidades de segurança. Proteja sua vibe coding! 😅

Model Context Protocol (MCP) é uma API padronizada para LLMs, Agentes e IDEs como Cursor, VS Code, Windsurf, ou qualquer ferramenta que suporte MCP, para obter ajuda especializada, contexto e aproveitar o poder das ferramentas. O Semgrep é uma ferramenta de análise estática rápida e determinística que entende semanticamente muitas linguagens e vem com mais de 5.000 regras. 🛠️

[!NOTE] Este projeto beta está em desenvolvimento ativo. Adoraríamos receber seu feedback, relatórios de bugs, solicitações de funcionalidades e código. Junte-se ao canal #mcp Slack da comunidade!

Conteúdo

Primeiros passos

Execute o pacote Python como um comando CLI usando uv:

uvx semgrep-mcp # see --help for more options

Ou execute como um contêiner Docker:

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

Cursor

Exemplo mcp.json

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"],
      "env": {
        "SEMGREP_APP_TOKEN": "<token>"
      }
    }
  }
}

Adicione uma instrução ao seu .cursor/rules para usar automaticamente:

Always scan code generated using Semgrep for security vulnerabilities

ChatGPT

  1. Vá para a página Configurações do Conector (link direto)
  2. Nomeie a conexão como Semgrep
  3. Defina a URL do Servidor MCP como https://mcp.semgrep.ai/sse
  4. Defina Autenticação como No authentication
  5. Marque a caixa de seleção Eu confio nesta aplicação
  6. Clique em Criar

Veja mais detalhes na documentação oficial.

Servidor Hospedado

[!WARNING] mcp.semgrep.ai é um servidor experimental que pode quebrar inesperadamente. Ele ganhará novas funcionalidades rapidamente.🚀

Cursor

  1. Cmd + Shift + J para abrir as Configurações do Cursor
  2. Selecione Ferramentas MCP
  3. Clique em Novo Servidor MCP.
{
  "mcpServers": {
    "semgrep": {
      "type": "streamable-http",
      "url": "https://mcp.semgrep.ai/mcp"
    }
  }
}

Demonstração

API

Ferramentas

Permitem que LLMs realizem ações, façam cálculos determinísticos e interajam com serviços externos.

Escanear Código

  • security_check: Escaneia código em busca de vulnerabilidades de segurança
  • semgrep_scan: Escaneia arquivos de código em busca de vulnerabilidades de segurança com uma string de configuração fornecida
  • semgrep_scan_with_custom_rule: Escaneia arquivos de código usando uma regra personalizada do Semgrep

Entender Código

  • get_abstract_syntax_tree: Exibe a Árvore de Sintaxe Abstrata (AST) do código

Plataforma na Nuvem (login e token do Semgrep necessários)

  • semgrep_findings: Busca descobertas do Semgrep na API da Plataforma AppSec do Semgrep

Meta

  • supported_languages: Retorna a lista de linguagens suportadas pelo Semgrep
  • semgrep_rule_schema: Busca o JSON Schema mais recente das regras do Semgrep

Prompts

Prompts reutilizáveis para padronizar interações comuns com LLMs.

  • write_custom_semgrep_rule: Retorna um prompt para ajudar a escrever uma regra do Semgrep

Recursos

Expõem dados e conteúdo para LLMs

  • semgrep://rule/schema: Especificação da sintaxe YAML das regras do Semgrep usando JSON schema
  • semgrep://rule/{rule_id}/yaml: Regra completa do Semgrep em formato YAML do registro do Semgrep

Uso

Este pacote Python é publicado no PyPI como semgrep-mcp e pode ser instalado e executado com pip, pipx, uv, poetry ou qualquer gerenciador de pacotes Python.

$ pipx install semgrep-mcp
$ semgrep-mcp --help

Usage: semgrep-mcp [OPTIONS]

  Entry point for the MCP server

  Supports both stdio and sse transports. For stdio, it will read from stdin
  and write to stdout. For sse, it will start an HTTP server on port 8000.

Options:
  -v, --version                Show version and exit.
  -t, --transport [stdio|sse]  Transport protocol to use (stdio or sse)
  -h, --help                   Show this message and exit.

Entrada/Saída Padrão (stdio)

O transporte stdio permite a comunicação através dos fluxos de entrada e saída padrão. Isso é particularmente útil para integrações locais e ferramentas de linha de comando. Veja a especificação para mais detalhes.

Python

semgrep-mcp

Por padrão, o pacote Python será executado no modo stdio. Como ele usa os fluxos de entrada e saída padrão, parecerá que a ferramenta está travada sem nenhuma saída, mas isso é esperado.

Docker

Este servidor é publicado no Registro de Contêineres do Github (ghcr.io/semgrep/mcp)

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

Por padrão, o contêiner Docker está no modo SSE, então você terá que incluir -t stdio após o nome da imagem e executar com -i para rodar no modo interativo.

HTTP Transmissível

O HTTP Transmissível permite respostas em streaming sobre JSON RPC via requisições HTTP POST. Veja a especificação para mais detalhes.

Por padrão, o servidor escuta em 127.0.0.1:8000/mcp por conexões de clientes. Para alterar isso, defina as variáveis de ambiente FASTMCP_*. O servidor deve estar em execução para que os clientes se conectem a ele.

Python

semgrep-mcp -t streamable-http

Por padrão, o pacote Python será executado no modo stdio, então você terá que incluir -t streamable-http.

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp

Eventos Enviados pelo Servidor (SSE)

[!WARNING] A comunidade MCP considera este um protocolo de transporte legado e é realmente destinado à compatibilidade retroativa. HTTP Transmissível é o substituto recomendado.

O transporte SSE permite streaming do servidor para o cliente com Eventos Enviados pelo Servidor para comunicação cliente-servidor e servidor-cliente. Veja a especificação para mais detalhes.

Por padrão, o servidor escuta em 127.0.0.1:8000/sse por conexões de clientes. Para alterar isso, defina as variáveis de ambiente FASTMCP_*. O servidor deve estar em execução para que os clientes se conectem a ele.

Python

semgrep-mcp -t sse

Por padrão, o pacote Python será executado no modo stdio, então você terá que incluir -t sse.

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse

Plataforma AppSec do Semgrep

Opcionalmente, para conectar-se à Plataforma AppSec do Semgrep:

  1. Faça login ou cadastre-se
  2. Gere um token em Configurações
  3. Adicione o token às suas variáveis de ambiente:
    • CLI (export SEMGREP_APP_TOKEN=<token>)

    • Docker (docker run -e SEMGREP_APP_TOKEN=<token>)

    • JSON de configuração MCP

    "env": {
      "SEMGREP_APP_TOKEN": "<token>"
    }

[!TIP] Por favor, entre em contato para suporte se necessário. ☎️

Integrações

Cursor IDE

Adicione o seguinte bloco JSON ao seu arquivo de configuração global ~/.cursor/mcp.json ou específico do projeto .cursor/mcp.json:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

cursor MCP settings

Veja a documentação do Cursor para mais informações.

VS Code / Copilot

Clique nos botões de instalação no topo deste README para a instalação mais rápida.

Configuração Manual

Adicione o seguinte bloco JSON ao seu arquivo de Configurações do Usuário (JSON) no VS Code. Você pode fazer isso pressionando Ctrl + Shift + P e digitando Preferences: Open User Settings (JSON).

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "uvx",
        "args": ["semgrep-mcp"]
      }
    }
  }
}

Opcionalmente, você pode adicioná-lo a um arquivo chamado .vscode/mcp.json no seu espaço de trabalho:

{
  "servers": {
    "semgrep": {
      "command": "uvx",
        "args": ["semgrep-mcp"]
    }
  }
}

Usando Docker

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "ghcr.io/semgrep/mcp",
          "-t",
          "stdio"
        ]
      }
    }
  }
}

Veja a documentação do VS Code para mais informações.

Windsurf

Adicione o seguinte bloco JSON ao seu arquivo ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

Veja a documentação do Windsurf para mais informações.

Claude Desktop

Aqui está um vídeo curto mostrando o Claude Desktop usando este servidor para escrever uma regra personalizada.

Adicione o seguinte bloco JSON ao seu arquivo claude_desktop_config.json:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

Veja a documentação da Anthropic para mais informações.

Claude Code

claude mcp add semgrep uvx semgrep-mcp

Veja a documentação do Claude Code para mais informações.

OpenAI

Veja a documentação oficial:

Agents SDK

async with MCPServerStdio(
    params={
        "command": "uvx",
        "args": ["semgrep-mcp"],
    }
) as server:
    tools = await server.list_tools()

Veja a documentação do OpenAI Agents SDK para mais informações.

Clientes personalizados

Exemplo de cliente Python SSE

Veja um exemplo completo em examples/sse_client.py

from mcp.client.session import ClientSession
from mcp.client.sse import sse_client


async def main():
    async with sse_client("http://localhost:8000/sse") as (read_stream, write_stream):
        async with ClientSession(read_stream, write_stream) as session:
            await session.initialize()
            results = await session.call_tool(
                "semgrep_scan",
                {
                    "code_files": [
                        {
                            "path": "hello_world.py",
                            "content": "def hello(): print('Hello, World!')",
                        }
                    ]
                },
            )
            print(results)

[!TIP] Algumas bibliotecas cliente querem o URL: http://localhost:8000/sse e outras querem apenas o HOST: localhost:8000. Experimente o URL em um navegador web para confirmar que o servidor está em execução e que não há problemas de rede.

Veja a documentação oficial do SDK para mais informações.

Contribuindo, comunidade e executando a partir do código-fonte

[!NOTE] Adoramos seu feedback, relatórios de bugs, solicitações de funcionalidades e código. Junte-se ao canal #mcp Slack da comunidade!

Veja CONTRIBUTING.md para mais informações e detalhes sobre como executar o servidor MCP a partir do código-fonte.

Ferramentas similares 🔍

Projetos da comunidade 🌟

Registros de servidores MCP

Semgrep Server MCP server

Feito com ❤️ pela Equipe Semgrep