查看MCP服务器
针对代码、文档和测试用例AI提供驱动审阅功能Model Context Protocol (MCP) 服务器。具有全面的提示模板管理功能。
机能
- 代码审核:复查代码质量、错误、安全问题和最佳实践
- 文档审核:审阅文档的明确性、完整性和准确性
- 测试审核:复查测试代码的覆盖范围、质量和完整性
- 提示模板管理:创建、更新和管理一致审核质量的自定义提示模板
安装
前提条件
- Go 1.24以降
- MCP支持的客户端(VSCode、Claude Desktop、Cursor等)
从源构建
git clone
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 stdioMCP客户端设置
VS Code
MCP设定(.vscode/settings.json或用户设置):
{
"mcp.servers": {
"review-mcp-server": {
"command": "review-mcp-server",
"args": ["stdio"]
}
}
}克劳德桌面
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自定义目录) - 默认模板:自动加载的内置模板
服务器从当前工作目录开始追溯到根目录,并自动搜索项目模板。项目模板优先于全局模板。
默认模板
服务器附带三个默认模板:
- code_review_default:默认代码审核模板
- doc_review_default:默认文档审核模板
- test_review_default:默认测试审核模板
特定于技术的模板
您可以创建基于编程语言和技术栈自动选择的技术特定模板。命名规则如下:
code_review_: 例:code_review_go、code_review_python、code_review_typescriptdoc_review_: 例:doc_review_markdown、doc_review_asciidoctest_review_: 例:test_review_jest、test_review_pytest
如果找不到特定于技术的模板,服务器将回退到默认模板。
例: Go如果要复查代码,服务器将执行以下操作:
- 在项目模板中
code_review_go寻找 - 在全局模板中
code_review_go寻找 code_review_default后退
模板结构
可以以两种格式保存模板:
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:{{.code}}
重点领域:{{.Focus_areas}}
请提供一份结构化的审查,包括:
1. 采用特定的最佳实践
1. 错误处理模式
1. 并发安全
1. 性能考虑
1. 代码组织
使用以下结构将响应格式化为JSON:
{
“总结”:“总体评价”,
“问题”:\[
{
“严重性”:“错误|警告|信息”,
“line”:\
,
“message”:“问题描述”,
“建议”:“如何修复”
}
\],
“建议”:\[“一般改进建议”\],
“分数”:\
}
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:{{.code}}
重点领域:{{.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: カバレッジ情報
プロジェクトローカルテンプレートの使用
プロジェクト固有のテンプレートを使用するには:
- プロジェクトルートに
.review-prompts/またはprompts/ディレクトリを作成 - YAMLフロントマター付きのMarkdownテンプレートファイル(
.md)(推奨)またはYAMLファイル(.yaml)を追加 - サーバーがこれらのテンプレートを自動的に検出して使用します
プロジェクト構造の例:
我的项目/
├── .复习提示/
│ ├── code_review_go.md
│ ├── code_review_python.md
│ └── doc_review_markdown.md
├── src/
└── README.md
Markdownテンプレートの例 (.review-prompts/code_review_go.md):
---
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:{{.code}}
重点领域:{{.Focus_areas}}
请特别注意:
- Go习语和最佳实践
- 错误处理模式
- 上下文用法
- Goroutine安全
プロジェクトテンプレートは自動的に検出され、グローバルテンプレートより優先されます。これにより、特定のプロジェクトやチーム向けにレビュープロンプトをカスタマイズできます。
例: TypeScript/Node.js向けの詳細レビューテンプレート
プロジェクト内に.review-prompts/code_review_typescript.mdを作成することで、TypeScript/Node.js製解析ツール向けの詳細なコードレビューが可能です。このテンプレートには、設計とアーキテクチャ、TypeScriptの型定義、Node.jsの非同期処理、解析ロジックの堅牢性、テストコードの有効性など、5つのカテゴリにわたる詳細なチェックリストが含まれています。
テンプレートの例はpkg/prompts/templates/code_review_typescript.mdを参照してください。
例
コードレビュー
{
"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提供服务器功能的可靠验证。
许可证
将许可证添加到此处
貢献
\[此处添加贡献准则\]
