본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 15. 04:32

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는 현재 주로 다음과 같은 부분들로 구성되어 있습니다:

  1. mcp-sdk

    • 핵심 SDK
    • stdio transport 지원
    • SSE transport 지원
    • Java API를 사용하여 tools, resources, prompts 등록 가능
    • 어노테이션(Annotation) 방식의 도구 등록 지원
  2. mcp-spring-boot-starter

    • Spring Boot 프로젝트를 위한 MCP Server 통합
    • 기존 Java/Spring 비즈니스 역량을 Agent에게 노출하기에 적합
  3. mcp-examples

    • 5분 퀵 스타트(quick-start) 예시
    • 커스텀 MCP Server 템플릿
    • Spring Boot 예시
    • 비즈니스 서버 예시
  4. 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 예시에는 다음이 포함되어 있습니다:

  • greet
  • current_time
  • calculate
  • text_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만 허용합니다.
  • executeINSERTUPDATE만 허용합니다.
  • 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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0