
Servidor proxy que envolve servidores MCP com perfil comportamental, varredura de segurança, controle de risco e execução segura. Detecta injeção de prompt, metadados maliciosos de ferramenta, injeção de argumento, riscos de código-fonte e exposição de credenciais.
O MCP safety warden é um servidor proxy que encapsula qualquer servidor MCP e adiciona perfilamento comportamental, varredura de segurança, controle de risco e execução segura às suas ferramentas.
[!IMPORTANT] A segurança MCP é uma área de pesquisa ativa. Pesquisas recentes catalogam várias categorias de ameaças específicas do protocolo, abrangendo envenenamento de ferramentas, injeção de prompt, ataques de rug-pull, comprometimento da cadeia de suprimentos, exfiltração de credenciais e ataques de composição em todo o ciclo de vida do servidor. Veja Securing the MCP (OpenReview), Landscape & Threats (arXiv), When MCP Servers Attack (arXiv) e MCP-38 Taxonomy (arXiv).
Use como proxy para adicionar controle de segurança a qualquer servidor MCP, ou aponte-o para um servidor que você não possui e execute uma auditoria de segurança completa sem fazer uma única chamada de ferramenta.
Fig 1. Dois modos de operação: proxy e auditoria
Perfilamento comportamental: Classe de efeito, segurança de repetição, destrutividade. Assistido por LLM (Anthropic, OpenAI, Gemini, Ollama) com fallback baseado em regras. Estatísticas observadas (latência p50/p95, taxa de falha, tamanho da saída) atualizadas após cada chamada com proxy.
Varredura de segurança: mcpsafety+ pipeline de cinco estágios (Recon, Planner, Hacker, Auditor, Supervisor). Cisco AI Defense (AST/YARA). Snyk (análise de metadados). As integrações com Kali e Burp Suite enriquecem o pipeline com dados reais de rede e sondas na camada HTTP. Varredura de código-fonte do GitHub com detecção de entropia, AST, fluxo de taint e detecção de rug-pull.
Fig 2. Pipeline de cinco estágios do mcpsafety+, acionado quando você executa uma auditoria de segurança completa em qualquer servidor MCP
Execução segura: Varredura de argumentos (20+ categorias de ataque, segunda passagem por LLM). Varredura de injeção de saída em duas camadas. Controle de risco com alternativas e políticas por ferramenta. Detecção de deriva em cada chamada e verificação independente.
Fig 3. Pipeline de execução segura: as cinco verificações pelas quais toda chamada de ferramenta com proxy passa
CLI: 24 subcomandos, menu interativo de risco, sinalizador --json em todos os comandos, --yes para CI.
O que detecta
Sem uma chave, o wrapper opera apenas no modo baseado em regras: classificação de ferramenta com menor confiança, varredura de injeção apenas com regex, sem alternativas no controle de risco, sem pipeline mcpsafety+. Para uma configuração totalmente local, execute Ollama, defina OLLAMA_MODEL e passe --provider ollama explicitamente (Ollama não é detectado automaticamente).
[!NOTE] Servidores stdio que exigem configuração local (servidores
stdioque precisam de configuração local antes de iniciar - arquivos de configuração ausentes, credenciais, diretórios de dados ou dependências específicas do SO) não podem ser inspecionados pelo wrapper - a descoberta de ferramentas falhará e 0 ferramentas serão armazenadas. Você ainda pode executar uma varredura de segurança completa do código-fonte sem iniciar o servidor passando--github-urlparascan/onboard, ou o parâmetrogithub_urlparasecurity_scan_server. O pipeline mcpsafety+ buscará e analisará o código-fonte diretamente do GitHub. Servidoressseestreamable_httpnão são afetados.
pip install mcpsafetywarden
Com todos os extras opcionais:
pip install "mcpsafetywarden[all]"
Ou extras específicos:
pip install "mcpsafetywarden[anthropic,snyk]"
A partir da fonte:
git clone https://github.com/gautamvarmadatla/mcpsafetywarden
cd mcpsafetywarden
pip install .
O banco de dados SQLite é criado automaticamente na primeira execução no diretório de dados do usuário da plataforma (~/.local/share/mcpsafetywarden/ no Linux, ~/Library/Application Support/mcpsafetywarden/ no macOS, %APPDATA%\mcpsafetywarden\ no Windows). Substitua com MCP_DB_PATH.
Proteção de credenciais (automática, nenhuma ação necessária)
Valores secretos passados para register_server ou onboard_server (tokens Bearer, chaves de API em headers ou env) são automaticamente detectados e substituídos por identificadores opacos cref_ antes que qualquer coisa toque no contexto do modelo. A credencial real é armazenada criptografada no banco de dados e resolvida silenciosamente no momento da conexão. O modelo, o histórico da conversa e os logs veem apenas cref_<id>.
Opcional: criptografia em repouso para credenciais armazenadas
pip install cryptography
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
Defina a chave impressa como MCP_DB_ENCRYPTION_KEY antes de iniciar o servidor. Isso criptografa tanto as credenciais do servidor quanto os valores cref_ em repouso.
Toda a configuração é feita através de variáveis de ambiente.
Nota de segurança: Nunca faça commit de chaves de API ou da chave de criptografia. O wrapper remove seus próprios segredos dos ambientes de processos filhos antes de iniciar servidores stdio.
Adicione o wrapper ao claude_desktop_config.json:
{
"mcpServers": {
"mcpsafetywarden": {
"command": "mcpsafetywarden-server",
"args": [],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"MCP_DB_ENCRYPTION_KEY": "<chave_fernet_gerada>"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/seunome/Documentos"]
}
}
}
Registre cada servidor com o wrapper antes de usar:
mcpsafetywarden register filesystem --transport stdio \
--command npx \
--args '["-y", "@modelcontextprotocol/server-filesystem", "/Users/seunome/Documentos"]'
Para uma configuração de gateway obrigatório onde todas as chamadas de ferramenta devem passar pelo wrapper, veja docs/DEPLOYMENT.md.
Veja docs/TOOLS.md para a referência completa das ferramentas.
24 subcomandos cobrindo todas as 25 ferramentas MCP. Todo comando suporta --json para saída legível por máquina e --yes / -y para pular prompts de confirmação.
Veja docs/CLI.md para a referência completa com sinalizadores e exemplos.
Kali Linux MCP, Burp Suite MCP e Snyk integram-se automaticamente uma vez registrados. O Kali enriquece o estágio Recon e ping_server com dados reais de nmap/traceroute. O Burp adiciona sondagem HTTP bruta, callbacks fora de banda e evidências de proxy. O Snyk analisa metadados de ferramentas em busca de strings de injeção, shadowing de ferramentas, segredos codificados e outras 16 verificações.
Veja docs/INTEGRATIONS.md para instruções de configuração.
Instale em modo editável:
pip install -e ".[all]"
Execute o servidor e observe os logs:
mcpsafetywarden-server 2>server.log
Cada módulo usa logging.getLogger(__name__). O servidor não chama logging.basicConfig por conta própria - configure o logging no seu ponto de entrada antes de importar.
pytest tests/ -v
Defina uma chave de API LLM para incluir testes assistidos por LLM; sem ela, eles são pulados automaticamente. Veja docs/TESTING.md para verificação passo a passo de classificação, varredura de injeção, controle de risco e aplicação de políticas.
Veja CONTRIBUTING.md para padrões de código e diretrizes de pull requests.
Licença Apache 2.0. Veja LICENSE para detalhes.
| Variável | Padrão | Finalidade |
|---|
MCP_TRANSPORT | stdio | Modo de transporte: stdio, sse ou streamable_http |
MCP_HOST | 127.0.0.1 | Endereço de vinculação para transportes HTTP |
MCP_PORT | 8000 | Porta de vinculação para transportes HTTP |
MCP_AUTH_TOKEN | (não definido) | Token Bearer para autenticação de transporte HTTP |
MCP_DB_ENCRYPTION_KEY | (não definido) | Chave Fernet para criptografar credenciais armazenadas em repouso |
ANTHROPIC_API_KEY | (não definido) | Ativa Anthropic como provedor LLM |
OPENAI_API_KEY | (não definido) | Ativa OpenAI como provedor LLM |
GEMINI_API_KEY ou GOOGLE_API_KEY | (não definido) | Ativa Gemini como provedor LLM (GEMINI_API_KEY preferido) |
OLLAMA_MODEL | (não definido) | Nome do modelo para Ollama (ex.: llama3.1) |
OLLAMA_BASE_URL | http://localhost:11434/v1 | URL base da API do Ollama |
SNYK_TOKEN | (não definido) | Ativa a detecção de injeção de prompt Snyk E001 |
MCP_SCANNER_API_KEY | (não definido) | Chave do mecanismo de ML em nuvem da Cisco AI Defense |
MCP_SCANNER_LLM_API_KEY | (não definido) | Chave LLM para análise AST interna da Cisco |
MCP_DB_PATH | (não definido) | Substitui o caminho do arquivo do banco de dados SQLite |
MCP_GRAPH_POLICY | warn | Aplicação do grafo em safe_tool_call: off (desabilitado), warn (anexar contexto de risco à resposta), block (bloquear duramente ferramentas de criticidade/alta explosão a menos que approved=True) |
GITHUB_TOKEN | (não definido) | Token de acesso pessoal do GitHub para varredura de código-fonte (aumenta o limite de taxa de 60 para 5.000 req/hora) |
| Ferramenta | O que faz |
|---|
onboard_server | Registrar + inspecionar + varredura de segurança em uma chamada |
register_server | Registrar um servidor; opcionalmente auto-inspecionar |
inspect_server | Atualizar lista de ferramentas e perfis |
check_server_drift | Detectar deriva de esquema e lista de ferramentas em relação à linha de base armazenada |
list_servers | Listar todos os servidores registrados |
list_server_tools | Listar ferramentas em um servidor com perfis resumidos |
preflight_tool_call | Avaliação de risco sem execução |
safe_tool_call | Executar com controle de risco e alternativas |
get_tool_profile | Perfil comportamental completo com estatísticas observadas |
get_retry_policy | Recomendações de repetição e tempo limite |
suggest_safer_alternative | Substitutos mais seguros classificados por LLM |
run_replay_test | Teste de idempotência (chama a ferramenta duas vezes) |
security_scan_server | Auditoria de segurança ao vivo (mcpsafety+, Cisco, Snyk) |
scan_all_servers | Pipeline mcpsafety+ em todos os servidores registrados |
get_security_scan | Relatório de varredura de segurança mais recente armazenado |
set_tool_policy | Política permanente de permitir/bloquear para uma ferramenta |
get_run_history | Histórico recente de execução para uma ferramenta |
ping_server | Verificação de acessibilidade com latência |
discover_servers | Escanear sistema de arquivos em busca de configurações de cliente MCP e extrair entradas de servidor |
onboard_discovered_servers | Registrar servidores descobertos em massa |
get_risk_graph | Construir ou consultar o grafo de risco do inventário (servidores, ferramentas, descobertas, clientes agente) |
explain_tool_risk | Percorrer caminhos de risco para uma ferramenta: raio de explosão, riscos de composição, tags MITRE, ação recomendada |
explain_client_risk | Analisar riscos entre servidores para todos os servidores sob um cliente agente |
analyze_cve_blast_radius | Relatar CVEs afetando múltiplos servidores sob o mesmo cliente |
export_graph | Exportar grafo de risco como JSON ou diagrama Mermaid |
| Documento | Conteúdo |
|---|
| docs/TOOLS.md | Referência completa para todas as 25 ferramentas MCP |
| docs/CLI.md | Subcomandos da CLI, sinalizadores e exemplos |
| docs/INTEGRATIONS.md | Configuração do Kali, Burp Suite e Snyk |
| docs/DEPLOYMENT.md | Implantação stdio, HTTP, container e gateway |
| docs/TROUBLESHOOTING.md | Erros comuns e correções |
| docs/SECURITY.md | Detalhes de segredos, autenticação, isolamento e varredura |
| docs/TESTING.md | Etapas de verificação para cada recurso |
| docs/COMPARISON.md | Comparação com ferramentas relacionadas |
| docs/ROADMAP.md | Funcionalidades planejadas |