Cómo Crear un Servidor MCP con el SDK de Java

Ashley Goolam

Ashley Goolam

4 August 2025

Cómo Crear un Servidor MCP con el SDK de Java

¡Hola, entusiastas de Java! ¿Te gustaría potenciar tus proyectos de IA con un **Servidor MCP de Java** personalizado? El Protocolo de Contexto del Modelo (MCP) permite que modelos de IA como Claude o Cursor accedan a tus datos con facilidad, y con el SDK de Java, puedes construir un servidor ligero para lograrlo. En este tutorial, crearemos un **Servidor MCP de Java** para compartir datos de presentación con asistentes de IA. Lo mantendremos divertido, conversacional y apto para principiantes, guiándote a través de la configuración, las pruebas y la extensión de tu servidor. ¡Vamos a sumergirnos!

💡
¿Quieres una excelente herramienta de prueba de API que genere hermosa Documentación de API?

¿Quieres una plataforma integrada y todo en uno para que tu equipo de desarrolladores trabaje con máxima productividad?

Apidog satisface todas tus demandas y reemplaza a Postman a un precio mucho más asequible!
botón

¿Qué es un Servidor MCP de Java?

Un **Servidor MCP de Java** es una elegante aplicación de Java que utiliza el Protocolo de Contexto del Modelo (MCP) para exponer datos a modelos de IA. Es como darle a tu IA un pase VIP a la información de tu aplicación; el nuestro compartirá datos de juegos, pero puedes personalizarlo para cualquier cosa. El servidor utiliza el SDK de Java de MCP para crear herramientas que los asistentes de IA pueden invocar, como obtener una lista de juegos o buscar uno por título. Es perfecto para integrar tus datos con clientes de IA, y es súper fácil de configurar con Spring Boot y Maven.

conexión cliente-servidor mcp

Guía Paso a Paso para Crear un Servidor MCP de Java

Requisitos Previos

Antes de empezar, asegúrate de tener:

Paso 1: Crear o Clonar el Proyecto

Puedes clonar un repositorio existente o crear un proyecto desde cero.

Opción 1: Clonar el Repositorio (Recomendado)

1. En una nueva terminal, ejecuta:

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

2. Compila el Proyecto:

mvn clean package
clonar repositorio de github

Opción 2: Crear desde Cero

1. Abre IntelliJ IDEA:

crear un nuevo proyecto

2. Añade Dependencias:

<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>

Paso 2: Entender la Estructura del Proyecto

El **Servidor MCP de Java** que acabamos de clonar incluye:

estructura del proyecto

Paso 3: Definir el Modelo de Datos

Crea Presentation.java para representar datos de juegos:

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

Este registro contiene detalles del juego como el título (ej., “GTA 6”) y la URL.

Paso 4: Implementar Herramientas MCP

En PresentationTools.java, define herramientas usando el SDK de MCP:

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);
    }
}

Estas herramientas permiten que los modelos de IA obtengan todos los juegos o un juego específico por título.

Paso 5: Configurar e Iniciar el Servidor MCP

En Application.java, configura el **Servidor MCP de Java**:

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();
    }
}

Esto configura el servidor para usar el transporte STDIO y registra la herramienta get_presentations.

Paso 6: Ejecutar el Servidor MCP de Java

1. Compila el Proyecto:

mvn clean package
ejecutar el servidor

2. Inicia el Servidor:

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

Paso 7: Probar con el Inspector MCP

Usa el Inspector MCP para depurar tu **Servidor MCP de Java**:

Instala Node.js: Descarga desde nodejs.org si es necesario.

Obtén la Ruta del 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

Ejecuta el Inspector MCP:

npx @modelcontextprotocol/inspector java -jar $FULL_PATH

Paso 8: Integrar con Claude Desktop o Cursor

Conecta tu **Servidor MCP de Java** a un cliente de IA:

Obtén la Ruta del JAR: Usa el mismo comando que el anterior.

a. Configura Claude Desktop:

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

b. Configura Cursor:

Reinicia el Cliente: Cierra y vuelve a abrir Claude o Cursor.

Paso 9: Probar el Servidor MCP de Java

Prueba con Claude Desktop o Cursor:

Inicia el Servidor:

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

Emite un Comando:

Usando el servidor MCP, obtén todos los juegos disponibles.
Los juegos disponibles son GTA 6, FC 26 y Call of Duty: Black Ops 7.
juegos disponibles en mi servidor mcp

Paso 10: Extender el Servidor MCP de Java

Haz tu servidor aún más genial:

1. Añade Más Presentaciones:

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

2. Crea una Herramienta de Búsqueda:

@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();

Personalicé mi servidor MCP para que funcionara con datos de juegos. Y aquí están mis resultados:

nueva herramienta añadida al servidor mcp de java

Prueba una Búsqueda:

Busca un juego titulado "FC".
Tienes un juego titulado FC 26.
resultados de la nueva herramienta

3. Características Avanzadas:

Consejos para la Resolución de Problemas

¿Por Qué Usar el Servidor MCP de Java?

El **Servidor MCP de Java** es una forma fantástica de conectar tu aplicación Java a modelos de IA, permitiéndoles acceder a tus datos en tiempo real. Nuestro servidor temático de juegos demostró lo fácil que es compartir datos como “GTA 6” o “FC 26” con Claude o Cursor. El SDK de Java de MCP simplifica la definición de herramientas, y el transporte STDIO mantiene las cosas ligeras. Ya sea que estés construyendo para juegos, cursos o cualquier otra cosa, este servidor es tu boleto para la integración de IA.

Conclusión

¡Ahora eres un profesional del **Servidor MCP de Java**! Has construido un servidor desde cero, lo has probado con datos de juegos y has aprendido a extenderlo con nuevas herramientas. El SDK de Java de MCP facilita enormemente la conexión de tu aplicación a asistentes de IA, y nuestra prueba demostró que funciona. Intenta añadir más datos o herramientas para hacer tu servidor aún más potente.

💡
¿Quieres una excelente herramienta de prueba de API que genere hermosa Documentación de API?

¿Quieres una plataforma integrada y todo en uno para que tu equipo de desarrolladores trabaje con máxima productividad?

Apidog satisface todas tus demandas y reemplaza a Postman a un precio mucho más asequible!
botón

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs