Skip to main content
Glama
812Diasp

code-review-mcp

by 812Diasp
README.md
![Python](https://img.shields.io/badge/python-3.10+-blue)
![MCP](https://img.shields.io/badge/MCP-FastMCP-green)
![OpenRouter](https://img.shields.io/badge/LLM-OpenRouter-orange)

# code-review-mcp

Локальный MCP-сервер для Cursor: анализ кода, поиск багов, генерация тестов и документации через OpenRouter.

## 1. Prerequisites

- Python 3.10+
- Cursor IDE
- OpenRouter API key: [https://openrouter.ai/keys](https://openrouter.ai/keys)

## 2. Installation

```bash
git clone <repo>
cd <ABSOLUTE_PATH_TO_PROJECT>
python -m venv .venv
.venv\Scripts\activate       # Windows
pip install -r requirements.txt
Copy-Item .env.example .env
# вписать OPENROUTER_API_KEY в .env
```

Если вы используете не PowerShell, можно просто скопировать `.env.example` в `.env` любым удобным способом.

## 3. Cursor Integration

Подключить сервер можно двумя способами.

Способ A — через глобальный конфиг Cursor:

Файл конфигурации находится по пути `%APPDATA%\Cursor\User\globalStorage\cursor.mcp\mcp.json`.

Способ B — через `.cursor/mcp.json` в корне проекта (рекомендуемый):

```json
{
  "mcpServers": {
    "code-review-mcp": {
      "command": "<ABSOLUTE_PATH_TO_PROJECT>\\.venv\\Scripts\\python.exe",
      "args": [
        "<ABSOLUTE_PATH_TO_PROJECT>\\server.py"
      ],
      "env": {
        "OPENROUTER_API_KEY": "<YOUR_OPENROUTER_API_KEY>"
      }
    }
  }
}
```

Используйте только абсолютные пути. В Windows обратные слеши в JSON нужно писать как `\\`.

## 4. Verification

1. Откройте `Cursor Settings -> MCP` и убедитесь, что `code-review-mcp` виден со статусом `connected`.
2. В чате Cursor отправьте: `Use review_bugs tool on this code: def foo(): pass`
3. Ожидаемый результат: структурированный Markdown-ответ в чате без падения сервера.

## 5. Available Tools

| Tool | Description | Key params |
|------|-------------|------------|
| `review_bugs` | Find logical bugs | `focus` |
| `review_quality` | Code readability & style | `focus` |
| `review_security` | Security vulnerabilities | `focus` |
| `review_performance` | Performance bottlenecks | `focus` |
| `generate_tests` | Generate unit/integration tests | `test_framework`, `test_style` |
| `explain_code` | Explain code | `audience` (junior/middle/senior) |
| `refactor_code` | Suggest refactoring | `goal` |
| `full_review` | Combined 4-section review | — |
| `generate_docs` | Generate docstrings | `doc_style` |

## Models

По умолчанию модель задаётся в `config.py` через `DEFAULT_MODEL`, `FAST_MODEL` и `STRONG_MODEL`.

Любой tool также принимает аргумент `model`, поэтому при вызове можно явно передать любую OpenRouter-совместимую модель, если нужен другой баланс цены, скорости и качества.

## 6. Troubleshooting

- `ValueError: OPENROUTER_API_KEY is required` — проверьте `.env` или секцию `env` в `mcp.json`.
- Cursor не видит сервер — проверьте, что в конфиге указаны абсолютные пути и они ведут к существующим файлам.
- Ответ приходит слишком долго или упирается в таймаут — попробуйте более быструю или более доступную OpenRouter-модель через аргумент `model` у tool-вызова.