PR Guardian MCP
Analyzes GitHub Pull Request diffs for security vulnerabilities and data leakage, with deterministic filtering for non-code changes to save costs.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PR Guardian MCPanalyze PR #42 diff for security issues"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PR Guardian MCP
Servidor Model Context Protocol (MCP) open-source que analisa diffs de Pull Requests do GitHub com foco em segurança e vazamento de dados.
A arquitetura prioriza economia de tokens: a maioria dos PRs (docs, CSS, formatação) é aprovada por lógica nativa TypeScript, sem chamar a LLM. Apenas mudanças em arquivos de lógica disparam análise via LangGraph + Claude 3.5 Haiku.
Arquitetura
flowchart TD
A[MCP Tool: analyze_pr_diff] --> B[LangGraph: classify]
B --> C{Filtro Determinístico}
C -->|docs / css / formatação| D[auto_approve]
C -->|.ts / .tsx / outros riscos| E[ai_analyze]
E --> F[Claude 3.5 Haiku]
F --> G[Zod Validation]
D --> G
G --> H[Resposta MCP estruturada]
subgraph Observabilidade
F -.->|trace| LS[LangSmith]
end1. Filtro Determinístico (custo zero)
Antes de qualquer chamada à API da Anthropic, o nó classify executa regras nativas em TypeScript:
Condição | Ação |
Apenas | Aprovação automática |
Diff altera somente whitespace (formatação) | Aprovação automática |
Presença de | Encaminha para IA |
Outros arquivos fora do escopo seguro | Encaminha para IA |
Por que isso importa? Em repositórios reais, uma parcela significativa dos PRs altera apenas documentação, estilos ou formatação. Enviar esses diffs para uma LLM gera:
Custo desnecessário — tokens de entrada/saída cobrados sem valor de segurança
Latência — 1–3s adicionais por PR trivial
Ruído — falsos positivos em conteúdo que não executa código
O filtro determinístico responde em microssegundos, com custo $0.00.
2. Filtro de IA (LangGraph)
Quando arquivos de lógica são detectados, o grafo aciona o nó ai_analyze:
Modelo: Claude 3.5 Haiku (
claude-3-5-haiku-20241022)Escopo: apenas riscos de segurança e vazamento de dados
Saída: JSON estruturado via
withStructuredOutput
Categorias analisadas: secret_leak, injection, auth_bypass, data_exposure, dependency_risk.
3. Validação (Zod)
Toda resposta — determinística ou da LLM — passa pelo nó validate_result e é parseada com PrAnalysisResultSchema antes de retornar ao cliente MCP. Respostas malformadas da LLM são rejeitadas com erro explícito.
4. Observabilidade (LangSmith)
Chamadas LLM são rastreadas automaticamente quando:
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=lsv2_...
LANGCHAIN_PROJECT=pr-guardian-mcpNo dashboard do LangSmith você visualiza latência, tokens consumidos e custo estimado por execução do grafo.
Related MCP server: Argus MCP
Estrutura do Projeto
pr-guardian-mcp/
├── src/
│ ├── index.ts # Servidor MCP (stdio)
│ ├── graph.ts # LangGraph: classify → auto_approve | ai_analyze → validate
│ ├── schema.ts # Schemas Zod (input, output, LLM)
│ ├── deterministic-filter.ts # Lógica de filtro nativo (custo zero)
│ └── langsmith.ts # Configuração de observabilidade
├── Dockerfile
├── docker-compose.yml
├── .env.example
├── package.json
└── tsconfig.jsonPré-requisitos
Node.js ≥ 20
Chave da API Anthropic (apenas para PRs com arquivos de lógica)
Chave do LangSmith (opcional, recomendado)
Instalação
git clone https://github.com/seu-usuario/pr-guardian-mcp.git
cd pr-guardian-mcp
npm install
cp .env.example .env
# Edite .env com suas chavesUso Local
# Desenvolvimento
npm run dev
# Build + produção
npm run build
npm startConfiguração no Cursor / Claude Desktop
Adicione ao arquivo de configuração MCP:
{
"mcpServers": {
"pr-guardian-mcp": {
"command": "node",
"args": ["/caminho/absoluto/pr-guardian-mcp/dist/index.js"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"LANGCHAIN_TRACING_V2": "true",
"LANGCHAIN_API_KEY": "lsv2_...",
"LANGCHAIN_PROJECT": "pr-guardian-mcp"
}
}
}
}Ferramenta MCP
analyze_pr_diff
Parâmetro | Tipo | Obrigatório | Descrição |
|
| Sim | Diff unified do PR (formato git) |
|
| Não | Título do PR para contexto |
|
| Não | Número do PR |
Exemplo de resposta:
{
"approved": true,
"path": "deterministic",
"reason": "Alterações exclusivas em documentação (.md) ou estilos (.css) — aprovado sem chamada à LLM.",
"findings": [],
"metadata": {
"analyzedAt": "2026-07-15T18:00:00.000Z",
"filesChanged": ["README.md", "docs/guide.md"],
"tokenCostSaved": true
}
}Docker
Build e execução
docker build -t pr-guardian-mcp .
docker run -i --rm \
-e ANTHROPIC_API_KEY=sk-ant-... \
-e LANGCHAIN_TRACING_V2=true \
-e LANGCHAIN_API_KEY=lsv2_... \
-e LANGCHAIN_PROJECT=pr-guardian-mcp \
pr-guardian-mcpDocker Compose
cp .env.example .env
docker compose up --buildO container expõe o servidor via stdio (-i), compatível com clientes MCP que lançam processos filhos.
Stack
Pacote | Papel |
| Servidor MCP |
| Orquestração do fluxo Determinístico vs IA |
| Integração Claude 3.5 Haiku |
| Validação estrita de input/output |
| Tracing de custo e latência |
Licença
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/maiv3n/pr-guardian-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server