자바 SDK로 마인크래프트 서버(MCP) 만드는 방법

Ashley Goolam

Ashley Goolam

4 August 2025

자바 SDK로 마인크래프트 서버(MCP) 만드는 방법

안녕하세요, 자바 애호가 여러분! 맞춤형 Java MCP 서버로 AI 프로젝트에 활력을 불어넣고 싶으신가요? MCP(모델 컨텍스트 프로토콜)를 사용하면 Claude 또는 Cursor와 같은 AI 모델이 데이터를 쉽게 활용할 수 있으며, Java SDK를 사용하면 이를 위한 경량 서버를 구축할 수 있습니다. 이 튜토리얼에서는 AI 비서와 프레젠테이션 데이터를 공유하기 위한 Java MCP 서버를 생성할 것입니다. 재미있고 대화식이며 초보자에게 친숙하게 설정, 테스트 및 서버 확장을 안내해 드릴 것입니다. 시작해 볼까요!

💡
아름다운 API 문서를 생성하는 훌륭한 API 테스트 도구를 원하시나요?

최대한의 생산성으로 개발팀이 함께 작업할 수 있는 통합된 올인원 플랫폼을 원하시나요?

Apidog는 여러분의 모든 요구를 충족하며, Postman을 훨씬 더 저렴한 가격으로 대체합니다!
button

Java MCP 서버란 무엇인가요?

Java MCP 서버는 MCP(모델 컨텍스트 프로토콜)를 사용하여 AI 모델에 데이터를 노출하는 세련된 Java 애플리케이션입니다. AI에게 앱 정보에 대한 VIP 패스를 제공하는 것과 같습니다. 저희는 게임 데이터를 공유할 것이지만, 무엇이든 맞춤 설정할 수 있습니다. 서버는 MCP Java SDK를 사용하여 AI 비서가 호출할 수 있는 도구를 생성합니다(예: 게임 목록 가져오기 또는 제목으로 게임 검색). 데이터를 AI 클라이언트와 통합하는 데 완벽하며, Spring Boot 및 Maven으로 설정하기 매우 쉽습니다.

클라이언트 서버 mcp 연결

Java MCP 서버 생성 단계별 가이드

사전 준비 사항

시작하기 전에 다음 사항을 확인하세요:

단계 1: 프로젝트 생성 또는 복제

기존 저장소를 복제하거나 처음부터 프로젝트를 생성할 수 있습니다.

옵션 1: 저장소 복제 (권장)

1. 새 터미널에서 다음을 실행합니다:

git clone https://github.com/danvega/javaone-mcp.git
cd javaone-mcp

2. 프로젝트 빌드:

mvn clean package
깃허브 저장소 복제

옵션 2: 처음부터 생성

1. IntelliJ IDEA를 엽니다:

새 프로젝트 생성

2. 의존성 추가:

<dependencies>
  <!-- MCP SDK -->
  <dependency>
    <groupId>io.modelcontextprotocol.sdk</groupId>
    <artifactId>mcp</artifactId>
    <version>0.9.0</version>
  </dependency>
  <!-- Logging -->
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.16</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.16</version>
  </dependency>
</dependencies>

단계 2: 프로젝트 구조 이해

방금 복제한 Java MCP 서버에는 다음이 포함됩니다:

프로젝트 구조

단계 3: 데이터 모델 정의

게임 데이터를 나타내기 위해 Presentation.java를 생성합니다:

public record Presentation(String title, String url) { }

이 레코드는 제목(예: "GTA 6") 및 URL과 같은 게임 세부 정보를 저장합니다.

단계 4: MCP 도구 구현

PresentationTools.java에서 MCP SDK를 사용하여 도구를 정의합니다:

import io.modelcontextprotocol.sdk.McpSchema;
import java.util.ArrayList;
import java.util.List;

public class PresentationTools {
    private final List<Presentation> presentations = new ArrayList<>();

    public PresentationTools() {
        presentations.add(new Presentation("GTA 6", "https://example.com/gta6"));
        presentations.add(new Presentation("FC 26", "https://example.com/fc26"));
        presentations.add(new Presentation("Call of Duty: Black Ops 7", "https://example.com/codbo7"));
    }

    @McpSchema.Tool(name = "get_presentations", description = "Returns a list of all available games")
    public List<Presentation> getPresentations() {
        return presentations;
    }

    @McpSchema.Tool(name = "get_game", description = "Returns a specific game by title")
    public Presentation getGame(String title) {
        return presentations.stream()
            .filter(p -> p.title().equalsIgnoreCase(title))
            .findFirst()
            .orElse(null);
    }
}

이 도구를 사용하면 AI 모델이 모든 게임 또는 제목별 특정 게임을 가져올 수 있습니다.

단계 5: MCP 서버 구성 및 시작

Application.java에서 Java MCP 서버를 설정합니다:

import io.modelcontextprotocol.sdk.McpServer;
import io.modelcontextprotocol.sdk.McpSchema;
import io.modelcontextprotocol.sdk.McpSyncServer;

