Skip to main content
Glama
frangelbarrera

Code Review Agent MCP

Code Review Agent MCP

お世辞を言わないAIコードレビューエージェント。コードが悪ければ、そのまま言う。遠慮なく。

PyPI version Python 3.10+ License: MIT Code style: ruff

AIを搭載したMCP(Model Context Protocol)サーバーで、経験豊富なメンテナーが本番プロジェクトのパッチをレビューするのと同じ方法でコードをレビューします。技術的に、直接的で、外交的ではありません。

できること

  • AIコードレビュー — コードスニペット、ファイル、git diff、コミットをレビュー

  • 重大度ラベル付きの指摘を返す: CRITICAL、MAJOR、MINOR、NIT、CLEAN

  • すべての指摘に具体的な行番号を記載

  • なぜ悪いのかを説明し、その修正方法を示す

  • 明確な判定で締めくくる: 「Ship it.」または「Do not merge until...」

  • 偽りの称賛なし。曖昧な言い回しなし。謝罪なし。無駄な言葉なし。

Related MCP server: greybeard

なぜ?

ほとんどのAIコードレビュアーは丁寧になるように訓練されています。彼らは「素晴らしいですが...」と前置きし、「考慮したほうがいいかもしれません」と曖昧にし、「これは潜在的に問題になる可能性があります」と指摘を和らげます。

それが本格的なコードレビューのやり方ではありません。実際のプロジェクト(Linuxカーネル、PostgreSQL、Redis、SQLite)では、メンテナーはパッチを直接レビューします。問題を見つけて明確に指摘します。彼らは作者の気分を良くするために存在するのではなく、コードを良くするために存在します。

このMCPはその伝統を具現化しています。その性格こそが製品なのです。

アンチRLHFエンジニアリング

LLMは丁寧になるようにRLHFで訓練されています。このAIエージェントは3つの層でそれに対抗します。

  1. システムプロンプト — 12の基本原則(コードではなくコード、判定優先、重大度ラベル、行番号の引用、偽りの称賛なし、曖昧な言い回しなし、謝罪なし、無駄な言葉なし、二人称、人口統計への言及なし、拒否なし、幻覚のバグなし)

  2. ポストプロセッサ — LLM出力から40以上の禁止フレーズ(曖昧な言い回し、和らげる言葉、謝罪、無駄な言葉)を除去

  3. バリデータ — 出力に重大度ラベル、行番号の引用、判定があるかをチェックし、曖昧な問題記述を幻覚シグナルとしてフラグ付け

ツール

ツール

説明

review_code

コードスニペットをレビュー

review_file

ディスクからファイルをレビュー(サンドボックス化)

review_diff

git diffをレビュー

review_commit

gitコミットをレビュー(git show <ref>)

list_severities

定義付きの重大度ラベルを一覧表示

厳しさレベル

レベル

動作

gentle

表現を少し和らげます。それでもすべての指摘は報告します。

standard

デフォルトの率直なレビュー。直接的で、技術的で、外交的ではありません。

brutal

和らげません。「これは変更すべきです」ではなく「これは間違っています」。

kernel-maintainer

最大限の率直さ。短い文。命令形。

インストール

pip install code-review-agent-mcp

またはuvを使用:

uv pip install code-review-agent-mcp

設定

Claude Desktop

claude_desktop_config.jsonに追加:

{
  "mcpServers": {
    "code-review-agent": {
      "command": "python",
      "args": ["-m", "code_review_agent.server"]
    }
  }
}

またはpipでインストールした場合:

{
  "mcpServers": {
    "code-review-agent": {
      "command": "code-review-agent-mcp"
    }
  }
}

Cursor

.cursor/mcp.jsonに追加:

{
  "mcpServers": {
    "code-review-agent": {
      "command": "python",
      "args": ["-m", "code_review_agent.server"]
    }
  }
}

使用例

コードスニペットをレビュー

User: Review this code for me

def get_user(username):
    import sqlite3
    conn = sqlite3.connect("users.db")
    cursor = conn.cursor()
    query = f"SELECT * FROM users WHERE username = '{username}'"
    cursor.execute(query)
    return cursor.fetchone()

MCPの応答:

## Code Review: snippet

### Findings

**CRITICAL** `snippet:7` — SQL injection
The query uses an f-string with user input, allowing SQL injection. Use parameterized queries: `cursor.execute("SELECT * FROM users WHERE username = ?", (username,))`.

### Verdict

Do not merge until CRITICAL is fixed.

ファイルをレビュー

User: Review src/auth.py

MCP calls review_file with file_path="src/auth.py"
Returns blunt review with line citations.

コミットをレビュー

User: Review the last commit

MCP calls review_commit with commit_ref="HEAD"
Returns blunt review of the diff.

重大度ラベル

ラベル

使用するタイミング

CRITICAL

セキュリティ脆弱性、データ損失、デッドロック、RCE、壊れた状態で出荷されるもの

MAJOR

ロジックエラー、競合状態、リソースリーク、壊れたエッジケース、誤った抽象化

MINOR

スタイル、命名、テスト不足、冗長なコード、脆い仮定

NIT

見た目、フォーマット、コメントの言い回し

CLEAN

セクションが問題ない場合は明示的に述べる。捏造バグバイアスを防ぐ。

セキュリティ

このMCPサーバーはセキュリティサンドボックスを実装しています:

  • ファイルアクセスはデフォルトで現在の作業ディレクトリにサンドボックス化されています

  • 機密パス(.ssh、.aws、.env、/etc/passwdなど)は拒否されます

  • Git refsはオプションインジェクションを防ぐために厳格な文字ホワイトリストで検証されます

  • サブプロセス呼び出しはshell=Falseを使用し、グローバルgit設定を無効にします

完全な脅威モデルについてはSECURITY.mdを参照してください。

開発

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=code_review_agent

ベンチマークスニペット

benchmarks/ディレクトリには、レビュアーを検証する5つの回帰スニペットが含まれています:

  1. SQLインジェクション — CRITICAL、行番号の引用、「Do not merge」を期待

  2. 可変デフォルト引数 — MAJORを期待

  3. クリーンなコード(二分探索) — CLEAN、「Ship it」を期待(アンチ幻覚テスト)

  4. 握りつぶされた例外 — MAJORを期待

  5. オフバイワン — MAJORを期待

クリーンなコードのベンチマークが最も重要です — 幻覚を検出します。レビュアーが正しいコードにバグを捏造した場合、アンチRLHFシステムは壊れています。

ライセンス

MIT

謝辞

このプロジェクトは、カーネルメンテナーのコードレビューの伝統を具現化しています。これは多くのプロジェクト(Linuxカーネル、PostgreSQL、Redis、SQLiteなど)の多くのシニアエンジニアが実践している方法論です。私たちはその伝統を引用しており、特定の個人を引用しているわけではありません。

Related MCP Connectors

Related MCP Servers