안녕하세요, 자바 애호가 여러분! 맞춤형 Java MCP 서버로 AI 프로젝트에 활력을 불어넣고 싶으신가요? MCP(모델 컨텍스트 프로토콜)를 사용하면 Claude 또는 Cursor와 같은 AI 모델이 데이터를 쉽게 활용할 수 있으며, Java SDK를 사용하면 이를 위한 경량 서버를 구축할 수 있습니다. 이 튜토리얼에서는 AI 비서와 프레젠테이션 데이터를 공유하기 위한 Java MCP 서버를 생성할 것입니다. 재미있고 대화식이며 초보자에게 친숙하게 설정, 테스트 및 서버 확장을 안내해 드릴 것입니다. 시작해 볼까요!
최대한의 생산성으로 개발팀이 함께 작업할 수 있는 통합된 올인원 플랫폼을 원하시나요?
Apidog는 여러분의 모든 요구를 충족하며, Postman을 훨씬 더 저렴한 가격으로 대체합니다!
Java MCP 서버란 무엇인가요?
Java MCP 서버는 MCP(모델 컨텍스트 프로토콜)를 사용하여 AI 모델에 데이터를 노출하는 세련된 Java 애플리케이션입니다. AI에게 앱 정보에 대한 VIP 패스를 제공하는 것과 같습니다. 저희는 게임 데이터를 공유할 것이지만, 무엇이든 맞춤 설정할 수 있습니다. 서버는 MCP Java SDK를 사용하여 AI 비서가 호출할 수 있는 도구를 생성합니다(예: 게임 목록 가져오기 또는 제목으로 게임 검색). 데이터를 AI 클라이언트와 통합하는 데 완벽하며, Spring Boot 및 Maven으로 설정하기 매우 쉽습니다.

Java MCP 서버 생성 단계별 가이드
사전 준비 사항
시작하기 전에 다음 사항을 확인하세요:
- Java 24: oracle.com에서 다운로드.
- Maven 3.8+: maven.apache.org에서 설치.
- IntelliJ IDEA: jetbrains.com에서 다운로드 (또는 선호하는 IDE).
- Node.js: MCP Inspector 테스트용 (nodejs.org).
- Claude Desktop 또는 Cursor: 선택 사항, AI 통합용 (anthropic.com 또는 cursor.sh).
단계 1: 프로젝트 생성 또는 복제
기존 저장소를 복제하거나 처음부터 프로젝트를 생성할 수 있습니다.
옵션 1: 저장소 복제 (권장)
1. 새 터미널에서 다음을 실행합니다:
git clone https://github.com/danvega/javaone-mcp.git
cd javaone-mcp
2. 프로젝트 빌드:
- Maven을 사용하여 실행 가능한 JAR를 생성합니다:
mvn clean package
target/javaone-mcp-0.0.2.jar
에서 JAR를 찾습니다.

옵션 2: 처음부터 생성
1. IntelliJ IDEA를 엽니다:
- 새 프로젝트(New Project)를 선택합니다.
- 빌드 시스템으로 Maven을 선택합니다.
- 프로젝트 이름(예:
java-mcp-server
)을 설정하고 생성(Create)을 클릭합니다.

2. 의존성 추가:
pom.xml
을 열고 다음을 추가합니다:
<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 서버에는 다음이 포함됩니다:
- Application.java: MCP 서버를 시작하는 메인 진입점.
- Presentation.java: 게임 데이터용 데이터 모델 (게임에 맞게 사용자 정의할 예정).
- PresentationTools.java: 게임 데이터 접근을 위한 MCP 도구 정의.
- Configuration: AI 통신을 위해 STDIO 전송을 사용.

