AI

[LLM 필수 도구] noapi-google-search-mcp 완벽 가이드 - API 키 없이 Google 검색, OCR, 유튜브 분석까지!

Code GGOON 2026. 2. 13. 04:05
반응형

안녕하세요! 오늘은 로컬 LLM(LM Studio, Claude Desktop 등) 사용자들에게 필수적인 MCP 서버인 noapi-google-search-mcp를 소개해드리겠습니다. API 키 없이 Google 검색은 물론 OCR, 유튜브 분석, 이미지 인식까지 가능한 강력한 도구입니다.


📌 목차

  1. MCP란 무엇인가?
  2. noapi-google-search-mcp 소개
  3. API 기반 서버와의 비교
  4. 설치 방법
  5. MCP 클라이언트 설정
  6. 사용 가능한 도구들
  7. 실전 사용 예시
  8. 결론

🔍 MCP란 무엇인가?

MCP(Model Context Protocol)는 Anthropic에서 개발한 개방형 프로토콜로, AI 모델이 외부 도구와 데이터 소스에 연결될 수 있도록 표준화된 방법을 제공합니다.

MCP의 핵심 장점:

  • 표준화: 다양한 도구를 일관된 방식으로 연결
  • 확장성: 필요한 기능을 모듈처럼 추가
  • 보안: 로컬에서 실행되어 데이터 유출 우려 감소
  • 유연성: API 키 없이도 다양한 서비스 활용 가능

쉽게 말해, LLM에게 "손"과 "눈"을 달아주는 프로토콜이라고 생각하시면 됩니다!


🚀 noapi-google-search-mcp 소개

noapi-google-search-mcp는 Vincent Kaufmann이 개발한 MCP 서버로, Google API 키 없이 다음 기능들을 제공합니다:

✨ 주요 기능

  • 🔍 Google 검색 - 실시간 검색 결과
  • 🛒 Google 쇼핑 - 상품 가격 비교
  • ✈️ Google 항공권 - 최저가 항공권 검색
  • 🏨 Google 호텔 - 숙소 검색
  • 🗺️ Google 지도 - 장소 검색 및 길찾기
  • 🌤️ Google 날씨 - 실시간 날씨 정보
  • 📈 Google 주식 - 실시간 주가 정보
  • 📰 Google 뉴스 - 최신 뉴스 검색
  • 🎓 Google 학술 - 논문 검색
  • 📚 Google 도서 - 책 검색
  • 🖼️ Google 이미지 - 이미지 검색
  • 👁️ Google 렌즈 - 역이미지 검색
  • 🔤 로컬 OCR - 이미지에서 텍스트 추출 (인터넷 불필요)
  • 🎬 유튜브 트랜스크립션 - 자막 추출 및 분석
  • ✂️ 비디오 클립 추출 - 특정 주제 구간 자동 추출

🎯 특별한 점

  • API 키 불필요: Google Cloud 프로젝트 생성, API 활성화, 키 발급 과정 생략
  • 묣비용: 100회 이후 과금되는 API 기반 서버와 달리 완전 묣비
  • JavaScript 렌더링: Playwright 기반으로 동적 웹페이지 완벽 지원
  • 로컬 처리: OCR, 비디오 분석 등 민감한 작업을 로컬에서 수행

⚖️ API 기반 서버와의 비교

기능 noapi-google-search-mcp API 기반 MCP 서버
API 키 필요 ❌ 없음 ✅ 필요
비용 🆓 묣비 💰 100회/일 이후 과금
설정 시간 ⏱️ 5분 (pip install) ⏳ 30분+ (Cloud 프로젝트 설정)
JavaScript 페이지 ✅ 렌더링 지원 ❌ 미지원
Google 쇼핑/항공권/호텔 ✅ 내장 ❌ 별도 API 필요
Google 렌즈/이미지 ✅ 내장 ❌ 별도 API 필요
로컬 OCR ✅ 내장 (RapidOCR) ❌ 불가
비디오 트랜스크립션 ✅ 내장 (faster-whisper) ❌ 불가
결과 품질 👍 실제 Google 결과 🤔 Custom Search Engine

💻 설치 방법

방법 1: pipx로 설치 (추천)

# pipx 설치 (미설치 시)
pip install --user pipx

# noapi-google-search-mcp 설치
pipx install noapi-google-search-mcp

# Playwright Chromium 설치
playwright install chromium

방법 2: 가상환경에 설치

# 가상환경 생성
python3 -m venv ~/.local/share/noapi-google-search-mcp

