MCP Sage

mcp-sage

다른 LLM(현재 Gemini 2.5 Pro만 지원)으로 프롬프트를 전송하는 도구를 제공하는 MCP(Model Context Protocol) 서버입니다. 이 서버에서는 참조된 모든 파일 경로(폴더에 대해 재귀적으로)를 프롬프트에 포함합니다. 방대한 컨텍스트를 정확하게 처리할 수 있는 모델에서 다른 의견이나 자세한 코드 검토를 받는 데 유용합니다.

이론적 해석

저는 Claude Code를 많이 사용합니다. 제 워크플로에 잘 맞는 훌륭한 제품입니다. 하지만 컨텍스트가 풍부한 최신 모델들은 더 많은 컨텍스트가 필요한 더 복잡한 코드베이스를 다룰 때 정말 유용해 보입니다. 덕분에 Claude Code를 개발 도구로 계속 사용하면서 Gemini 2.5 Pro의 풍부한 컨텍스트를 활용하여 Claude Code의 제한된 컨텍스트를 보완할 수 있습니다.

영감

이 프로젝트는 두 가지 다른 오픈 소스 프로젝트에서 영감을 얻었습니다.

개요

이 프로젝트는 두 가지 도구를 노출하는 MCP 서버를 구현합니다.

second-opinion

  1. 프롬프트와 파일/디렉토리 경로 목록을 입력으로 받습니다.
  2. 파일을 구조화된 XML 형식으로 압축합니다.
  3. 결합된 콘텐츠가 Gemini의 토큰 한도(1M 토큰) 내에 있는지 확인합니다.
  4. 결합된 프롬프트 + 컨텍스트를 Gemini 2.5 Pro로 전송합니다.
  5. 모델의 응답을 반환합니다.

expert-review

  1. 코드 변경에 대한 지침과 파일/디렉토리 경로 목록을 입력으로 받습니다.
  2. 파일을 구조화된 XML 형식으로 압축합니다.
  3. 결합된 콘텐츠가 Gemini의 토큰 한도(1M 토큰) 내에 있는지 확인합니다.
  4. SEARCH/REPLACE 블록을 사용하여 모델에 응답 형식을 지정하도록 지시하는 특수 프롬프트를 생성합니다.
  5. 결합된 컨텍스트 + 지침을 Gemini 2.5 Pro로 전송합니다.
  6. 쉬운 구현을 위해 SEARCH/REPLACE 블록으로 포맷된 편집 제안을 반환합니다.

필수 조건

  • Node.js(v18 이상)
  • Google Gemini API 키

설치

지엑스피1

환경 변수

다음 환경 변수를 설정하세요.

  • GEMINI_API_KEY : Google Gemini API 키

용법

npm run build 로 빌드한 후 MCP 구성에 다음을 추가합니다.

GEMINI_API_KEY=XXX node /path/to/this/repo/dist/index.js

격려

무언가에 대해 다른 사람의 의견을 듣고 싶다면 그냥 다른 사람의 의견을 요청하면 됩니다.

코드 검토를 받으려면 코드 검토나 전문가 검토를 요청하세요.

두 가지 모두 컨텍스트에 포함하려는 파일 경로를 제공하는 이점이 있지만, 생략하면 호스트 LLM이 포함할 내용을 추론할 가능성이 높습니다.

디버깅 및 모니터링

서버는 MCP 로깅 기능을 통해 자세한 모니터링 정보를 제공합니다. 이러한 로그에는 다음이 포함됩니다.

  • 토큰 사용 통계(사용된 토큰 대비 토큰 제한)
  • 요청에 포함된 파일 및 문서 수
  • 요청 처리 시간 측정 항목
  • 토큰 제한을 초과했을 때의 오류 정보

로그는 MCP 프로토콜의 notifications/message 방식을 통해 전송되므로 JSON-RPC 통신을 방해하지 않습니다. 로깅을 지원하는 MCP 클라이언트는 이러한 로그를 적절하게 표시합니다.

로그 항목 예시:

Token usage: 1,234 / 1,000,000 tokens (0.12%) Files included: 3, Document count: 3 Sending request to Gemini with 1,234 tokens... Received response from Gemini in 982ms

도구 사용

두 번째 의견 도구

second-opinion 도구는 다음과 같은 매개변수를 허용합니다.

  • prompt (문자열, 필수): Gemini에 보낼 프롬프트
  • paths (문자열 배열, 필수): 컨텍스트로 포함할 파일 경로 목록

MCP 도구 호출 예(JSON-RPC 2.0 사용):

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "second-opinion", "arguments": { "prompt": "Explain how this code works", "paths": ["path/to/file1.js", "path/to/file2.js"] } } }

전문가 리뷰 도구

expert-review 도구는 다음과 같은 매개변수를 허용합니다.

  • instruction (문자열, 필수): 필요한 특정 변경 사항 또는 개선 사항
  • paths (문자열 배열, 필수): 컨텍스트로 포함할 파일 경로 목록

MCP 도구 호출 예(JSON-RPC 2.0 사용):

{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "expert-review", "arguments": { "instruction": "Add error handling to the function", "paths": ["path/to/file1.js", "path/to/file2.js"] } } }

응답에는 제안된 변경 사항을 구현하는 데 사용할 수 있는 SEARCH/REPLACE 블록이 포함됩니다.

<<<<<<< SEARCH function getData() { return fetch('/api/data') .then(res => res.json()); } ======= function getData() { return fetch('/api/data') .then(res => { if (!res.ok) { throw new Error(`HTTP error! Status: ${res.status}`); } return res.json(); }) .catch(error => { console.error('Error fetching data:', error); throw error; }); } >>>>>>> REPLACE

테스트 실행

도구를 테스트하려면:

# Test the second-opinion tool GEMINI_API_KEY=your_api_key_here node test/run-test.js # Test the expert-review tool GEMINI_API_KEY=your_api_key_here node test/test-expert.js

프로젝트 구조

  • src/index.ts : 도구 정의를 포함한 주요 MCP 서버 구현
  • src/pack.ts : 구조화된 XML 형식으로 파일을 압축하기 위한 도구
  • src/tokenCounter.ts : 프롬프트에서 토큰을 계산하기 위한 유틸리티
  • src/gemini.ts : Gemini API 클라이언트 구현
  • test/run-test.js : second-opinion 도구 테스트
  • test/test-expert.js : 전문가 리뷰 도구 테스트

특허

아이에스씨

-
security - not tested
-
license - not tested
-
quality - not tested

Gemini 2.5 Pro에서 파일 내용을 프롬프트에 내장하여 다른 사람의 의견이나 자세한 코드 검토를 얻을 수 있는 도구를 제공하는 MCP 서버로, 광범위한 컨텍스트를 가진 대규모 코드베이스를 처리할 수 있습니다.

  1. Rationale
    1. Inspiration
      1. Overview
        1. second-opinion
        2. expert-review
      2. Prerequisites
        1. Installation
          1. Environment Variables
            1. Usage
              1. Prompting
                1. Debugging and Monitoring
                2. Using the Tools
              2. Running the Tests
                1. Project Structure
                  1. License
                    ID: k6how3qzn4