Semgrep MCP Server
oficialPermite 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.
Servidor MCP do Semgrep
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
#mcpSlack da comunidade!
Conteúdo
- Servidor MCP do Semgrep
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
- Vá para a página Configurações do Conector (link direto)
- Nomeie a conexão como
Semgrep - Defina a URL do Servidor MCP como
https://mcp.semgrep.ai/sse - Defina Autenticação como
No authentication - Marque a caixa de seleção Eu confio nesta aplicação
- 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
- Cmd + Shift + J para abrir as Configurações do Cursor
- Selecione Ferramentas MCP
- 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çasemgrep_scan: Escaneia arquivos de código em busca de vulnerabilidades de segurança com uma string de configuração fornecidasemgrep_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 Semgrepsemgrep_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 schemasemgrep://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:
- Faça login ou cadastre-se
- Gere um token em Configurações
- 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"]
}
}
}

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 oHOST:localhost:8000. Experimente oURLem 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
#mcpSlack 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 🔍
- semgrep-vscode - Extensão oficial para VS Code
- semgrep-intellij - Plugin para IntelliJ
Projetos da comunidade 🌟
- semgrep-rules - A coleção oficial de regras do Semgrep
- mcp-server-semgrep - Inspiração original escrita por Szowesgad e stefanskiasan
Registros de servidores MCP
Feito com ❤️ pela Equipe Semgrep