Skip to main content
Glama
VivekKumarNeu

mcp-lucene-server

MCP 루씬 서버

설명

MCP 루씬 서버는 아파치 루씬을 사용하여 효율적인 검색 기능을 제공하도록 설계된 모델 컨텍스트 프로토콜(MCP)의 Java 기반 구현입니다. 이 서버를 사용하면 루씬의 강력한 인덱싱 및 검색 기능을 활용하여 문서를 관리하고 쿼리할 수 있습니다. Spring Boot를 사용하여 구축되어 간편한 설정 및 배포가 가능합니다.

Related MCP server: Mercado Livre MCP Server

특징

  • MCP 준수: 핵심 모델 컨텍스트 프로토콜을 구현합니다.

  • Lucene 기반: Apache Lucene을 활용하여 전체 텍스트 검색 및 인덱싱을 수행합니다.

  • RESTful API: 서버와 상호작용하기 위한 RESTful API를 제공합니다.

  • 문서 관리:

    • Upsert: Lucene 인덱스에 문서를 추가하거나 업데이트합니다.

    • 삭제: Lucene 인덱스에서 문서를 삭제합니다.

    • 목록: 인덱스에서 문서 목록을 검색합니다.

  • 질의:

    • Lucene 쿼리 구문을 사용하여 복잡한 쿼리를 지원합니다.

    • 필터링: 문서 메타데이터를 기준으로 쿼리를 필터링합니다.

  • 상태: 서버 상태를 확인하세요.

  • Spring Boot: Spring Boot로 구축되어 설치와 배포가 간편합니다.

  • Docker화: Docker를 사용하여 애플리케이션을 컨테이너화하는 방법에 대한 지침이 포함되어 있습니다.

목차

시작하기

필수 조건

설치

  1. 저장소를 복제합니다.

    지엑스피1

    ( your-username GitHub 사용자 이름으로 바꾸세요)

  2. Maven을 사용하여 프로젝트를 빌드합니다.

    mvn clean install

서버 실행

도커 없이

  1. Spring Boot 애플리케이션을 실행합니다.

    java -jar target/mcp-lucene-server-0.0.1-SNAPSHOT.jar

    ( .jar 파일의 정확한 이름은 프로젝트 버전에 따라 약간 다를 수 있습니다.)

  2. 서버는 기본적으로 8080 포트에서 시작됩니다.

도커를 사용하여

  1. Docker가 설치되어 있는지 확인하세요. 공식 Docker 웹사이트( https://docs.docker.com/get-docker/ )의 지침을 따르세요.

  2. Docker 이미지를 빌드합니다. 터미널에서 프로젝트의 루트 디렉토리로 이동하여 다음을 실행합니다.

    docker build -t mcp-lucene-server .
  3. Docker 컨테이너를 실행합니다.

    docker run -p 8080:8080 mcp-lucene-server

    이렇게 하면 호스트 머신의 포트 8080 컨테이너 내부의 포트 8080 에 매핑됩니다.

용법

API 엔드포인트

서버는 다음과 같은 API 엔드포인트를 제공합니다.

  • GET /mcp/v1/status

    • 서버의 상태를 반환합니다.

  • POST /mcp/v1/upsert

    • 하나 이상의 문서를 업서트(삽입 또는 업데이트)합니다.

    • 요청 본문:

      { "documents": [ { "id": "doc1", "text": "This is the text of document 1.", "metadata": { "category": "example", "language": "english" } }, { "id": "doc2", "text": "This is document 2's text.", "metadata": { "category": "sample", "language": "spanish" } } ] }
  • POST /mcp/v1/query

    • Lucene 인덱스를 쿼리합니다.

    • 요청 본문:

      { "queries": [ { "query": "document", "top_k": 10, "filter": { "language": "english" } }, { "query": "text search", "filter": { "category": "example" } } ] }
    • query : Lucene 쿼리 문자열.

    • top_k : (선택 사항) 반환할 결과의 최대 개수(기본값: 10).

    • filter : (선택 사항) 필터링 기준이 되는 메타데이터 필드와 값의 맵입니다.

  • POST /mcp/v1/delete

    • Lucene 인덱스에서 문서를 삭제합니다.

    • 요청 본문:

      { "ids": ["doc1", "doc2"] }
  • GET /mcp/v1/list

    • Lucene 인덱스의 문서를 나열합니다.

    • 요청 본문:

      { "ids": ["doc1", "doc2"] }

예시

서버 상태 가져오기:

curl http://localhost:8080/mcp/v1/status

문서 업데이트:

curl -X POST http://localhost:8080/mcp/v1/upsert -H 'Content-Type: application/json' -d '{ "documents": [ { "id": "doc1", "text": "This is the text of document 1.", "metadata": { "category": "example", "language": "english" } }, { "id": "doc2", "text": "This is document 2''s text.", "metadata": { "category": "sample", "language": "spanish" } } ] }'

쿼리 문서:

curl -X POST http://localhost:8080/mcp/v1/query -H 'Content-Type: application/json' -d '{ "queries": [ { "query": "document text", "top_k": 5, "filter": { "language": "english" } } ] }'

문서 삭제:

curl -X POST http://localhost:8080/mcp/v1/delete -H 'Content-Type: application/json' -d '{ "ids": ["doc1"] }'

문서 목록:

curl -X POST http://localhost:8080/mcp/v1/list -H 'Content-Type: application/json' -d '{ "ids": ["doc1", "doc2"] }'

구성

서버는 Spring Boot의 애플리케이션 속성을 사용하여 구성할 수 있습니다. 주요 속성은 다음과 같습니다.

  • server.port : 서버가 수신하는 포트(기본값: 8080).

  • lucene.index.path : Lucene 인덱스 디렉터리 경로입니다. 인덱싱된 데이터가 저장되는 위치입니다. 설정하지 않으면 기본 위치가 사용됩니다. 영구 저장 위치로 설정하는 것이 좋습니다.

src/main/resources 디렉토리의 application.properties 또는 application.yml 파일에서 이러한 속성을 설정하거나 환경 변수를 사용하여 설정할 수 있습니다.

예제

server.port=8080 lucene.index.path=/루씬/인덱스 경로

특허

이 프로젝트는 Apache 2.0 라이선스 에 따라 라이선스가 부여되었습니다.

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VivekKumarNeu/MCP-Lucene-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server