review-mcp-server

otomatty/review-mcp-server

3.1

If you are the rightful owner of review-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The Model Context Protocol (MCP) server offers AI-driven review capabilities for code, documentation, and test cases, along with robust prompt template management.

Tools
5
Resources
0
Prompts
0

Review MCP Server

コード、ドキュメント、テストケースに対するAI駆動のレビュー機能を提供するModel Context Protocol (MCP) サーバー。包括的なプロンプトテンプレート管理機能を備えています。

機能

  • コードレビュー: コードの品質、バグ、セキュリティ問題、ベストプラクティスをレビュー
  • ドキュメントレビュー: ドキュメントの明確性、完全性、正確性をレビュー
  • テストレビュー: テストコードのカバレッジ、品質、完全性をレビュー
  • プロンプトテンプレート管理: 一貫したレビュー品質のためのカスタムプロンプトテンプレートの作成、更新、管理

インストール

前提条件

  • Go 1.24以降
  • MCP対応クライアント(VS Code、Claude Desktop、Cursorなど)

ソースからビルド

git clone <repository-url>
cd review-mcp-server
go build -o review-mcp-server ./cmd/review-mcp-server

グローバルインストール

go install ./cmd/review-mcp-server

設定

環境変数

サーバーはREVIEW_MCP_プレフィックス付きの環境変数で設定できます:

  • REVIEW_MCP_TEMPLATE_DIR: プロンプトテンプレートのディレクトリ(デフォルト: ~/.review-mcp-server/prompts
  • REVIEW_MCP_LOG_LEVEL: ログレベル - debuginfowarn、またはerror(デフォルト: info
  • REVIEW_MCP_ENABLE_LOGGING: 詳細ログを有効化(デフォルト: false
  • REVIEW_MCP_LOG_FILE: ログファイルのパス(デフォルト: stderr)

コマンドラインオプション

review-mcp-server stdio [flags]

Flags:
  --template-dir string    プロンプトテンプレートのディレクトリ
  --log-level string       ログレベル (debug, info, warn, error) (デフォルト "info")
  --enable-logging         詳細ログを有効化
  --log-file string        ログファイルのパス
  -h, --help              stdioのヘルプ

使用方法

サーバーの起動

サーバーをstdioモードで起動:

review-mcp-server stdio

MCPクライアントの設定

VS Code

MCP設定(.vscode/settings.jsonまたはユーザー設定)に追加:

{
  "mcp.servers": {
    "review-mcp-server": {
      "command": "review-mcp-server",
      "args": ["stdio"]
    }
  }
}
Claude Desktop

Claude Desktopの設定ファイルに追加:

{
  "mcpServers": {
    "review-mcp-server": {
      "command": "review-mcp-server",
      "args": ["stdio"]
    }
  }
}

利用可能なツール

レビューツール

review_code

コードの品質、バグ、セキュリティ問題、ベストプラクティスをレビューします。

パラメータ:

  • code (必須): レビューするコードの内容
  • language (必須): プログラミング言語(例: go, python, javascript, typescript)
  • file_path (オプション): レビュー対象のファイルパス
  • focus_areas (オプション): フォーカス領域のカンマ区切りリスト(例: security,performance,readability)
  • template (オプション): 使用するプロンプトテンプレート名(デフォルト: code_review_default
review_documentation

ドキュメントの明確性、完全性、正確性、構造をレビューします。

パラメータ:

  • content (必須): レビューするドキュメントの内容
  • format (オプション): ドキュメント形式 - markdownまたはplain_text(デフォルト: markdown
  • target_audience (オプション): 対象読者(例: beginners, developers, users)
  • template (オプション): 使用するプロンプトテンプレート名(デフォルト: doc_review_default
review_tests

テストコードのカバレッジ、品質、構造、完全性をレビューします。

パラメータ:

  • test_code (必須): レビューするテストコード
  • test_type (必須): テストの種類 - unitintegration、またはe2e
  • coverage_info (オプション): テストカバレッジ情報
  • template (オプション): 使用するプロンプトテンプレート名(デフォルト: test_review_default

プロンプトテンプレート管理ツール

list_prompt_templates

利用可能なすべてのプロンプトテンプレートを一覧表示します。

パラメータ:

  • type (オプション): テンプレートタイプでフィルタ(code_reviewdoc_reviewtest_review
get_prompt_template

名前で特定のプロンプトテンプレートを取得します。

パラメータ:

  • name (必須): 取得するテンプレート名
create_prompt_template

新しいプロンプトテンプレートを作成します。

パラメータ:

  • name (必須): テンプレート名
  • type (必須): テンプレートタイプ(code_reviewdoc_reviewtest_review
  • description (オプション): テンプレートの説明
  • variables (オプション): テンプレート変数のカンマ区切りリスト
  • content (必須): テンプレート内容(Goテンプレート構文をサポート)
update_prompt_template

既存のプロンプトテンプレートを更新します。

パラメータ:

  • name (必須): 更新するテンプレート名
  • new_name (オプション): テンプレートの新しい名前
  • type (オプション): テンプレートタイプ
  • description (オプション): テンプレートの説明
  • variables (オプション): テンプレート変数のカンマ区切りリスト
  • content (オプション): テンプレート内容
delete_prompt_template

プロンプトテンプレートを削除します。

パラメータ:

  • name (必須): 削除するテンプレート名

プロンプトテンプレート

テンプレートの保存場所

サーバーは優先順位順に複数のテンプレート保存場所をサポートします:

  1. プロジェクトローカルテンプレート(最高優先度): プロジェクトルートの.review-prompts/またはprompts/ディレクトリ
  2. グローバルテンプレート: ~/.review-mcp-server/prompts(または--template-dirでカスタムディレクトリ)
  3. デフォルトテンプレート: 自動的に読み込まれる組み込みテンプレート

サーバーは現在の作業ディレクトリから開始してルートまで遡り、プロジェクトテンプレートを自動的に検索します。プロジェクトテンプレートはグローバルテンプレートより優先されます。

デフォルトテンプレート

サーバーには3つのデフォルトテンプレートが付属しています:

  1. code_review_default: デフォルトのコードレビューテンプレート
  2. doc_review_default: デフォルトのドキュメントレビューテンプレート
  3. test_review_default: デフォルトのテストレビューテンプレート

技術固有のテンプレート

プログラミング言語や技術スタックに基づいて自動的に選択される技術固有のテンプレートを作成できます。命名規則は以下の通りです:

  • code_review_<language>: 例: code_review_gocode_review_pythoncode_review_typescript
  • doc_review_<format>: 例: doc_review_markdowndoc_review_asciidoc
  • test_review_<framework>: 例: test_review_jesttest_review_pytest

技術固有のテンプレートが見つからない場合、サーバーはデフォルトテンプレートにフォールバックします。

: Goコードをレビューする場合、サーバーは以下を実行します:

  1. プロジェクトテンプレートでcode_review_goを探す
  2. グローバルテンプレートでcode_review_goを探す
  3. code_review_defaultにフォールバック

テンプレート構造

テンプレートは2つの形式で保存できます:

Markdown形式(推奨)

テンプレートはYAMLフロントマター付きのMarkdownファイル(.md)として保存されます。この形式は読みやすく編集しやすいです:

---
name: code_review_go
type: code_review
description: Go-specific code review template
variables:
  - language
  - code
  - focus_areas
---

You are an expert Go code reviewer. Review the following Go code.

Code to review:
```go
{{.code}}

Focus areas: {{.focus_areas}}

Please provide a structured review covering:

  1. Go-specific best practices
  2. Error handling patterns
  3. Concurrency safety
  4. Performance considerations
  5. Code organization

Format your response as JSON with the following structure: { "summary": "Overall assessment", "issues": [ { "severity": "error|warning|info", "line": <line_number>, "message": "Issue description", "suggestion": "How to fix" } ], "suggestions": ["General improvement suggestions"], "score": <0-100> }


#### YAML形式(レガシー)

後方互換性のために、テンプレートはYAMLファイル(`.yaml`)としても保存できます:

```yaml
name: code_review_strict
type: code_review
description: Strict code review template
variables:
  - language
  - code
  - focus_areas
content: |
  You are an expert code reviewer. Review the following {{.language}} code.
  
  Code to review:
  ```{{.language}}
  {{.code}}

Focus areas: {{.focus_areas}}

...


**注意**: 同じ名前の`.md`と`.yaml`ファイルが両方存在する場合、Markdownバージョンが優先されます。

### テンプレート変数

テンプレートはGoテンプレート構文をサポートします。利用可能な変数はレビュータイプによって異なります:

**コードレビュー:**
- `language`: プログラミング言語
- `code`: コード内容
- `focus_areas`: レビューのフォーカス領域
- `file_path`: ファイルパス(提供された場合)

**ドキュメントレビュー:**
- `content`: ドキュメント内容
- `format`: ドキュメント形式
- `target_audience`: 対象読者

**テストレビュー:**
- `test_code`: テストコード内容
- `test_type`: テストの種類(unit, integration, e2e)
- `coverage_info`: カバレッジ情報

### プロジェクトローカルテンプレートの使用

プロジェクト固有のテンプレートを使用するには:

1. プロジェクトルートに`.review-prompts/`または`prompts/`ディレクトリを作成
2. YAMLフロントマター付きのMarkdownテンプレートファイル(`.md`)(推奨)またはYAMLファイル(`.yaml`)を追加
3. サーバーがこれらのテンプレートを自動的に検出して使用します

**プロジェクト構造の例:**

my-project/ ├── .review-prompts/ │ ├── code_review_go.md │ ├── code_review_python.md │ └── doc_review_markdown.md ├── src/ └── README.md


**Markdownテンプレートの例** (`.review-prompts/code_review_go.md`):
```markdown
---
name: code_review_go
type: code_review
description: Go code review template for this project
variables:
  - language
  - code
  - focus_areas
---

You are reviewing Go code for our project.

Code to review:
```go
{{.code}}

Focus areas: {{.focus_areas}}

Please pay special attention to:

  • Go idioms and best practices
  • Error handling patterns
  • Context usage
  • Goroutine safety

プロジェクトテンプレートは自動的に検出され、グローバルテンプレートより優先されます。これにより、特定のプロジェクトやチーム向けにレビュープロンプトをカスタマイズできます。

**例: TypeScript/Node.js向けの詳細レビューテンプレート**

プロジェクト内に`.review-prompts/code_review_typescript.md`を作成することで、TypeScript/Node.js製解析ツール向けの詳細なコードレビューが可能です。このテンプレートには、設計とアーキテクチャ、TypeScriptの型定義、Node.jsの非同期処理、解析ロジックの堅牢性、テストコードの有効性など、5つのカテゴリにわたる詳細なチェックリストが含まれています。

テンプレートの例は`pkg/prompts/templates/code_review_typescript.md`を参照してください。

## 例

### コードレビュー

```json
{
  "tool": "review_code",
  "arguments": {
    "code": "function add(a, b) { return a + b; }",
    "language": "javascript",
    "focus_areas": "security,performance"
  }
}

カスタムテンプレートの作成

{
  "tool": "create_prompt_template",
  "arguments": {
    "name": "security_review",
    "type": "code_review",
    "description": "Security-focused code review",
    "content": "Review the following code for security vulnerabilities...",
    "variables": "language,code"
  }
}

開発

プロジェクト構造

review-mcp-server/
├── cmd/
│   └── review-mcp-server/
│       └── main.go                 # メインエントリーポイント
├── internal/
│   └── server/
│       └── server.go               # MCPサーバー実装
├── pkg/
│   ├── review/
│   │   ├── code_review.go         # コードレビューツール
│   │   ├── doc_review.go          # ドキュメントレビューツール
│   │   ├── test_review.go         # テストレビューツール
│   │   └── review_types.go         # 共有型
│   └── prompts/
│       ├── templates.go           # テンプレート型
│       ├── storage.go              # テンプレートストレージ
│       ├── renderer.go            # テンプレートレンダリング
│       └── tools.go                # テンプレート管理ツール
└── README.md

ビルド

go build -o review-mcp-server ./cmd/review-mcp-server

テスト

テストの実行

すべてのテストを実行:

go test ./...

詳細出力でテストを実行:

go test ./... -v

特定のパッケージのテストを実行:

go test ./pkg/prompts -v
go test ./pkg/review -v

特定のテストを実行:

go test ./pkg/prompts -v -run TestFileStorage_Create
テストカバレッジ

テストスイートは主要コンポーネント全体で包括的なカバレッジを提供します:

総テスト数: 35テスト

  • pkg/prompts: 20テスト
  • pkg/review: 15テスト
テストカテゴリ
1. テンプレートストレージテスト (pkg/prompts/storage_test.go)

ファイルベースおよびインメモリテンプレートストレージ操作のテスト:

  • TestFileStorage_Create: テンプレート作成とファイル永続化を検証

    • 一時ディレクトリにテンプレートを作成
    • YAMLファイルが正しく作成されることを検証
    • 作成後にテンプレートを取得できることを検証
  • TestFileStorage_Update: テンプレート更新機能をテスト

    • 既存のテンプレートを更新
    • 変更がディスクに永続化されることを検証
    • 古いテンプレートが正しく置き換えられることを確認
  • TestFileStorage_Delete: テンプレート削除をテスト

    • テンプレートを削除
    • ファイルがディスクから削除されることを検証
    • テンプレートがアクセス不能になることを確認
  • TestFileStorage_List: テンプレート一覧をテスト

    • すべてのテンプレートを一覧表示
    • 正しいテンプレートメタデータが返されることを検証
    • フィルタリング機能をテスト
  • TestFileStorage_LoadDefaults: デフォルトテンプレートの読み込みをテスト

    • デフォルトテンプレートを読み込む(code_review_default、doc_review_default、test_review_default)
    • すべてのデフォルトが利用可能であることを検証
    • デフォルトテンプレートが正しい構造を持っていることを確認
  • TestInMemoryStorage: インメモリストレージ実装をテスト

    • メモリ内のCRUD操作をテスト
    • ファイルシステムとの相互作用がないことを検証
    • 同時アクセスシナリオをテスト
  • TestTemplate_Validate: テンプレート検証をテスト

    • 有効なテンプレートは検証を通過
    • 必須フィールド(name、type、content)が欠けている場合は拒否
    • 無効なテンプレートタイプは拒否
2. テンプレートレンダラーテスト (pkg/prompts/renderer_test.go)

様々なコンテキストでのテンプレートレンダリングのテスト:

  • TestRenderer_Render: 基本的なテンプレートレンダリング

    • 提供されたコンテキスト変数でテンプレートをレンダリング
    • 変数置換が正しく動作することを検証
    • 単一テンプレート内の複数変数をテスト
  • TestRenderer_RenderByType: タイプベースのテンプレートレンダリング

    • タイプ(code_review、doc_review、test_review)でテンプレートをレンダリング
    • 正しいテンプレートが選択されることを検証
    • デフォルトテンプレートのフォールバックをテスト
  • TestRenderer_RenderWithCustomTemplate: カスタムテンプレートレンダリング

    • アドホックなテンプレート内容をレンダリング
    • ストレージなしでテンプレートレンダリングをテスト
    • カスタム内容が正しく処理されることを検証
  • TestRenderer_Render_MissingVariable: 欠落変数の処理

    • テンプレート変数が欠落している場合の動作をテスト
    • 未定義変数の適切な処理を検証
    • 欠落コンテキストでレンダリングが失敗しないことを確認
3. レビューツールテスト (pkg/review/*_test.go)

コード、ドキュメント、テストレビューツールのテスト:

コードレビューテスト (code_review_test.go):

  • TestReviewCodeTool: 包括的なコードレビューツールテスト
    • valid_request: 必須パラメータでの基本的なコードレビューをテスト
    • with_focus_areas: フォーカス領域(セキュリティ、パフォーマンスなど)でのレビューをテスト
    • with_file_path: ファイルパスコンテキストでのレビューをテスト
    • missing_code: コードパラメータ欠落時のエラーハンドリングを検証
    • missing_language: 言語パラメータ欠落時のエラーハンドリングを検証

ドキュメントレビューテスト (doc_review_test.go):

  • TestReviewDocumentationTool: ドキュメントレビューツールテスト
    • valid_request: 基本的なドキュメントレビューをテスト
    • with_format_and_audience: 形式と対象読者パラメータでのレビューをテスト
    • missing_content: コンテンツ欠落時のエラーハンドリングを検証

テストレビューテスト (test_review_test.go):

  • TestReviewTestsTool: テストコードレビューツールテスト
    • valid_unit_test_request: ユニットテストレビューをテスト
    • valid_integration_test_request: 統合テストレビューをテスト
    • valid_e2e_test_request: エンドツーエンドテストレビューをテスト
    • with_coverage_info: カバレッジ情報でのレビューをテスト
    • missing_test_code: テストコード欠落時のエラーハンドリングを検証
    • missing_test_type: テストタイプ欠落時のエラーハンドリングを検証
    • invalid_test_type: 無効なテストタイプの拒否を検証
4. プロンプト管理ツールテスト (pkg/prompts/tools_test.go)

MCPツール経由でのプロンプトテンプレートのCRUD操作のテスト:

  • TestListPromptTemplatesTool: テンプレート一覧ツールをテスト

    • 利用可能なすべてのテンプレートを一覧表示
    • テンプレートタイプによるフィルタリングをテスト
    • 正しいメタデータが返されることを検証
  • TestGetPromptTemplateTool: テンプレート取得ツールをテスト

    • 名前で特定のテンプレートを取得
    • テンプレート内容が正しく返されることを検証
    • 存在しないテンプレートのエラーハンドリングをテスト
  • TestCreatePromptTemplateTool: テンプレート作成ツールをテスト

    • MCPツール経由で新しいテンプレートを作成
    • すべてのテンプレートフィールドが正しく設定されることを検証
    • 重複テンプレートのエラーハンドリングをテスト
  • TestUpdatePromptTemplateTool: テンプレート更新ツールをテスト

    • 既存のテンプレートフィールドを更新
    • 部分更新(一部のフィールドのみ)をテスト
    • 変更が永続化されることを検証
  • TestDeletePromptTemplateTool: テンプレート削除ツールをテスト

    • MCPツール経由でテンプレートを削除
    • テンプレートがストレージから削除されることを検証
    • 存在しないテンプレートのエラーハンドリングをテスト
テストヘルパー

テストスイートには再利用可能なヘルパー関数が含まれています:

  • createMCPRequest: テスト用のモックMCP CallToolRequestオブジェクトを作成
  • getTextResult: 検証のためにMCP CallToolResultからテキストコンテンツを抽出
テスト戦略
  1. ユニットテスト: 各コンポーネントを分離してテスト
  2. 統合テスト: MCPツールをモックリクエストでエンドツーエンドでテスト
  3. エラーハンドリング: すべてのエラーケースを明示的にテスト
  4. エッジケース: 境界条件と欠落パラメータを検証
  5. ストレージ分離: ファイルベースのテストはクリーンアップされる一時ディレクトリを使用
継続的インテグレーション

テストスイートはCI/CDパイプラインで実行するように設計されています:

# カバレッジ付きでテストを実行
go test ./... -cover

# レース検出付きでテストを実行
go test ./... -race

# デバッグ用に詳細出力でテストを実行
go test ./... -v

すべてのテストは一貫してパスし、MCPサーバー機能の信頼性の高い検証を提供します。

ライセンス

[ライセンスをここに追加]

貢献

[貢献ガイドラインをここに追加]