DevReview MCP Server
by bpinheiromg
README.md
# DevReview
Ferramenta de code review assistida por IA — projeto base do Curso 5: MCP, Conectando o Agent ao Mundo Real.
## Stack
- **Frontend:** React 18, TypeScript, Vite, TailwindCSS, shadcn/ui, Redux Toolkit
- **Backend (construído durante o curso):** Node.js, @modelcontextprotocol/sdk, Zod
- **Banco de dados:** Supabase (PostgreSQL)
## Pré-requisitos
- Node.js 20+
- npm 10+
- Supabase CLI (`npm install -g supabase`)
## Como rodar
### 1. Frontend (React App)
```bash
# Instalar dependências
npm install
# Iniciar o Supabase local
npx supabase start
# Aplicar migrations e seed data
npx supabase db reset
# Copiar variáveis de ambiente
cp apps/web/.env.example apps/web/.env
# Iniciar o frontend
npm run dev
```
O app abre em `http://localhost:5173`.
O Supabase Studio fica em `http://localhost:54323`.
### 2. MCP Server (DevReview MCP)
O MCP Server expõe ferramentas para code review via Model Context Protocol (STDIO).
```bash
# Entrar no diretório do MCP Server
cd apps/mcp-server
# Instalar dependências (se não feito via workspace)
npm install
# Build do TypeScript
npm run build
# Rodar o servidor manualmente (para testes)
node build/index.js
```
#### Variáveis de Ambiente (apps/mcp-server/.env)
```env
SUPABASE_URL=http://localhost:54321
SUPABASE_SERVICE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```
> Use as credenciais do `npx supabase start` (Service Role Key).
---
## 🔍 MCP Inspector
O **MCP Inspector** é uma UI web para explorar e testar tools, resources e prompts do servidor MCP.
### Como rodar
```bash
# Na raiz do projeto
npm run inspector
# Ou diretamente no mcp-server
cd apps/mcp-server
npx @modelcontextprotocol/inspector build/index.js
```
### Acesso
- Abre automaticamente em **http://localhost:6274**
- Permite:
- Listar e chamar **Tools** (mock_code_review, supabase_health, create_review, get_review_rules, get_review_history, cache_review, get_pr_diff, post_comment)
- Ler **Resources** (mock://repo/{owner}/{repo})
- Executar **Prompts** (code_review_prompt)
- Ver logs de debug em tempo real
### Testando Tools no Inspector
1. Aba **Tools** → selecione uma tool → clique **Call**
2. Para tools que precisam de Supabase (`create_review`, `get_review_rules`, etc.):
- Certifique-se que `npx supabase start` está rodando
- O `.env` tem as credenciais corretas
3. Tools mock (`mock_code_review`, `get_pr_diff` com `mock=true`) funcionam sem Supabase
---
## 🛠️ VS Code Integration
O projeto já inclui configuração para a extensão **MCP** do VS Code.
### Setup
1. Instale a extensão: **MCP** (Model Context Protocol)
2. O arquivo `.vscode/mcp.json` já configura o servidor:
```json
{
"servers": {
"devreview-mcp": {
"command": "node",
"args": ["apps/mcp-server/build/index.js"],
"env": {
"SUPABASE_URL": "http://localhost:54321",
"SUPABASE_SERVICE_KEY": "${env:SUPABASE_SERVICE_KEY}"
}
}
}
}
```
3. No VS Code: `Ctrl+Shift+P` → **MCP: Restart Servers**
4. As tools ficam disponíveis no Copilot Chat / Agent Mode
---
## Estrutura do Projeto
```
devreview/
├── apps/
│ ├── web/ # Frontend React
│ └── mcp-server/ # MCP Server (curso)
│ ├── build/ # Compilado (gitignored)
│ ├── src/
│ │ ├── core/ # config, logger, supabase client
│ │ ├── tools/ # 8 MCP Tools
│ │ ├── resources/# 1 Resource (mock repo)
│ │ ├── prompts/ # 1 Prompt (code review)
│ │ └── types/ # Tipos Supabase gerados
│ ├── .env # Variáveis locais
│ ├── package.json
│ └── tsconfig.json
├── supabase/ # Migrations, seed, config
│ └── migrations/
│ └── 00001_init_schema.sql
├── .vscode/
│ └── mcp.json # Config MCP para VS Code
├── PRD_MCP_SERVER_MINIMO.md
├── README.md
└── package.json # Workspace root
```
---
## MCP Tools Disponíveis
| Tool | Descrição | Requer Supabase |
|------|-----------|-----------------|
| `mock_code_review` | Code review simulado com achados pré-definidos | ❌ |
| `supabase_health` | Health check da conexão Supabase | ✅ |
| `create_review` | Insere registro no `review_history` | ✅ |
| `get_review_rules` | Busca regras de review do time | ✅ |
| `get_review_history` | Histórico de reviews com paginação | ✅ |
| `cache_review` | Upsert de review (team_id+repo+pr_number) | ✅ |
| `get_pr_diff` | Diff do PR (mock mode disponível) | ❌ (mock) |
| `post_comment` | Comentário em PR (salvo no histórico) | ✅ |
---
## Scripts Úteis
```bash
# Raiz do projeto
npm run dev # Frontend
npm run inspector # MCP Inspector
npm run build # Build all workspaces
# apps/mcp-server
npm run build # Compila TypeScript
npm run start # Build + roda servidor
npm run dev # Watch mode (tsx)
npm run test # Vitest
npm run lint # ESLint
npm run typecheck # tsc --noEmit
```
---
## Comandos Supabase Úteis
```bash
npx supabase start # Inicia Supabase local
npx supabase stop # Para Supabase local
npx supabase status # Status + credenciais
npx supabase db reset # Reset DB + migrations + seed
npx supabase studio # Abre Studio no browser
npx supabase migration new # Cria nova migration
```
---
## Roadmap do Curso
- ✅ **Módulo 1-3**: MCP Server mínimo (tools, resources, prompts, Inspector, VS Code)
- ✅ **Módulo 4**: Supabase-backed tools (create_review, get_review_rules, get_review_history, cache_review, get_pr_diff, post_comment)
- 🔄 **Módulo 5**: GitHub API integration, PR analysis pipeline
- 🔄 **Módulo 6**: Real AI code review (OpenRouter + Nemotron)
- 🔄 **Módulo 7**: Webhooks, CI/CD integration
- 🔄 **Módulo 8**: Multi-repo, teams, advanced featuresThis server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues