MCP DuckDuckGo Search Plugin

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Provides web search functionality with detailed results, related searches, pagination support, domain extraction, advanced filtering by site and time period, enhanced content extraction, basic web spidering, metadata extraction, and content structure analysis.

MCP DuckDuckGo 검색 플러그인

Claude Code와 호환되는 MCP(Model Context Protocol)용 DuckDuckGo 검색 플러그인입니다. 고급 탐색 및 콘텐츠 탐색 기능을 갖춘 웹 검색 기능을 제공합니다.

설명

이 프로젝트는 DuckDuckGo를 사용하여 웹 검색 기능을 제공하는 모델 컨텍스트 프로토콜(MCP) 서버를 구현합니다. 이 플러그인은 Claude Code 또는 MCP를 지원하는 다른 클라이언트와 원활하게 작동하도록 설계되었으며, 기본 검색 기능뿐만 아니라 고급 탐색 및 결과 탐색 기능도 제공합니다.

특징

  • 웹 검색 도구 : DuckDuckGo를 사용하여 웹 검색을 수행합니다.
  • 자세한 결과 : 특정 검색 결과에 대한 자세한 정보를 얻으세요
  • 관련 검색어 : 원래 검색을 기반으로 관련 검색어를 찾아보세요.
  • 페이지 번호 매기기 지원 : 여러 페이지의 검색 결과를 탐색합니다.
  • 도메인 추출 : 각 검색 결과에 대한 도메인 정보를 확인합니다.
  • 고급 필터링 : 사이트 및 기간별로 결과 필터링
  • 향상된 콘텐츠 추출 : 메타데이터, 구조, 스니펫을 포함한 웹 페이지에서 풍부한 콘텐츠를 추출합니다.
  • 기본 웹 스파이더링 : 검색 결과의 링크를 따라 관련 콘텐츠를 탐색합니다(구성 가능한 깊이)
  • 메타데이터 추출 : 제목, 저자, 키워드, 출판 날짜 등을 추출합니다.
  • 소셜 미디어 감지 : 웹 페이지에서 소셜 미디어 링크 식별 및 추출
  • 콘텐츠 구조 분석 : 웹페이지 구조를 이해하기 위해 제목과 섹션을 추출합니다.
  • 검색 문서 : 검색 기능에 대한 포괄적인 문서에 액세스하세요
  • 검색 도우미 : 효과적인 검색 쿼리를 작성하는 데 도움을 받으세요
  • 매개변수화된 리소스 : 특정 쿼리에 대한 형식화된 검색 결과 검색

요구 사항

  • 파이썬 3.9 이상
  • pip(Python 패키지 관리자)
  • pyproject.toml 에 나열된 Python 패키지

설치

PyPI에서

참고: 이 패키지는 아직 PyPI에 게시되지 않았습니다. 아래 소스에서 설치해 주세요.

나중에 게시되면 다음을 사용하여 설치할 수 있습니다.

지엑스피1

출처에서

  1. 이 저장소를 복제하세요:
    git clone https://github.com/gianlucamazza/mcp-duckduckgo.git cd mcp-duckduckgo
  2. 개발 모드에서 패키지를 설치하세요:
    pip install -e .
    또는 제공된 스크립트를 사용하세요.
    ./scripts/install_dev.sh
    또는 Make를 사용하세요:
    make install

용법

수동으로 서버 시작

MCP 서버를 시작하려면:

mcp-duckduckgo

또는 사용자 정의 매개변수를 사용하여:

mcp-duckduckgo --host 127.0.0.1 --port 8000

또는 제공된 스크립트를 개발에 사용하세요.

./scripts/run.sh

또는 Make를 사용하세요:

make run

Claude Code와 함께 사용

  1. 위에 설명한 대로 소스에서 패키지를 설치합니다.
  2. 플러그인을 사용하도록 Claude Code를 구성하세요.
    claude mcp add duckduckgo-search -- mcp-duckduckgo
  3. 글로벌 구성(모든 프로젝트에서 사용 가능):
    claude mcp add duckduckgo-search --scope global -- mcp-duckduckgo
  4. 클로드 코드 시작:
    claude
  5. 이제 Claude Code에서 DuckDuckGo 검색 기능을 사용할 수 있습니다.

