consensus-mcp
v1.3.1
Published
MCP server for AI consensus between Claude Code and Gemini CLI
Maintainers
Readme
Consensus MCP
Claude Code와 Gemini CLI 간의 양방향 AI 합의 시스템을 위한 MCP 서버입니다.
왜 필요한가?
기존 방식의 문제점
단일 AI만 사용할 경우:
- 편향된 관점: 하나의 AI 모델만으로는 다양한 시각을 얻기 어려움
- 검증 부재: AI가 제안한 코드나 설계에 대한 교차 검증이 불가능
- 수동 복사/붙여넣기: 다른 AI의 의견을 듣고 싶으면 직접 창을 오가며 복사해야 함
- 컨텍스트 손실: AI 간 대화 히스토리가 유지되지 않음
Consensus MCP의 해결책
| 기존 방식 | Consensus MCP |
|-----------|---------------|
| Claude에서 코드 작성 → Gemini에 복사 → 검토 결과 다시 복사 | "이 코드 Gemini한테 검증받아줘" 한마디로 끝 |
| 여러 창 오가며 수동으로 의견 취합 | 자동으로 양방향 토론 및 합의 도출 |
| 대화 히스토리 관리 불가 | 세션 기반 멀티라운드 토론 지원 |
| AI별로 따로 작업 | 하나의 인터페이스에서 두 AI 협업 |
사용 시 장점
- 이중 검증: 보안, 성능, 설계를 두 AI가 교차 검토
- 자연어 명령: "Gemini한테 물어봐", "Claude랑 합의해줘" 등 간단한 명령
- 양방향 지원: Claude에서 Gemini 호출, Gemini에서 Claude 호출 모두 가능
- 세션 유지: 멀티라운드 토론으로 심층적인 합의 도출
- 추가 API 비용 없음: 기존 구독(Claude Pro/Max)과 무료(Gemini CLI) 내에서 사용
빠른 설정
Claude Code에 MCP 추가
~/.claude.json 파일에 다음을 추가하세요:
{
"mcpServers": {
"consensus": {
"type": "stdio",
"command": "npx",
"args": ["-y", "consensus-mcp"]
}
}
}Gemini CLI에 MCP 추가
~/.gemini/settings.json 파일에 다음을 추가하세요:
{
"mcpServers": {
"consensus": {
"command": "npx",
"args": ["-y", "consensus-mcp"]
}
}
}사전 요구사항
Claude Code에서 Gemini 호출 시
npm install -g @google/gemini-cliGemini CLI에서 Claude 호출 시
npm install -g @anthropic-ai/claude-code사용 가능한 도구
Claude Code용 (Gemini 호출)
| 도구명 | 설명 | 필수 파라미터 |
|--------|------|---------------|
| validate_code | Gemini에게 코드 검증 요청 | code, description |
| validate_design | Gemini에게 설계 검토 요청 | design, requirements |
| reach_consensus | Gemini와 합의 도출 | topic, claudePosition |
Gemini CLI용 (Claude 호출)
| 도구명 | 설명 | 필수 파라미터 |
|--------|------|---------------|
| validate_code_with_claude | Claude에게 코드 검증 요청 | code, description |
| validate_design_with_claude | Claude에게 설계 검토 요청 | design, requirements |
| reach_consensus_with_claude | Claude와 합의 도출 | topic, geminiPosition |
공통 도구
| 도구명 | 설명 |
|--------|------|
| get_consensus_history | 세션 히스토리 조회 (파라미터: sessionId) |
| list_sessions | 활성 세션 목록 조회 |
사용 예시
Claude Code에서
"이 코드를 Gemini한테 검증받아줘"
"이 설계를 Gemini가 어떻게 생각하는지 물어봐"
"Gemini랑 합의해서 최종 결정해줘"Gemini CLI에서
"이 코드를 Claude한테 검증받아줘"
"이 설계를 Claude가 어떻게 생각하는지 물어봐"
"Claude랑 합의해서 최종 결정해줘"도구 파라미터 상세
validate_code / validate_code_with_claude
{
"code": "검증할 코드 (필수)",
"description": "코드 변경 설명 (필수)",
"context": "파일 경로, 프로젝트 정보 등 (선택)",
"focusAreas": ["security", "performance", "readability"],
"relatedFiles": [
{ "path": "src/utils.ts", "content": "파일 내용..." },
{ "path": "src/types.ts", "content": "타입 정의..." }
]
}validate_design / validate_design_with_claude
{
"design": "설계 제안 내용 (필수)",
"requirements": "요구사항 (필수)",
"constraints": "제약조건 (선택, 기본값: '없음')",
"relatedFiles": [
{ "path": "src/architecture.md", "content": "현재 아키텍처..." }
]
}reach_consensus / reach_consensus_with_claude
{
"topic": "토론 주제 (필수)",
"claudePosition": "Claude의 입장 (reach_consensus에서 필수)",
"geminiPosition": "Gemini의 입장 (reach_consensus_with_claude에서 필수)",
"sessionId": "세션 ID (선택, 빈 문자열이면 새 세션)",
"maxRounds": 3,
"projectContext": "React + TypeScript 프로젝트, REST API 사용",
"relatedFiles": [
{ "path": "package.json", "content": "의존성 정보..." }
]
}컨텍스트 공유:
relatedFiles와projectContext파라미터를 사용하면 상대 AI가 프로젝트의 전체 맥락을 이해하고 더 정확한 리뷰를 제공할 수 있습니다.
응답 형식
모든 검증 도구는 다음 형식으로 응답합니다:
{
"validated": true,
"summary": "✅ 승인 또는 ❌ 반대 메시지",
"geminiResponse/claudeResponse": {
"approved": true/false,
"confidence": 0.0-1.0,
"reason": "이유",
"concerns": ["우려사항"],
"suggestions": ["제안사항"],
"alternativeApproach": "대안"
}
}라이선스
MIT
