otomatty/review-mcp-server
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.
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: ログレベル -debug、info、warn、または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(必須): テストの種類 -unit、integration、またはe2ecoverage_info(オプション): テストカバレッジ情報template(オプション): 使用するプロンプトテンプレート名(デフォルト:test_review_default)
プロンプトテンプレート管理ツール
list_prompt_templates
利用可能なすべてのプロンプトテンプレートを一覧表示します。
パラメータ:
type(オプション): テンプレートタイプでフィルタ(code_review、doc_review、test_review)
get_prompt_template
名前で特定のプロンプトテンプレートを取得します。
パラメータ:
name(必須): 取得するテンプレート名
create_prompt_template
新しいプロンプトテンプレートを作成します。
パラメータ:
name(必須): テンプレート名type(必須): テンプレートタイプ(code_review、doc_review、test_review)description(オプション): テンプレートの説明variables(オプション): テンプレート変数のカンマ区切りリストcontent(必須): テンプレート内容(Goテンプレート構文をサポート)
update_prompt_template
既存のプロンプトテンプレートを更新します。
パラメータ:
name(必須): 更新するテンプレート名new_name(オプション): テンプレートの新しい名前type(オプション): テンプレートタイプdescription(オプション): テンプレートの説明variables(オプション): テンプレート変数のカンマ区切りリストcontent(オプション): テンプレート内容
delete_prompt_template
プロンプトテンプレートを削除します。
パラメータ:
name(必須): 削除するテンプレート名
プロンプトテンプレート
テンプレートの保存場所
サーバーは優先順位順に複数のテンプレート保存場所をサポートします:
- プロジェクトローカルテンプレート(最高優先度): プロジェクトルートの
.review-prompts/またはprompts/ディレクトリ - グローバルテンプレート:
~/.review-mcp-server/prompts(または--template-dirでカスタムディレクトリ) - デフォルトテンプレート: 自動的に読み込まれる組み込みテンプレート
サーバーは現在の作業ディレクトリから開始してルートまで遡り、プロジェクトテンプレートを自動的に検索します。プロジェクトテンプレートはグローバルテンプレートより優先されます。
デフォルトテンプレート
サーバーには3つのデフォルトテンプレートが付属しています:
- code_review_default: デフォルトのコードレビューテンプレート
- doc_review_default: デフォルトのドキュメントレビューテンプレート
- test_review_default: デフォルトのテストレビューテンプレート
技術固有のテンプレート
プログラミング言語や技術スタックに基づいて自動的に選択される技術固有のテンプレートを作成できます。命名規則は以下の通りです:
code_review_<language>: 例:code_review_go、code_review_python、code_review_typescriptdoc_review_<format>: 例:doc_review_markdown、doc_review_asciidoctest_review_<framework>: 例:test_review_jest、test_review_pytest
技術固有のテンプレートが見つからない場合、サーバーはデフォルトテンプレートにフォールバックします。
例: Goコードをレビューする場合、サーバーは以下を実行します:
- プロジェクトテンプレートで
code_review_goを探す - グローバルテンプレートで
code_review_goを探す 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:
- Go-specific best practices
- Error handling patterns
- Concurrency safety
- Performance considerations
- 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: テスト用のモックMCPCallToolRequestオブジェクトを作成getTextResult: 検証のためにMCPCallToolResultからテキストコンテンツを抽出
テスト戦略
- ユニットテスト: 各コンポーネントを分離してテスト
- 統合テスト: MCPツールをモックリクエストでエンドツーエンドでテスト
- エラーハンドリング: すべてのエラーケースを明示的にテスト
- エッジケース: 境界条件と欠落パラメータを検証
- ストレージ分離: ファイルベースのテストはクリーンアップされる一時ディレクトリを使用
継続的インテグレーション
テストスイートはCI/CDパイプラインで実行するように設計されています:
# カバレッジ付きでテストを実行
go test ./... -cover
# レース検出付きでテストを実行
go test ./... -race
# デバッグ用に詳細出力でテストを実行
go test ./... -v
すべてのテストは一貫してパスし、MCPサーバー機能の信頼性の高い検証を提供します。
ライセンス
[ライセンスをここに追加]
貢献
[貢献ガイドラインをここに追加]