Skip to main content
Glama
bpinheiromg

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 features