public class Application {
    public static void main(String[] args) {
        PresentationTools tools = new PresentationTools();
        var syncToolSpecification = new McpServerFeatures.SyncToolSpecification(
            new McpSchema.Tool("get_presentations", "Returns a list of all available games", null),
            (exchange, arguments) -> tools.getPresentations()
        );

        McpSyncServer syncServer = McpServer.sync(new StdioTransportProvider())
            .serverInfo("javaone-mcp-server", "0.0.1")
            .capabilities(McpSchema.ServerCapabilities.builder()
                .tools(true)
                .logging()
                .build())
            .tools(syncToolSpecification)
            .build();

        syncServer.start();
    }
}

이것은 STDIO 전송을 사용하도록 서버를 구성하고 get_presentations 도구를 등록합니다.

단계 6: Java MCP 서버 실행

1. 프로젝트 빌드:

mvn clean package
서버 실행

2. 서버 시작:

java -jar target/javaone-mcp-0.0.2.jar

단계 7: MCP Inspector로 테스트

MCP Inspector를 사용하여 Java MCP 서버를 디버그합니다:

Node.js 설치: 필요한 경우 nodejs.org에서 다운로드.

JAR 경로 가져오기:

FULL_PATH=$(pwd)/target/javaone-mcp-0.0.2.jar
echo $FULL_PATH
$FULL_PATH="$(Get-Location)\target\javaone-mcp-0.0.2.jar"
echo $FULL_PATH

MCP Inspector 실행:

npx @modelcontextprotocol/inspector java -jar $FULL_PATH

단계 8: Claude Desktop 또는 Cursor와 통합

Java MCP 서버를 AI 클라이언트에 연결합니다:

JAR 경로 가져오기: 위와 동일한 명령을 사용합니다.

a. Claude Desktop 구성:

{
  "mcpServers": {
    "javaone-mcp": {
      "command": "java",
      "args": ["-jar", "FULL_PATH"]
    }
  }
}

b. Cursor 구성:

클라이언트 재시작: Claude 또는 Cursor를 닫았다가 다시 엽니다.

단계 9: Java MCP 서버 테스트

Claude Desktop 또는 Cursor로 테스트합니다:

서버 시작:

java -jar target/javaone-mcp-0.0.2.jar

명령 실행:

MCP 서버를 사용하여 사용 가능한 모든 게임을 가져와.
사용 가능한 게임은 GTA 6, FC 26, Call of Duty: Black Ops 7입니다.
내 MCP 서버에서 사용 가능한 게임

단계 10: Java MCP 서버 확장

서버를 더욱 멋지게 만드세요:

1. 프레젠테이션 더 추가:

presentations.add(new Presentation("Spring Boot 3.5 Deep Dive", "https://example.com/spring-boot", 2025));

2. 검색 도구 생성:

@McpSchema.Tool(name = "search_presentations", description = "Search presentations by title")
public List<Presentation> searchPresentations(String query) {
    return presentations.stream()
        .filter(p -> p.title().toLowerCase().contains(query.toLowerCase()))
        .collect(Collectors.toList());
}
var searchToolSpec = new McpServerFeatures.SyncToolSpecification(
    new McpSchema.Tool("search_presentations", "Search presentations by title", null),
    (exchange, arguments) -> {
        String query = arguments.get("query").asText();
        return tools.searchPresentations(query);
    }
);
McpSyncServer syncServer = McpServer.sync(new StdioTransportProvider())
    .serverInfo("javaone-mcp-server", "0.0.1")
    .capabilities(McpSchema.ServerCapabilities.builder().tools(true).logging().build())
    .tools(syncToolSpecification, searchToolSpec)
    .build();

저는 제 MCP 서버를 게임 데이터와 함께 작동하도록 맞춤 설정했습니다. 그리고 여기 제 결과가 있습니다:

Java MCP 서버에 새 도구 추가됨

검색 시도:

"FC"라는 제목의 게임을 검색해 줘.
FC 26이라는 게임이 있습니다.
새 도구 결과

3. 고급 기능:

문제 해결 팁

Java MCP 서버를 사용하는 이유

Java MCP 서버는 Java 앱을 AI 모델에 연결하여 실시간으로 데이터에 접근할 수 있도록 하는 환상적인 방법입니다. 저희의 게임 테마 서버는 "GTA 6" 또는 "FC 26"과 같은 데이터를 Claude 또는 Cursor와 공유하는 것이 얼마나 쉬운지 보여주었습니다. MCP Java SDK는 도구를 쉽게 정의할 수 있게 해주며, STDIO 전송은 가볍게 유지합니다. 게임, 강좌 또는 다른 무엇을 만들든 이 서버는 AI 통합을 위한 티켓입니다.

결론

이제 여러분은 Java MCP 서버 전문가입니다! 여러분은 처음부터 서버를 구축하고, 게임 데이터로 테스트했으며, 새로운 도구로 확장하는 방법을 배웠습니다. MCP Java SDK는 앱을 AI 비서에 쉽게 연결할 수 있게 해주며, 저희 테스트는 그 효과를 입증했습니다. 서버를 더욱 강력하게 만들려면 더 많은 데이터나 도구를 추가해 보세요.

💡
아름다운 API 문서를 생성하는 훌륭한 API 테스트 도구를 원하시나요?

최대한의 생산성으로 개발팀이 함께 작업할 수 있는 통합된 올인원 플랫폼을 원하시나요?

Apidog는 여러분의 모든 요구를 충족하며, Postman을 훨씬 더 저렴한 가격으로 대체합니다!
button

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요