GemFireMCPServer について
GemFireMCPServerは、VMware GemFireで金融文書を検索するSpring BootベースのMCPサーバーです。文書の取り込みと一覧表示に対応し、ローカルのONNX埋め込みとベクトル類似検索によるRAGを実行します。
主な機能
- 01文書の取り込みと分割
- 02ローカルONNX埋め込みの生成
- 03GemFireでベクトルとメタデータを保存
- 04保存済み文書のメタデータ一覧
- 05文書のセマンティック検索
活用シーン
- 01金融文書を検索用にインデックス化
- 02自然言語の質問に関連する箇所を検索
MCP 対応
金融文書の追加、利用可能な文書の一覧表示、文書検索を行うツールをMCPクライアントに公開します。stdioトランスポートで接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GemFireMCPServer
VMware GemFire と Spring AI を使用し、金融文書を高速にベクトル検索できるようにする、Spring Boot ベースの Model Context Protocol(MCP)サーバーです。
概要
このプロジェクトでは、MCP クライアント(Claude Desktop など)が GemFire をバックエンドとするサーバーと連携し、文書のセマンティック検索を実行する方法を紹介します。金融関連ファイルをチャンクに分割してベクトル表現に埋め込み、GemFire に保存することで、Retrieval-Augmented Generation(RAG)ワークフローを使った高速でインテリジェントな検索を実現します。

