sindi-ai-mcp-server について
Jakarta EE アプリケーション向けの Java MCP サーバー実装で、モジュール構成と REST または Servlet のランタイムを備えています。アノテーションやマネージャーを使って、ツール、プロンプト、リソース、リソーステンプレートを登録できます。
主な機能
- 01モジュール型サーバー構成
- 02REST と Servlet のランタイム
- 03SSE と Streamable HTTP のトランスポート
- 04アノテーションによる MCP 登録
- 05ツール、プロンプト、リソース対応
活用シーン
- 01Jakarta EE アプリに MCP 機能を組み込む
- 02REST または Servlet で MCP サーバーを展開する
- 03Java サービスにツールやリソースを登録する
MCP 対応
REST または Servlet のトランスポートを通じて、ツール、プロンプト、リソース、リソーステンプレートを MCP クライアントに公開する MCP サーバー実装です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
sindi-ai-mcp-server
Anthropic の Model Context Protocol(MCP)サーバーの Java 実装です。
この実装は、MCP プロトコルと Jakarta EE アプリケーションをシームレスに統合することを目指しています。
🏗️ アーキテクチャ
このプロジェクトはいくつかのモジュールで構成されており、それぞれが特定の役割を担っています。
コアモジュール
sindi-ai-mcp-server-spi:サーバーサイドの基本的な MCP クラス、インターフェース、アノテーション、SPI 定義sindi-ai-mcp-server-runtime:実行時のサーバー登録とサービス検出を行う、SPI の実行時実装。sindi-ai-mcp-server-features:MCP の機能を紹介する例を含む、本番環境向けの MCP 機能。Jakarta EE 方式で MCP の力を示します。
実行環境の実装は 2 種類あります。
-
runtime-rest:Jakarta REST を使用した RESTful MCP サーバーサイドトランスポートの実装を含むモジュールです。sindi-ai-mcp-server-runtime-rest-base:以下に記載するすべての Jakarta REST 実装で使用される、Jakarta REST の基本パッケージです。sindi-ai-mcp-server-runtime-rest-sse:MCP SSE トランスポートの Jakarta REST 実装です。sindi-ai-mcp-server-runtime-rest-streamable-http:MCP Streamable HTTP トランスポートの Jakarta REST 実装です。
-
runtime-servlet:Jakarta Servlet を使用したウェブベースの MCP サーバーサイドトランスポートの実装を含むモジュールです。sindi-ai-mcp-server-runtime-servlet-sse:MCP SSE トランスポートの Jakarta Servlet 実装です。sindi-ai-mcp-server-runtime-servlet-streamable-http:MCP Streamable HTTP トランスポートの Jakarta Servlet 実装です。
🚀 クイックスタート
1. 依存関係を追加する
アプリケーションでは、Servlet または REST の実行環境のいずれかを選択する必要があります(エンドポイントが競合する可能性があるため、両方は選択しないでください)。
必要な依存関係を pom.xml に追加します。
- Servlet の場合:
<dependency>
<groupId>za.co.sindi</groupId>
<artifactId>sindi-ai-mcp-server-runtime-servlet</artifactId>
<version>${project.version}</version>
</dependency>
- REST の場合:
<dependency>
<groupId>za.co.sindi</groupId>
<artifactId>sindi-ai-mcp-server-runtime-rest</artifactId>
<version>${project.version}</version>
</dependency>
2. MCP 機能サービスを定義する
MCP 機能は、通常の POJO または CDI 管理 Bean に登録できます。
以下の MCP 機能がサポートされています。
Tools:メソッドでサポートされるアノテーションは@Toolと@ToolArgumentです。LangChain4J のツールアノテーションもサポートされています。メソッドの戻り値の型はStringである必要があります。Prompts:メソッドでサポートされるアノテーションは@Promptと@PromptArgumentです。メソッドの戻り値の型はPromptMessageまたはPromptMessage[]である必要があります。Resource:メソッドでサポートされるアノテーションは@Resourceです(アノテーション属性uriは必須です)。メソッドの戻り値の型はResourceContents[](BlobResourceContentsまたはTextResourceContentsのいずれか)である必要があります。Resource template:メソッドでサポートされるアノテーションは@ResourceTemplateです(アノテーション属性uriは必須です)。メソッドの戻り値の型はResourceTemplate[]である必要があります。
よりプログラム的な方法として、MCP サーバーの実行環境に適切なマネージャーを注入し、コールバックハンドラーとともに MCP 機能を登録できます。
ToolManager:ツールの登録に使用します。PromptManager:プロンプトの登録に使用します。ResourceManager:リソースとリソーステンプレートの登録に使用します。
さらに、以下の MCP リソースを注入できます。
MCPLogger:クライアントセッションへの MCP ロギング(有効な場合)。MCPContext:手動で MCP 機能とクライアントセッションを提供する MCP コンテキスト。
📖 例
このプロジェクトには、examples/ ディレクトリに MCP サーバーの包括的な例が含まれています。例は 2 つあり、それぞれ異なる Jakarta EE サーバープロトコルで MCP を示しています(sindi-ai-mcp-server-features モジュールをバンドルし、各 Jakarta EE サーバープロトコルで MCP 機能を公開します)。
sindi-ai-mcp-server-rest:MCP サーバー(MCP 機能をバンドル)を REST プロトコルで実行します。sindi-ai-mcp-server-servlet:MCP サーバー(MCP 機能をバンドル)を Servlet プロトコルで実行します。
🛠️ サンプルの実行方法
- プロジェクト全体を Git clone します。
- プロジェクトをビルドします。
mvn clean package -e
-
cd examples/sindi-ai-mcp-server-xxxx/を実行します。xxxxにはrestまたはservletを指定できます。 -
次のようにアプリケーションを実行します。
mvn clean liberty:dev -e
- 新しいターミナルを開き、MCP Inspector を起動します。
npx -y @modelcontextprotocol/inspector@latest
ブラウザーが自動的に開き、MCP Inspector が表示されます。
- リンクをコピーして、MCP サーバーに接続します。
SSE の場合、リンクは http://localhost:9080/sse です。
Streamable HTTP の場合、リンクは http://localhost:9080/mcp です。
MCP Inspector で接続をクリックし、MCP の機能をテストします。
🤝 コントリビューション
コントリビューションに参加する場合は、CONTRIBUTING.md をご覧ください。
📄 ライセンス
このプロジェクトは Apache License 2.0 の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。
🌟 はじめに
エンタープライズ Java アプリケーションに AI を統合する準備はできていますか?
- サンプルを確認する:まず、
examples/ディレクトリにある MCP 固有のサンプルをご覧ください。 - ドキュメントを読む:詳細な設定オプションについては、各モジュールのドキュメントをご確認ください。
- コントリビューションに参加する:問題を報告したり、プルリクエストを送信したりして、プロジェクトの改善にご協力ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。