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
어노테이션 활용이 핵심 기술 포인트