ユーザーは次の操作を行えます。
- 文書をアップロードする — ファイルをチャンクに分割して埋め込み、GemFire にベクトルとして保存します。ファイル名やサイズなどのメタデータは、専用の GemFire リージョンに別途保存されます。
- アップロードしたコンテンツを閲覧する — 保存されているすべての文書のメタデータを取得して表示します。
- 文書を検索する(RAG) — MCP クライアントから自然言語で質問を送信します。サーバーがベクトル類似検索を実行し、上位の結果を言語モデルに渡して応答を生成します。
特長
- 🔗 文書の取り込み、一覧表示、検索に対応した MCP 準拠のエンドポイント
- 🧠 Spring AI によるローカルの ONNX ベース埋め込み
- 💾 VMware GemFire によるベクトルとメタデータの保存
- 🧾 専用の GemFire リージョンに保存されるファイルメタデータ
- 🔍 高速なインメモリーセマンティック検索
必要なもの
- Java 17 以降
- Gradle(このデモでは推奨)または Maven
- GemFire VectorDB
- VMware GemFire 10.x 以降
- Claude Desktop(または MCP クライアント)
GemFire MCP サーバーのセットアップ
Java の構成がマシンと一致していることを確認する(Unexpected flavor: cpu を回避するため)
一部の依存関係には、アーキテクチャに固有のネイティブバイナリが含まれています。JDK のアーキテクチャがマシンのアーキテクチャと一致しない場合、これらのライブラリを正しく読み込めず、Unexpected flavor: cpu のようなエラーが発生することがあります。
- JDK のバージョンとアーキテクチャを確認する
JAR をビルドする際に使用するのと同じターミナルで、次のコマンドを実行します。
java -XshowSettings:properties -version 2>&1 | grep -E 'java.vendor|java.runtime.version|os\.name|os\.arch'
出力例:
java.runtime.version = 17.0.5+8-LTS
java.vendor = BellSoft
os.arch = aarch64
os.name = Mac OS X
- 次の 2 点を確認する
-
Java 17 以降(
java.runtime.version≥ 17) -
アーキテクチャが一致していること:
os.archがマシンの CPU アーキテクチャと一致している必要があります- Apple Silicon/M1~M4:
aarch64(別名arm64) - Intel/AMD:
x86_64(別名amd64)
- Apple Silicon/M1~M4:
(省略可)マシンのアーキテクチャを確認します。
uname -m
# arm64 or x86_64
- 一致しない場合
マシンに合った JDK をインストールします(例:Apple Silicon には aarch64/arm64 の JDK、Intel には x86_64 の JDK)。アーキテクチャが一致しないと、Unexpected flavor: cpu のようなエラーが発生してビルドに失敗することがあります。
リポジトリをクローンし、ONNX 埋め込みモデルを準備する
PDF ドキュメントの埋め込みを生成するには、Spring AI に埋め込みモデルが必要です。
このデモでは、ローカル推論に sentence-transformers/all-MiniLM-L6-v2 の ONNX エクスポート版を使用します。
詳しくは Spring AI の ONNX ドキュメントを参照するか、以下の手順に従ってください。
-
GemFire Examples リポジトリをクローンします
git clone https://github.com/gemfire/gemfire-examples.git cd extensions/gemfireVectorDatabase/gemfire-model-context-protocol-server -
お好みの IDE でプロジェクトを開きます。
-
ターミナル(IDE 内または別途起動)で
gemfire-model-context-protocol-serverディレクトリに移動します。 -
仮想環境を作成します
python3 -m venv venv -
仮想環境を有効化します
source ./venv/bin/activate -
pip をアップグレードし、ビルドツールをインストールします
pip install --upgrade pip setuptools wheel -
必要な Python パッケージをインストールします
pip install optimum onnx onnxruntime sentence-transformers -
モデルを
resources/onnxディレクトリにエクスポートしますoptimum-cli export onnx --model sentence-transformers/all-MiniLM-L6-v2 src/main/resources/onnxこれにより、次の場所に
model.onnxとtokenizer.jsonが生成されます。extensions/gemfireVectorDatabase/gemfire-model-context-protocol-server/src/main/resources/onnxSpring AI はこの場所からモデルを自動的に読み込みます。
-
ファイルが存在することを確認します
ls -lh src/main/resources/onnx
# Should see: model.onnx, tokenizer.json
- 仮想環境を無効化します
deactivate
起こり得る問題
ONNX エクスポート時に依存関係が不足している
次のエラーが表示された場合:
Weight deduplication check in the ONNX export requires accelerate. Please install accelerate to run it.
不足している依存関係をインストールし、手順 8 のエクスポートコマンドを再実行します。
pip install accelerate
optimum-cli export onnx --model sentence-transformers/all-MiniLM-L6-v2 src/main/resources/onnx
GemFire アーティファクトへのアクセスを設定する
GemFire の依存関係を解決するには、Broadcom のアクセス認証情報が必要です。
- 顧客認証情報を使用して、Broadcom Customer Support Portal にログインします。
- VMware Tanzu GemFire のダウンロードページに移動し、VMware Tanzu GemFire を選択して、Show All Releases をクリックします。
- Click Green Token for Repository Access というリリースを見つけ、右側の Token Download アイコンをクリックします。GemFire アーティファクトリポジトリの使用方法に関する手順が開きます。ページ上部に Access Token が表示されます。Copy to Clipboard をクリックします。この Access Token をパスワードとして使用します。
Gradle を使用する場合
~/.gradle/gradle.properties(またはプロジェクトレベルの gradle.properties)に認証情報を追加します。
gemfireRepoUsername=EXAMPLE-USERNAME
gemfireRepoPassword=MY-PASSWORD
EXAMPLE-USERNAMEは support.broadcom.com のユーザー名です。MY-PASSWORDは手順 3 でコピーした Access Token です。
Maven を使用する場合:
~/.m2/settings.xml を更新します。
<settings>
<servers>
<server>
<id>gemfire-release-repo</id>
<username>EXAMPLE-USERNAME</username>
<password>MY-PASSWORD</password>
</server>
</servers>
</settings>
EXAMPLE-USERNAMEは support.broadcom.com のユーザー名です。MY-PASSWORDは手順 3 でコピーした Access Token です。
application.propertiesを設定する
application.propertiesファイルを開き、次のプロパティを設定します。
spring.main.web-application-type=none— この例ではMCP クライアント(Claude Desktop)とのSTDIO接続を使用するため、HTTPリクエストの処理は不要です。埋め込みWebサーバーを無効にする必要があります。spring.main.banner-mode=off— 起動時に表示されるアプリケーションのバナーを無効にします。logging.pattern.console=— コンソールの出力を減らすため、書式設定されたログ出力を無効にします。spring.ai.mcp.server.stdio=true— MCP STDIO サーバーを有効にします。spring.ai.vectorstore.gemfire.port=7070— GemFire HTTPサービスで使用するポートです。クラスターで使用する--http-service-portと一致させる必要があります。spring.ai.vectorstore.gemfire.initialize-schema=true— GemFireにベクトルインデックスとリージョンを自動作成します。インデックスを手動で管理する場合は、falseに設定します。spring.ai.vectorstore.gemfire.index-name=financialDocuments— GemFireのベクトルインデックス名です。spring.ai.embedding.transformer.onnx.model-uri=classpath:onnx/model.onnx— 先ほど作成したONNXモデルファイルへのパスです。spring.ai.embedding.transformer.tokenizer.uri=classpath:onnx/tokenizer.json— 先ほど作成したトークナイザーファイルへのパスです。spring.ai.embedding.transformer.onnx.modelOutputName=token_embeddings— 埋め込みに使用する出力ノード名です。docs.path=/Path/To/FinancialDocs— 財務文書を読み込むディレクトリです。gemfire.region.docsMetadata=- GemFireベクトルDBに保存された各文書のメタデータを格納するリージョンです。
GemFireクラスター接続を設定する
この例では現在、localhost:10334で実行されているGemFireクラスターへの接続を試みます。クラスターが別の場所で実行されている場合は、次の手順に従います。
GemfireMcpServerDemoApplication.javaを開きます。ClientCacheの設定である@Beanを見つけます。- ロケーターのホストとポートを環境に合わせて更新します。
MCP サーバーをビルドする
./gradlew clean build
GemFireクラスターのセットアップ
GemFire 10.x以降と、Broadcom Customer Support PortalからGemFire Vector DB拡張機能をダウンロードしていることを確認してください。
-
GemFireを解凍し、ディレクトリを開きます。
-
Broadcom Support PortalからダウンロードしたGemFire Vector DBの
.gfmファイルを見つけ、GemFireのインストール先にあるextensionsディレクトリに移動します。
このファイルはGemFireのメインダウンロードには含まれていないため、別途ダウンロードする必要があります。例:
vmware-gemfire-10.1.3/extensions/vmware-gemfire-vectordb-1.2.0.gfm -
Open a terminal, navigate to the
binfolder in the GemFire directory, and start GFSH:./gfsh -
In GFSH, confirm that the Vector DB extension is installed:
version --fullYou should see output similar to:
gfsh>version --full ---------------------------------------- Tanzu GemFire ---------------------------------------- Build-Java-Vendor: BellSoft GemFire-Source-Date: 2025-03-20 13:29:10 -0700 Build-Platform: Linux 4.18.0-553.el8_10.x86_64 amd64 Build-Java-Version: 1.8.0_442 GemFire-Source-Revision: 62f20538984ebd92beee00874104d8706c6e4719 Build-Id: gemfire 2511 Product-Name: Tanzu GemFire GemFire-Version: 10.1.3 GemFire-Source-Repository: support/10.1 ---------------------------------------- Tanzu GemFire Vector DB ---------------------------------------- GemFire-Vector-DB-Source-Repository: HEAD GemFire-Vector-DB-Source-Date: 2025-04-10 09:22:32 -0700 GemFire-Vector-DB-Version: 1.2.0 GemFire-Vector-DB-Source-Revision: 9ad01268475449c40fd58491b373b30ce3c91522 -
Start a locator with the HTTP service enabled:
start locator --name locator1 --http-service-port 7070 -
Start a second server with a different HTTP service port:
start server --name server1 --http-service-port 7071 -
Create a region matching the name used in your
gemfire.region.docsMetadataproperty. For example:create region --name=FinancialDocumentsMetadata --type=PARTITION
The GemFire cluster is now ready to accept documents.
Claude Desktop Setup
The GemFire MCP Server will appear as a Tool in Claude Desktop once configured.
1.Download Claude Desktop
2. Start Claude Desktop and open the Developer settings:
Claude -> Settings -> Developer
3. Click on Edit Config
4. Open the claude_desktop_config.json file.
5. Add or update the mcpServers section as follows:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Path/To/financialDocs"
]
},
"gemfire-mcp-demo": {
"command": "java",
"args": [
"-jar",
"/Path/To/GEMFIRE/MCP/JAR"
]
}
}
}
Claude Desktopにツールとして表示される、次の2つのMCPサーバーが登録されます。
-
ファイルシステムツール — Claude Desktopが指定したディレクトリ内のファイルにアクセスできるようにします。
/Path/To/financialDocsが、アプリケーション設定のdocs.path=プロパティの値と一致していることを確認してください。 -
GemFire MCP サーバー — Claude DesktopがGemFireクラスターとやり取りできるようにします。JARのパスは、先ほど説明した
./gradlew clean buildコマンドの出力先を指定する必要があります。
- Claude Desktopを再起動します。
- 再起動後、ツール選択ボタン(+ボタンの隣)をクリックし、両方のツールが利用可能であることを確認します(バージョン0.9.3の場合)。