단계 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. 서버 시작:
- JAR 실행:
java -jar target/javaone-mcp-0.0.2.jar
- 서버는 STDIO 전송으로 실행되며 AI 통합 준비가 완료됩니다.
단계 7: MCP Inspector로 테스트
MCP Inspector를 사용하여 Java MCP 서버를 디버그합니다:
Node.js 설치: 필요한 경우 nodejs.org에서 다운로드.
JAR 경로 가져오기:
- Linux/macOS:
FULL_PATH=$(pwd)/target/javaone-mcp-0.0.2.jar
echo $FULL_PATH
- Windows PowerShell:
$FULL_PATH="$(Get-Location)\target\javaone-mcp-0.0.2.jar"
echo $FULL_PATH
MCP Inspector 실행:
- 사용:
npx @modelcontextprotocol/inspector java -jar $FULL_PATH
- Inspector에서:
- 연결(Connection) 창에서 연결을 확인합니다.
- 도구(Tools) 탭으로 이동하여
get_presentations
를 선택하고 응답을 확인합니다(예: "GTA 6, FC 26, Call of Duty: Black Ops 7"). - 알림(Notifications) 창에서 로그를 모니터링합니다.
단계 8: Claude Desktop 또는 Cursor와 통합
Java MCP 서버를 AI 클라이언트에 연결합니다:
JAR 경로 가져오기: 위와 동일한 명령을 사용합니다.
a. Claude Desktop 구성:
claude_desktop_config.json
을 엽니다 (macOS:~/Library/Application Support/Claude
, Windows:%APPDATA%\Claude
).- 추가:
{
"mcpServers": {
"javaone-mcp": {
"command": "java",
"args": ["-jar", "FULL_PATH"]
}
}
}
FULL_PATH
를 JAR 경로로 바꿉니다.
b. Cursor 구성:
- 설정(Settings) > Cursor 설정(Cursor Settings) > 도구 및 통합(Tools and Integrations) > 새 MCP 서버(New MCP Server)로 이동합니다.
- 동일한 구성을 추가하고 저장합니다.
클라이언트 재시작: Claude 또는 Cursor를 닫았다가 다시 엽니다.
단계 9: Java MCP 서버 테스트
Claude Desktop 또는 Cursor로 테스트합니다:
서버 시작:
- 실행:
java -jar target/javaone-mcp-0.0.2.jar
명령 실행:
- Claude 또는 Cursor에서 다음을 입력합니다:
MCP 서버를 사용하여 사용 가능한 모든 게임을 가져와.
- 예상 응답:
사용 가능한 게임은 GTA 6, FC 26, Call of Duty: Black Ops 7입니다.

단계 10: Java MCP 서버 확장
서버를 더욱 멋지게 만드세요:
1. 프레젠테이션 더 추가:
PresentationTools.java
의 생성자에 다음을 추가합니다:
presentations.add(new Presentation("Spring Boot 3.5 Deep Dive", "https://example.com/spring-boot", 2025));
2. 검색 도구 생성:
PresentationTools.java
에 다음을 추가합니다:
@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());
}
Application.java
에 등록:
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 서버를 게임 데이터와 함께 작동하도록 맞춤 설정했습니다. 그리고 여기 제 결과가 있습니다:

검색 시도:
search_games
도구를 추가하고(아래 참조), 다음 프롬프트를 시도했습니다:
"FC"라는 제목의 게임을 검색해 줘.
- 예상 응답:
FC 26이라는 게임이 있습니다.

3. 고급 기능:
- 실시간 업데이트를 위한 리소스 구독 추가.
- 복잡한 작업을 위한 비동기 도구 구현.
- 보안 접근을 위한 인증 추가.
문제 해결 팁
- 서버가 시작되지 않나요? Java 24와 Maven이 설치되어 있는지 확인하고,
pom.xml
에서 올바른 의존성을 확인하세요. - MCP Inspector 문제인가요? Node.js가 설치되어 있고 JAR 경로가 올바른지 확인하세요.
- 클라이언트가 연결되지 않나요? 클라이언트 구성의 JAR 경로를 확인하고 클라이언트를 다시 시작하세요.
- 데이터가 반환되지 않나요?
PresentationTools
에서 올바른 도구 주석과 데이터 초기화를 확인하세요.
Java MCP 서버를 사용하는 이유
Java MCP 서버는 Java 앱을 AI 모델에 연결하여 실시간으로 데이터에 접근할 수 있도록 하는 환상적인 방법입니다. 저희의 게임 테마 서버는 "GTA 6" 또는 "FC 26"과 같은 데이터를 Claude 또는 Cursor와 공유하는 것이 얼마나 쉬운지 보여주었습니다. MCP Java SDK는 도구를 쉽게 정의할 수 있게 해주며, STDIO 전송은 가볍게 유지합니다. 게임, 강좌 또는 다른 무엇을 만들든 이 서버는 AI 통합을 위한 티켓입니다.
결론
이제 여러분은 Java MCP 서버 전문가입니다! 여러분은 처음부터 서버를 구축하고, 게임 데이터로 테스트했으며, 새로운 도구로 확장하는 방법을 배웠습니다. MCP Java SDK는 앱을 AI 비서에 쉽게 연결할 수 있게 해주며, 저희 테스트는 그 효과를 입증했습니다. 서버를 더욱 강력하게 만들려면 더 많은 데이터나 도구를 추가해 보세요.
최대한의 생산성으로 개발팀이 함께 작업할 수 있는 통합된 올인원 플랫폼을 원하시나요?
Apidog는 여러분의 모든 요구를 충족하며, Postman을 훨씬 더 저렴한 가격으로 대체합니다!