# 패키지 설치
~/.local/share/noapi-google-search-mcp/bin/pip install noapi-google-search-mcp

# Chromium 설치
~/.local/share/noapi-google-search-mcp/bin/playwright install chromium

방법 3: pip로 직접 설치 (PEP 668 환경)

# --break-system-packages 플래그 사용
pip install --user --break-system-packages noapi-google-search-mcp

# PATH에 추가
export PATH="$PATH:$HOME/.local/bin"

# Chromium 설치
playwright install chromium

🔧 설치 후 PATH 설정

# ~/.bashrc 또는 ~/.zshrc에 추가
echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.bashrc
source ~/.bashrc

✅ 설치 확인

which noapi-google-search-mcp
# 출력: /home/user/.local/bin/noapi-google-search-mcp

noapi-google-search-mcp
# MCP 서버가 정상적으로 시작됨

⚙️ MCP 클라이언트 설정

1️⃣ LM Studio 설정

~/.lmstudio/mcp.json 파일 생성:

{
  "mcpServers": {
    "google-search": {
      "command": "noapi-google-search-mcp",
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

가상환경 설치 시:

{
  "mcpServers": {
    "google-search": {
      "command": "/home/user/.local/share/noapi-google-search-mcp/bin/noapi-google-search-mcp",
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

2️⃣ Claude Desktop 설정

claude_desktop_config.json 파일 편집:

{
  "mcpServers": {
    "google-search": {
      "command": "noapi-google-search-mcp"
    }
  }
}

3️⃣ OpenCode 설정

~/.config/opencode/opencode.json 파일 생성:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "google-search": {
      "type": "local",
      "command": ["/home/user/.local/bin/noapi-google-search-mcp"],
      "enabled": true,
      "environment": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

🛠️ 사용 가능한 도구들

🔍 검색 관련

google_search - 웹 검색

{
  "query": "파이썬 튜토리얼",
  "num_results": 5,
  "time_range": "past_week",
  "site": "github.com",
  "language": "ko",
  "region": "kr"
}

파라미터:

  • query (필수): 검색어
  • num_results: 결과 수 (1-10, 기본값 5)
  • time_range: 시간 필터 (past_hour, past_day, past_week, past_month, past_year)
  • site: 특정 사이트 제한 (reddit.com, github.com 등)
  • page: 페이지 번호 (1-10)
  • language: 언어 코드 (ko, en, ja 등)
  • region: 지역 코드 (kr, us, jp 등)

google_shopping - 쇼핑 검색

{
  "query": "노트북",
  "num_results": 5
}

google_flights - 항공권 검색

{
  "origin": "서울",
  "destination": "도쿄",
  "date": "2025-03-15",
  "return_date": "2025-03-22"
}

google_hotels - 호텔 검색

{
  "query": "부산 해운대",
  "num_results": 5
}

google_maps - 지도 검색

{
  "query": "강남역 맛집",
  "num_results": 5
}

google_maps_directions - 길찾기

{
  "origin": "서울역",
  "destination": "강남역",
  "mode": "transit"
}

mode 옵션: driving, walking, transit, cycling

📰 정보 검색

google_news - 뉴스 검색

google_scholar - 학술 검색

google_books - 도서 검색

google_finance - 주식 정보

google_weather - 날씨 정보

google_trends - 트렌드 검색

google_translate - 번역

🖼️ 이미지 및 비전

google_images - 이미지 검색

{
  "query": "고양이",
  "num_results": 5
}

google_lens - 역이미지 검색

{
  "image_source": "https://example.com/photo.jpg"
}

또는 로컬 파일:

{
  "image_source": "/home/user/image.jpg"
}

google_lens_detect - 객체 탐지 및 식별

OpenCV로 이미지 내 모든 객체를 탐지하고 각각 Google Lens로 식별

{
  "image_source": "/home/user/photo.jpg"
}

ocr_image - 로컬 OCR (오프라인 가능)

RapidOCR을 사용해 이미지에서 텍스트 추출

{
  "image_source": "/home/user/screenshot.png"
}

반환값:

  • 추출된 텍스트 (위치 순서대로 정렬)
  • 신뢰도 점수

🎬 비디오 도구

transcribe_video - 유튜브/비디오 트랜스크립션

{
  "url": "https://youtube.com/watch?v=...",
  "model_size": "base",
  "language": "ko"
}

model_size: tiny, base, small, medium, large

search_transcript - 트랜스크립션 검색

{
  "url": "https://youtube.com/watch?v=...",
  "query": "메모리 대역폭",
  "model_size": "base",
  "context_segments": 2
}

extract_video_clip - 비디오 클립 추출

{
  "url": "https://youtube.com/watch?v=...",
  "start_seconds": 150,
  "end_seconds": 315,
  "buffer_seconds": 3,
  "output_filename": "hardware_overview"
}

추출된 클립은 ~/clips/에 저장됩니다.

📄 기타 도구

visit_page - 웹페이지 방문

{
  "url": "https://example.com/article"
}

list_images - 이미지 파일 목록

{
  "directory": "~/lens/"
}

💡 실전 사용 예시

예시 1: 최신 기술 트렌드 검색

"지난주 Reddit에서 Python 비동기 프로그래밍에 대해 
가장 많이 논의된 내용을 검색해줘"

google_search 호출:

  • query: "Python async"
  • site: "reddit.com"
  • time_range: "past_week"

예시 2: 논문 리서치

"Transformer attention mechanism에 관한 
최신 논문 5개를 찾아줘"

google_scholar 호출

예시 3: 이미지 분석

"이 이미지에 있는 제품이 뭔지 알려줘"
[이미지 첨부]

google_lens 호출

예시 4: OCR로 문서 디지털화

"이 스캔한 영수증에서 텍스트를 추출해줘"

ocr_image 호출

예시 5: 유튜브 요약

"이 유튜브 영상에서 램과 메모리 대역폭에 
대해 언급된 부분을 찾아서 요약해줘"

transcribe_videosearch_transcript 순차 호출

예시 6: 특정 주제 클립 추출

"이 영상에서 '가격'에 대해 이야기하는 
부분만 잘라서 저장해줘"

transcribe_video → LLM이 타임스탬프 분석 → extract_video_clip 호출


🐛 문제 해결

"pipx: command not found"

pip install --user pipx
export PATH="$PATH:$HOME/.local/bin"

"externally-managed-environment" 에러

pip install --user --break-system-packages noapi-google-search-mcp

Playwright Chromium 설치 실패

# Node.js 먼저 설치 확인
node --version

# Playwright 재설치
playwright install chromium

MCP 서버 연결 실패

  1. 경로 확인: which noapi-google-search-mcp
  2. 권한 확인: chmod +x /home/user/.local/bin/noapi-google-search-mcp
  3. 로그 확인: 클라이언트 로그에서 에러 메시지 확인

📊 성능 팁

OCR 정확도 향상

  • 이미지 해상도가 높을수록 좋음 (최소 300dpi 권장)
  • 글자가 선명하고 배경과 대비가 뚜렷할 것
  • 기울어진 텍스트는 정면에서 촬영

비디오 트랜스크립션 속도

  • model_size: "tiny"로 설정 시 가장 빠름 (정확도는 낮음)
  • "base": 속도와 정확도의 균형
  • "large": 최고 정확도 (처리 시간 긺)

검색 효율화

  • site 파라미터로 특정 도메인 제한 시 결과 품질 향상
  • time_range로 최신 정보 필터링
  • num_results: 5-10 사이가 적절 (너무 많으면 컨텍스트 초과)

🔒 보안 고려사항

  • 로컬 실행: OCR, 비디오 처리는 로컬에서 수행되어 데이터 유출 우려 없음
  • Playwright: 헤드리스 브라우저로 Google 검색 시 쿠키/세션은 별도 저장되지 않음
  • YouTube 다운로드: yt-dlp 사용, 개인 사용 목적에 한해 이용

📝 결론

noapi-google-search-mcp는 로컬 LLM 사용자에게 꼭 필요한 도구입니다. API 키 없이 Google의 모든 기능을 활용할 수 있고, OCR과 비디오 분석까지 로컬에서 처리할 수 있어 프라이버시도 보호됩니다.

특히 다음 분들에게 강력히 추천합니다:

  • 🔒 API 키 발급이 번거로운 분
  • 💸 비용 부담을 줄이고 싶은 분
  • 🏠 로컬에서 모든 것을 처리하고 싶은 분
  • 📚 논문 리서치가 많은 학생/연구자
  • 🎬 유튜브 콘텐츠 분석이 필요한 분

한번 설치해두면 AI에게 "검색해줘", "이 이미지 뭐야?", "이 영상 요약해줘"라고 자연스럽게 말할 수 있게 됩니다. 지금 바로 설치해보세요!


📚 참고 자료


이 글이 도움이 되셨다면 댓글과 공감 부탁드립니다! 궁금한 점은 댓글로 남겨주세요.

반응형