Java MCP 서버 구현: Stockfish와 Quarkus 예제
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Java에서 MCP 서버 구현: Stockfish 예제

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • Java 및 Quarkus 프레임워크 개발자
  • Docker를 사용한 서버 배포 경험자
  • AI 모델과 외부 도구 연동이 필요한 시스템 개발자
  • 난이도: 중간 (Quarkus 확장 및 Docker 구성 기초 지식 필요)

핵심 요약

  • MCP 서버 구현 핵심: @Tool 어노테이션을 사용한 Stockfish와의 연동, quarkus-mcp-server-sse 의존성 추가
  • Docker 기반 배포: multi-stage build를 활용한 Stockfish 이진 파일 컴파일 및 Quarkus 애플리케이션 통합
  • 실제 사용 예시: FEN 형식의 체스 보드 상태를 입력하여 Kg7 최적 이동 추천 (리처드 레티의 유명한 엔드게임 분석)

섹션별 세부 요약

1. MCP 서버 개요

  • MCP는 AI 모델이 외부 도구와 상호작용하는 구조화된 인터페이스 제공
  • Stockfish와의 연동으로 체스 포지션 분석 기능 구현
  • Java 선택 이유: 기업용 표준 언어로 확장성 및 안정성 보장

2. Quarkus 기반 MCP 서버 구현

  • quarkus-mcp-server-sse 의존성 추가 명령:

```bash

./mvnw quarkus:add-extension -Dextensions="io.quarkiverse.mcp:quarkus-mcp-server-sse"

```

  • @Tool 어노테이션을 사용한 stockfish 메서드 정의:

```java

@Tool(description = "Analyze a chess position using Stockfish.")

ToolResponse stockfish(@ToolArg(description = "FEN of the chess position") String fen)

```

  • $(command).get() API 사용으로 쉘 명령 실행 간결화

3. Docker 이미지 구성

  • Dockerfile.jvm을 통한 다단계 빌드:

```dockerfile

COPY --from=stockfish_builder /opt/Stockfish/src/stockfish /usr/local/bin/stockfish

```

  • Quarkus 애플리케이션과 Stockfish 이진 파일 통합
  • 빌드 및 실행 명령:

```bash

./mvnw verify -Dquarkus.container-image.build=true

docker run -p 8080:8080 shelajev/mcp-stockfish:0.0.1

```

4. 테스트 및 통합

  • MCP 인스펙터로 서버 기능 검증:

```bash

npx @modelcontextprotocol/inspector

```

  • VS Code에서 mcp.json 파일 설정:

```json

"servers": {

"stockfish": {

"name": "Stockfish",

"url": "http://localhost:8080",

"type": "http"

}

}

```

  • Agent 모드에서 체스 포지션 분석 요청

결론

  • Docker 기반 MCP 서버는 격리성, 재현성, 보안 강화를 위해 권장
  • Docker MCP Toolkit 사용으로 Slack, GitHub 등 일반적인 통합이 용이
  • quarkus-mcp-server-sse 확장과 @Tool 어노테이션 활용이 핵심 기술 포인트