这是一个MCP(模型上下文协议)服务器,用于协助Claude Code审查提交和代码库。该工具利用外部LLM(OpenAI、Google Gemini、Ollama、Mistral)提供智能代码审查能力、git diff分析、提交质量评估以及未提交工作的分析。
git clone https://github.com/dshills/second-opinion.git
cd second-opinion
go mod tidy
go build -o bin/second-opinion
Second Opinion支持两种配置方法,优先级顺序如下:
~/.second-opinion.json.env文件或系统环境变量在您的主目录中创建一个.second-opinion.json文件:
{
"default_provider": "openai",
"temperature": 0.3,
"max_tokens": 4096,
"server_name": "Second Opinion 🔍",
"server_version": "1.0.0",
"openai": {
"api_key": "sk-your-openai-api-key",
"model": "gpt-5-mini"
},
"google": {
"api_key": "your-google-api-key",
"model": "gemini-2.0-flash-exp"
},
"ollama": {
"endpoint": "http://localhost:11434",
"model": "devstral:latest"
},
"mistral": {
"api_key": "your-mistral-api-key",
"model": "mistral-small-latest"
},
"memory": {
"max_diff_size_mb": 10,
"max_file_count": 1000,
"max_line_length": 1000,
"enable_streaming": true,
"chunk_size_mb": 1
}
}
🚀 智能优化功能:
如果没有找到JSON配置,服务器会回退到环境变量:
cp .env.example .env
.env并配置您的LLM提供商:# 设置默认提供商
DEFAULT_PROVIDER=openai # 或 google, ollama, mistral
# 配置每个提供商及其API密钥和首选模型
OPENAI_API_KEY=sk-your-openai-api-key
OPENAI_MODEL=gpt-5-mini # 或 gpt-5, gpt-5-nano, gpt-5-chat-latest, gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo
GOOGLE_API_KEY=your-google-api-key
GOOGLE_MODEL=gemini-2.0-flash-exp # 或 gemini-1.5-flash, gemini-1.5-pro
OLLAMA_ENDPOINT=http://localhost:11434
OLLAMA_MODEL=devstral:latest # 或 llama3.2, codellama, mistral, 等
MISTRAL_API_KEY=your-mistral-api-key
MISTRAL_MODEL=mistral-small-latest # 或 mistral-large-latest, codestral-latest
# 全局设置适用于所有提供商
LLM_TEMPERATURE=0.3 # 控制随机性(0.0-2.0,默认值:0.3)
LLM_MAX_TOKENS=4096 # 最大响应长度(默认值:4096)
配置文件的位置取决于您的操作系统:
~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json打开配置文件并添加Second Opinion服务器:
选项1:使用JSON配置(推荐)
{
"mcpServers": {
"second-opinion": {
"command": "/path/to/second-opinion/bin/second-opinion"
}
}
}
将/path/to/second-opinion替换为您克隆仓库的实际路径。
选项2:使用环境变量
{
"mcpServers": {
"second-opinion": {
"command": "/path/to/second-opinion/bin/second-opinion",
"env": {
"DEFAULT_PROVIDER": "openai",
"OPENAI_API_KEY": "your-openai-api-key",
"OPENAI_MODEL": "gpt-5-mini",
"LLM_TEMPERATURE": "0.3",
"LLM_MAX_TOKENS": "4096"
}
}
}
}
保存配置后,重启Claude Code使更改生效。
在Claude Code中,您应该能看到“second-opinion”在MCP服务器列表中。您可以测试它,询问:
“你能从当前目录获取哪些git仓库信息?”
analyze_git_diff 🚀 优化分析git diff输出以了解代码变更,使用配置的LLM进行自动优化。
参数:
diff_content(必需):要分析的git diff输出summarize(可选):是否提供变更总结provider(可选):使用的LLM提供商(覆盖默认值)model(可选):使用的模型(覆盖提供商默认值)智能优化:
Claude Code中的示例:
“分析这个git diff并告诉我有什么变化:[粘贴diff内容]”
review_code 🚀 优化使用配置的LLM审查代码的质量、安全性和最佳实践,进行任务特定优化。
参数:
code(必需):要审查的代码language(可选):代码的编程语言focus(可选):特定关注领域 - security、performance、style或allprovider(可选):使用的LLM提供商(覆盖默认值)model(可选):使用的模型(覆盖提供商默认值)智能优化:
Claude Code中的示例:
“审查这段Python代码的安全问题:[粘贴代码]”
analyze_commit 🚀 优化使用配置的LLM分析git提交的质量和是否遵循最佳实践,进行提交特定优化。
参数:
commit_sha(可选):要分析的git提交SHA(默认:HEAD)repo_path(可选):git仓库路径(默认:当前目录)provider(可选):使用的LLM提供商(覆盖默认值)model(可选):使用的模型(覆盖提供商默认值)智能优化:
Claude Code中的示例:
“分析此仓库的最新提交”
“分析提交abc123并告诉我是否遵循最佳实践”
analyze_uncommitted_work 🚀 优化分析git仓库中的未提交更改,帮助准备提交,进行智能优化。
参数:
repo_path(可选):git仓库路径(默认:当前目录)staged_only(可选):仅分析暂存的更改(默认:false,分析所有未提交的更改)provider(可选):使用的LLM提供商(覆盖默认值)model(可选):使用的模型(覆盖提供商默认值)智能优化:
LLM分析包括:
Claude Code中的示例:
“分析我的未提交更改并建议提交消息”
“在我提交之前审查我的暂存更改”
“我是否应该将当前更改拆分为多个提交?”
get_repo_info获取关于git仓库的信息(无LLM分析)。
参数:
repo_path(可选):git仓库路径(默认:当前目录)Claude Code中的示例:
“显示有关此git仓库的信息”
Second Opinion包含一个全面的优化系统,能够根据内容和上下文自动调整性能:
second-opinion/
├── main.go # MCP服务器设置和工具注册
├── handlers.go # 工具处理器实现
├── validation.go # 输入验证函数
├── config/ # 配置加载和优化
│ ├── config.go # 主配置及优化方法
│ └── optimization_test.go # 综合优化测试
├── llm/ # LLM提供商实现
│ ├── provider.go # 提供商接口、提示和优化包装器
│ ├── openai.go # OpenAI实现
│ ├── google.go # Google Gemini实现
│ ├── ollama.go # Ollama实现,带有高级选项
│ └── mistral.go # Mistral实现,带有额外参数
├── CLAUDE.md # Claude Code特定指令
└── TODO.md # 开发路线图
# 运行所有测试
go test ./... -v
# 特别运行优化测试
go test ./config -v
# 运行特定测试套件
go test ./llm -v -run TestProviderConnections
# 带有竞态检测运行
go test -race ./...
# 带有覆盖率运行
go test -cover ./...
# 如果尚未安装,请安装golangci-lint
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
# 运行代码检查
golangci-lint run
# 尽可能自动修复问题
golangci-lint run --fix
# 为当前平台构建
go build -o bin/second-opinion
# 带有竞态检测器构建(用于开发)
go build -race -o bin/second-opinion
# 为不同平台构建
GOOS=darwin GOARCH=amd64 go build -o bin/second-opinion-darwin-amd64
GOOS=linux GOARCH=amd64 go build -o bin/second-opinion-linux-amd64
GOOS=windows GOARCH=amd64 go build -o bin/second-opinion-windows-amd64.exe
“提供商未配置”错误
~/.second-opinion.json或环境变量“不是git仓库”错误
.git文件夹的目录中运行工具超时错误
ollama serve权限被拒绝错误
chmod +x bin/second-opinion要查看详细的日志,可以直接运行服务器:
./bin/second-opinion 2>debug.log
欢迎贡献!请:
参见TODO.md以了解计划的功能和已知问题。
对于大型仓库,请参阅docs/MEMORY_USAGE.md以获取高效处理大型diff的配置选项。
MIT