사용 가능한 엔드포인트

이 플러그인은 다음과 같은 엔드포인트를 제공합니다.

다음 매개변수를 사용하여 DuckDuckGo를 사용하여 웹 검색을 수행합니다.

  • query (필수): 검색어(최대 400자, 50단어)
  • count (선택 사항, 기본값: 10): 페이지당 결과 수(1-20)
  • page (선택 사항, 기본값: 1): 페이지 번호
  • site (선택 사항): 결과를 특정 사이트(예: 'example.com')로 제한합니다.
  • time_period (선택 사항): 기간('일', '주', '월', '년')별로 결과를 필터링합니다.

클로드 코드의 사용 예:

Search for "artificial intelligence latest developments"

도구: duckduckgo_get_details

특정 검색 결과에 대한 자세한 정보를 검색합니다.

  • url (필수): 세부 정보를 얻을 결과의 URL

클로드 코드의 사용 예:

Get details for "https://example.com/article"

원래 쿼리를 기반으로 관련 검색어를 제안합니다.

  • query (필수): 원래 검색어(최대 400자)
  • count (선택 사항, 기본값: 5): 반환할 관련 검색 수(1-10)

클로드 코드의 사용 예:

Find related searches for "renewable energy"

리소스: docs://search

검색 기능에 대한 포괄적인 설명서를 제공합니다.

클로드 코드의 사용 예:

Show me the documentation for the DuckDuckGo search

프롬프트: search_assistant

효과적인 검색 쿼리를 작성하는 데 도움이 됩니다.

클로드 코드의 사용 예:

Help me formulate a search query about climate change solutions

리소스: search://{query}

특정 쿼리에 대한 형식화된 검색 결과를 검색합니다.

클로드 코드의 사용 예:

Get search results for "quantum computing breakthroughs"

탐색 기능 사용

이 플러그인은 검색 결과를 탐색하고 탐색하는 데 도움이 되는 여러 가지 기능을 제공합니다.

쪽수 매기기

여러 페이지의 검색 결과를 탐색하려면:

Search for "climate change solutions" with 5 results per page, page 2

결과 필터링

특정 사이트별로 결과를 필터링하려면:

Search for "machine learning tutorials" on "tensorflow.org"

기간별로 결과를 필터링하려면:

Search for "latest news" from the past week

결과 세부 정보 탐색

특정 검색 결과에 대한 자세한 정보를 얻으려면:

Get details for "https://example.com/article-found-in-search"

관련 검색 찾기

관련 검색어를 알아보려면:

Find related searches for "electric vehicles"

이러한 탐색 기능을 Claude의 자연어 기능과 결합하여 강력한 검색 및 탐색 환경을 구축할 수 있습니다. 예:

Search for "python machine learning libraries", then get details on the top result, and finally show me related search terms

구현 노트

이 구현은 DuckDuckGo의 공개 웹 인터페이스를 사용하고 HTML 응답을 파싱하여 결과를 추출합니다. DuckDuckGo는 공식 검색 API를 제공하지 않으므로 이 방법은 데모 목적으로 사용됩니다. 프로덕션 환경에서는 공식 API를 제공하는 검색 서비스를 사용하는 것이 좋습니다.

향상된 콘텐츠 추출

DuckDuckGo 플러그인에는 간단한 검색 결과를 넘어서는 고급 콘텐츠 추출 기능이 포함되어 있습니다.

콘텐츠 추출 기능

  • 전체 웹페이지 분석 : 검색 결과 URL에서 HTML 콘텐츠 추출 및 구문 분석
  • 지능형 콘텐츠 타겟팅 : 다양한 유형의 웹사이트에서 주요 콘텐츠 영역을 식별하고 추출합니다.
  • 풍부한 메타데이터 추출 : 제목, 설명, 저자, 키워드 및 출판 날짜 추출
  • 이미지 감지 : 웹 페이지에서 주요 이미지와 미디어를 식별하고 추출합니다.
  • 소셜 미디어 통합 : 소셜 미디어 프로필에 대한 링크 감지 및 추출
  • 콘텐츠 구조 분석 : 웹페이지 구성을 이해하기 위해 제목과 섹션 추출
  • 공식 소스 감지 : 도메인 및 콘텐츠 신호를 기반으로 소스가 공식인지 식별합니다.