financialDocumentsディレクトリに文書があることを確認します。このデモでは、Eli Lilly 2024 10KとEli Lilly May 1, 2025 10Qの文書を使用しました。
ツールの使用
Claude Desktop で gemfire-mcp-demo をクリックすると、利用可能な 3 つのツールが表示されます。

-
add_financial_doc
Claude は financialDocs ディレクトリ内で指定されたドキュメントを探し、MCP サーバーに送信します。サーバーはそのドキュメントのベクトル埋め込みを生成して GemFire Vector DB に保存し、関連するメタデータをメタデータリージョンに追加します。 -
list_available_financial_docs
Claude は MCP サーバーに利用可能なドキュメントの一覧を要求します。サーバーは GemFire のメタデータリージョンを照会し、ドキュメントの一覧を返します。 -
search_financial_docs
次のような質問を Claude にします。 「この財務ドキュメントを要約し、どのような傾向が見られるか教えてください。」 Claude は MCP サーバーにセマンティック検索リクエストを送信します。サーバーは GemFire Vector DB から関連する内容を取得し、それに応じて回答します。
例
ドキュメントを追加する

利用可能なドキュメントを一覧表示する

指定したドキュメントを要約する

利用可能なドキュメントを一覧表示する(複数)

2 つのドキュメントを横断して要約する

コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。