Java로 5분 만에 MCP Server 만들기: MCP Java SDK 오픈소스 공개
요약
Java 개발자가 Model Context Protocol(MCP) 서버를 쉽고 빠르게 구축할 수 있도록 돕는 오픈소스 SDK를 공개했습니다. Spring Boot 통합 및 어노테이션 기반의 도구 등록 기능을 지원하여 기존 Java 생태계와의 연결성을 높였습니다.
핵심 포인트
- Java 기반의 MCP Server 구축을 위한 전용 SDK 제공
- Spring Boot Starter를 통한 기존 비즈니스 로직의 Agent 노출 용이
- stdio 및 SSE 전송 방식 지원
- MySQL, Redis 등 즉시 사용 가능한 서버 예시 포함
Java로 5분 만에 MCP Server 만들기: MCP Java SDK 오픈소스 공개
최근 MCP, 즉 Model Context Protocol이 AI Agent, Claude, Cursor, Codex 등 도구 생태계에서 점점 더 많이 등장하고 있습니다.
간단히 말해, MCP는 대규모 언어 모델(LLM)이 통일된 프로토콜을 통해 외부 도구를 호출하고, 리소스에 접근하며, 컨텍스트(Context)를 읽을 수 있게 해줍니다. 예를 들어 Agent가 데이터베이스를 조회하거나, Redis를 읽고, 비즈니스 시스템에 접근하거나, 특정 내부 도구를 실행하도록 할 수 있습니다.
하지만 제가 MCP를 사용하고 조사하는 과정에서 한 가지 문제를 발견했습니다. 많은 MCP Server 예시들이 Node.js / Python에 치우쳐 있어, Java 개발자가 자신만의 MCP Server를 빠르게 작성하고 싶을 때 진입 장벽이 아주 매끄럽지는 않다는 점입니다.
그래서 저는 오픈소스 프로젝트를 만들었습니다:
GitHub:
https://github.com/6000fish/mcp-java
프로젝트의 목적은 매우 간단합니다:
Java를 사용하여 커스텀 MCP Server를 빠르게 구축하기.
이 프로젝트는 단순히 MySQL MCP Server나 Redis MCP Server의 집합이 아닙니다. MySQL과 Redis는 바로 사용할 수 있는(ready-to-use) 서버이자 예시입니다. 프로젝트의 핵심은 Java 개발자에게 MCP Server SDK를 제공하는 것입니다.
이 프로젝트로 무엇을 할 수 있나요?
MCP Java SDK는 현재 주로 다음과 같은 부분들로 구성되어 있습니다:
-
mcp-sdk- 핵심 SDK
- stdio transport 지원
- SSE transport 지원
- Java API를 사용하여 tools, resources, prompts 등록 가능
- 어노테이션(Annotation) 방식의 도구 등록 지원
-
mcp-spring-boot-starter- Spring Boot 프로젝트를 위한 MCP Server 통합
- 기존 Java/Spring 비즈니스 역량을 Agent에게 노출하기에 적합
-
mcp-examples- 5분 퀵 스타트(quick-start) 예시
- 커스텀 MCP Server 템플릿
- Spring Boot 예시
- 비즈니스 서버 예시
-
ready-to-use servers
- MySQL MCP Server
- Redis MCP Server
5분 만에 실행하기
단순히 SDK를 체험해보고 싶다면, MySQL이나 Redis를 미리 준비할 필요가 없습니다.
바로 퀵 스타트(quick-start)를 빌드하세요:
mvn package -pl mcp-examples/quick-start -am -DskipTests
그런 다음 MCP 클라이언트나 Agent에서 stdio 서버를 설정합니다:
{
"mcpServers": {
"quick-start": {
...
Agent를 재시작하면 예시 도구를 호출할 수 있습니다.
quick-start 예시에는 다음이 포함되어 있습니다:
greetcurrent_timecalculatetext_transform- resource:
server://info
어노테이션으로 MCP Tool 작성하기
프로젝트에서는 복사해서 사용할 수 있는 커스텀 서버 템플릿도 제공합니다:
mvn package -pl mcp-examples/custom-server-template -am -DskipTests
간단한 MCP Tool은 대략 다음과 같은 모습입니다:
@McpServer(name = "my-server", version = "1.0.0")
public class MyServer {
...
실행 시 어노테이션을 스캔하여 stdio를 통해 MCP 클라이언트에 노출합니다:
CustomMcpServer customServer = new CustomMcpServer();
McpServer server = DefaultMcpServer.builder()
...
이렇게 하면 JSON-RPC의 세부 사항을 직접 작성할 필요 없이, Java 메서드를 바로 MCP 도구로 변환할 수 있습니다.
Maven Central
프로젝트는 이미 Maven Central에 배포되었습니다.
핵심 SDK:
<dependency>
<groupId>io.github.6000fish</groupId>
<artifactId>mcp-sdk</artifactId>
...
Spring Boot Starter:
<dependency>
<groupId>io.github.6000fish</groupId>
<artifactId>mcp-spring-boot-starter</artifactId>
...
MySQL MCP Server
프로젝트에는 바로 실행 가능한 MySQL MCP Server도 제공됩니다.
빌드:
mvn package -pl mcp-server-collection/mcp-server-mysql -am -DskipTests
Agent 설정 예시:
{
"mcpServers": {
"mysql": {
...
지원하는 도구는 다음과 같습니다:
query(sql)execute(sql)list_databases()list_tables(database?)describe_table(table, database?)explain_query(sql)get_table_status(database?)
보안상 제한 사항:
query는 단일SELECT만 허용합니다.execute는INSERT와UPDATE만 허용합니다.DELETE,DROP,ALTER,TRUNCATE, 권한 변경 및 다중 구문 SQL은 거부됩니다.
Redis MCP Server
Redis Server도 직접 빌드할 수 있습니다:
mvn package -pl mcp-server-collection/mcp-server-redis -am -DskipTests
설정 예시:
{
"mcpServers": {
"redis": {
...
일반적인 Redis 작업을 지원합니다:
- key/value
- hash
- list
- set
- metadata
- diagnostics
또한, 파괴적 삭제(destructive delete)는 기본적으로 비활성화되며, 광범위한 key 패턴 및 집합 읽기 횟수에도 제한이 가해집니다.
MySQL / Redis를 로컬 stdio로 선택하는 이유?
데이터베이스 및 캐시 유형의 MCP Server는 원격 공용 인터넷(public network) MCP 엔드포인트보다는 로컬 stdio에 더 적합합니다.
이유는 간단합니다:
만약 원격 서비스 형태로 만든다면, 사용자가 데이터베이스 연결 정보를 제3자 공용 네트워크 서비스에 제공해야 할 수도 있고, 심지어 데이터베이스를 공용 네트워크에 노출해야 할 수도 있습니다. 이는 보안과 개인 정보 보호 모두에 좋지 않습니다.
따라서 더 합리적인 방식은 다음과 같습니다:
사용자가 데이터베이스에 접근할 수 있는 로컬 또는 내부망(intranet) 장치에서 MCP Server를 실행합니다.
Agent가 stdio를 통해 이 로컬 프로세스에 연결합니다.
데이터베이스 자격 증명은 사용자 로컬 설정에만 보관됩니다.
이것이 현재 프로젝트가 MySQL / Redis에 부여하는 역할입니다.
MCP.so에 등록된 항목
현재 사용 가능한 두 가지 서버(MySQL 및 Redis)는 이미 MCP.so에 배포되었습니다:
MySQL MCP Server for Java:
https://mcp.so/zh/server/mysql-mcp-server-for-java/6000fish
Redis MCP Server for Java:
https://mcp.so/zh/server/redis-mcp-server-for-java/6000fish
프로젝트 주소
Gitee:
https://gitee.com/liuqianyu666/mcp-java
GitHub:
https://github.com/6000fish/mcp-java
GitHub Release:
https://github.com/6000fish/mcp-java/releases/tag/v0.1.1
만약 여러분이 Java 개발자이고, 자신의 비즈니스 시스템, 내부 도구, 데이터베이스 (Database), 캐시 (Cache) 또는 Spring Boot 서비스를 AI Agent에 연결하고 싶다면 이 프로젝트를 시도해 보세요.
Issue 제기, 사용 사례 (Use case) 피드백, 또는 Java MCP Server 생태계를 함께 발전시켜 나가는 것을 환영합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기