웹 스파이더링 기능

이 플러그인에는 기본적인 웹 스파이더링 기능이 포함되어 있습니다.

  • 구성 가능한 깊이 : 원래 URL에서 0~3단계 깊이의 링크를 따릅니다.
  • 링크 제한 : 페이지당 팔로우할 수 있는 링크의 최대 개수를 제어합니다(1-5)
  • 도메인 제한 : 동일한 도메인 내의 링크만 팔로우하는 옵션
  • 관련 콘텐츠 검색 : 원래 검색과 관련된 콘텐츠를 찾아 분석합니다.

향상된 콘텐츠 추출 사용

향상된 콘텐츠 추출 기능을 사용하려면:

Get details for "https://example.com/article" with spider depth 1

거미의 움직임을 제어하려면:

Get details for "https://example.com/article" with spider depth 2, max links 3, same domain only

개발

이 프로젝트에는 개발을 돕기 위한 scripts 디렉토리에 여러 유틸리티 스크립트가 포함되어 있습니다.

  • install_dev.sh : 개발 환경을 설정합니다.
  • run.sh : 개발 설정으로 MCP 서버를 실행합니다.
  • test.sh : 커버리지 보고를 통해 테스트를 실행합니다.
  • lint.sh : 린팅 및 코드 포맷팅을 실행합니다.
  • publish.sh : 패키지를 빌드하고 PyPI에 게시합니다.

편의상 다음 대상을 포함하는 Makefile도 제공됩니다.

make install # Install the package in development mode make test # Run tests with coverage make lint # Run linting and code formatting make run # Run the MCP server make publish # Build and publish the package to PyPI make clean # Clean build artifacts make all # Run install, lint, and test (default) make help # Show help message

테스트

이 프로젝트에는 모든 주요 기능을 포괄하는 포괄적인 테스트 스위트가 포함되어 있습니다. 테스트는 tests/ 디렉터리에 있습니다.

테스트 종속성 설치

테스트를 실행하기 전에 테스트 종속성을 설치하세요.

pip install -e ".[test]"

테스트 실행

다음을 사용하여 모든 테스트를 실행할 수 있습니다.

pytest

커버리지 보고를 사용하여 테스트를 실행하려면:

pytest --cov=mcp_duckduckgo

특정 테스트 파일을 실행하려면:

pytest tests/test_models.py

자세한 출력으로 테스트를 실행하려면:

pytest -v

또는 제공된 스크립트를 사용하세요.

./scripts/test.sh

또는 Make를 사용하세요:

make test

테스트 구조

테스트 모음은 다음과 같이 구성됩니다.

  • conftest.py - 테스트를 위한 공유 픽스처 및 구성
  • test_models.py - 데이터 모델 테스트
  • test_search.py - 검색 기능 테스트
  • test_tools.py - MCP 도구 테스트
  • test_resources.py - MCP 리소스에 대한 테스트
  • test_integration.py - 엔드투엔드 통합 테스트
  • test_server.py - 서버 수명 주기 테스트

테스트에 대한 자세한 내용은 tests/README.md 파일을 참조하세요.

코드 포맷팅 및 린팅

black mcp_duckduckgo isort mcp_duckduckgo mypy mcp_duckduckgo

또는 제공된 스크립트를 사용하세요.

./scripts/lint.sh

또는 Make를 사용하세요:

make lint

PyPI에 게시

PyPI에 패키지를 게시하려면 다음을 수행하세요.

  1. pyproject.toml 에서 버전을 업데이트하세요
  2. 필요한 자격 증명과 도구가 있는지 확인하세요.
    pip install build twine
  3. 빌드 및 게시:
    python -m build twine upload dist/*

또는 제공된 스크립트가 있으면 사용하세요.

./scripts/publish.sh

또는 Make를 사용하세요:

make publish

기여하다

기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.

특허

MIT

저장소

https://github.com/gianlucamazza/mcp-duckduckgo

ID: dd8cpyu3mo