Java SDK で MCP サーバーを構築する方法

Ashley Goolam

Ashley Goolam

4 8月 2025

Java SDK で MCP サーバーを構築する方法

Java愛好家の皆さん、こんにちは!独自の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
GitHubリポジトリのクローン

オプション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サーバーを使用して、利用可能なすべてのゲームを取得してください。
The available games are GTA 6, FC 26, and 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」というタイトルのゲームを検索してください。
You have a game titled 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の開発と利用をよりシンプルなことにする方法を発見できる