Java愛好家の皆さん、こんにちは!独自の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 Settings > Tools and Integrations > New MCP Serverに移動します。
- 同じ設定を追加して保存します。
クライアントの再起動: ClaudeまたはCursorを閉じて再度開きます。
ステップ9: Java MCPサーバーのテスト
Claude DesktopまたはCursorでテストします。
サーバーの起動:
- 実行します。
java -jar target/javaone-mcp-0.0.2.jar
コマンドの発行:
- ClaudeまたはCursorで、以下を入力します。
MCPサーバーを使用して、利用可能なすべてのゲームを取得してください。
- 期待される応答:
The available games are GTA 6, FC 26, and 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」というタイトルのゲームを検索してください。
- 期待される応答:
You have a game titled 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をはるかに手頃な価格で置き換えます!