Skip to main content
Glama

Elasticsearch MCP Server

by silbaram
readme-ko.md5.29 kB
<div align="center"> <h1>Elasticsearch MCP Server</h1> <p>Spring AI MCP 기반 Elasticsearch 데이터 처리 및 검색 서버</p> </div> <hr/> # Elasticsearch MCP Server ## 소개 Elasticsearch Model Context Protocol(MCP) Server는 Spring AI MCP를 기반으로 개발된 서버 애플리케이션입니다. MCP를 통해 다양한 데이터 처리 워크플로우를 손쉽게 정의하고, 그 결과를 Elasticsearch 클러스터에 효율적으로 색인하고 검색할 수 있도록 설계되었습니다. ### 주요 특징 - **MCP 도구 자동 등록 및 실행**: Spring Boot 환경에서 `@Tool` 애노테이션으로 정의된 기능을 MCP 서버에 자동으로 등록합니다. 이를 통해 외부 클라이언트(예: Claude, FastMCP CLI)와 표준 JSON-RPC 기반 통신으로 해당 기능을 호출할 수 있습니다. - **Elasticsearch 클러스터 연동**: Elasticsearch 공식 Java 클라이언트를 사용하여 클러스터 상태 확인, 인덱스 매핑 조회, 문서 색인 및 검색 등 Elasticsearch의 주요 API를 간편하게 호출하고, 그 결과를 MCP 도구 형태로 제공합니다. - **확장 가능한 구조**: 모듈화된 패키지 구조를 통해 Elasticsearch 버전별 클라이언트 설정을 유연하게 분리하고 관리할 수 있습니다. 또한, 새로운 도구나 외부 연동 기능을 손쉽게 추가할 수 있도록 설계되었습니다. ## 사용 가능한 MCP 도구 - `get_cluster_health`: Elasticsearch 클러스터의 상태에 대한 기본 정보를 반환합니다. - `get_cluster_statistics`: 클러스터 이름, UUID, 상태, 노드 역할, OS 및 JVM 리소스 사용량, 인덱스 수, 샤드 메트릭 등 포괄적인 클러스터 통계를 가져옵니다. - `get_cat_mappings`: 특정 Elasticsearch 인덱스에 대한 필드 매핑 정보를 가져옵니다. - `get_cat_indices`: Elasticsearch의 모든 인덱스 목록을 가져옵니다. - `get_cat_indices_by_name`: 지정된 인덱스 이름 또는 와일드카드 패턴과 일치하는 인덱스 목록을 가져옵니다. - `get_cat_aliases`: Elasticsearch의 모든 별칭 목록을 가져옵니다. - `get_cat_aliases_by_name`: 지정된 별칭 이름 또는 와일드카드 패턴과 일치하는 별칭 목록을 가져옵니다. - `get_document_search_by_index`: AI가 생성한 queryDSL을 사용하여 Elasticsearch 인덱스 내 문서를 검색합니다. - `get_shard_allocation`: Elasticsearch 클러스터의 샤드 할당 정보를 반환합니다. - `get_shard_allocation_for_node`: Elasticsearch 클러스터의 특정 노드에 대한 샤드 할당 정보를 반환합니다. ## 기술 스택 - **언어**: Java 17 - **프레임워크**: Spring Boot 3.4.5, Spring AI MCP - **검색 엔진**: Elasticsearch 7.16 버전 이상 - **빌드 도구**: Gradle 8.12 ## 사전 요구 사항 이 프로젝트를 빌드하고 실행하기 위해 다음 소프트웨어가 필요합니다. - JDK: 17 버전 이상 - 실행 중인 Elasticsearch: 7.16 버전 이상 - MCP 클라이언트 (예: Claude Desktop) ## 설치 및 실행 프로젝트를 로컬 환경에서 설정하고 실행하는 방법은 다음과 같습니다. ### 1. 소스 코드 복제 ```bash git clone https://github.com/silbaram/elasticsearch-mcp-server.git cd elasticsearch-mcp-server ``` ### 2. `mcp-server` 모듈의 `application.yml` 설정 `mcp-server` 모듈 내 `src/main/resources/application.yml` 파일을 열어 Elasticsearch 클러스터 정보를 설정합니다. ```yaml elasticsearch: version: "8.6.1" # 연결할 Elasticsearch 클러스터의 버전을 지정합니다. search: hosts: - http://localhost:9200 # Elasticsearch 클러스터의 접속 주소를 지정합니다. ``` ### 3. 빌드 다음 명령어를 사용하여 프로젝트를 빌드합니다. ```bash ./gradlew build ``` - 빌드된 JAR 파일은 `mcp-server/build/libs/` 디렉터리에서 확인할 수 있습니다. ### 4. MCP 클라이언트 구성 - 사용 중인 MCP 클라이언트를 실행합니다. ([MCP 클라이언트 목록](https://modelcontextprotocol.io/clients)에서 다양한 클라이언트를 확인할 수 있습니다. 이 가이드에서는 Claude Desktop을 기준으로 설명합니다.) - MCP 클라이언트의 설정 메뉴에서 '개발자' > 'MCP 서버' 항목으로 이동합니다. - 'Edit Config' (또는 '설정 편집') 버튼을 클릭하고, 다음 내용을 참고하여 새 MCP 서버 구성을 추가합니다. (앞서 빌드한 JAR 파일의 실제 경로를 사용해야 합니다.) ```json { "mcpServers": { "elasticsearch-server": { "command": "java", "args": [ "-Dusername=YOUR_USERNAME", "-Dpassword=YOUR_PASSWORD", "-jar", "/path/to/your/mcp-server.jar" ] } } } ``` - `-Dusername` (선택 사항): Elasticsearch 클러스터 접근에 필요한 사용자 아이디를 지정합니다. (예: `-Dusername=elastic`) - `-Dpassword` (선택 사항): Elasticsearch 클러스터 접근에 필요한 비밀번호를 지정합니다. (예: `-Dpassword=yoursecurepassword`) - `/path/to/your/mcp-server.jar`: 빌드된 `mcp-server.jar` 파일의 실제 전체 경로로 수정해야 합니다.

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/silbaram/elasticsearch-mcp-server'

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