mcpField
G
GemFireMCPServer

GemFireMCPServer

ローカル
github.com/jomartin-999メモリ・ナレッジ063 週間前に更新

GemFireMCPServer について

GemFireMCPServerは、VMware GemFireで金融文書を検索するSpring BootベースのMCPサーバーです。文書の取り込みと一覧表示に対応し、ローカルのONNX埋め込みとベクトル類似検索によるRAGを実行します。

主な機能

  1. 01文書の取り込みと分割
  2. 02ローカルONNX埋め込みの生成
  3. 03GemFireでベクトルとメタデータを保存
  4. 04保存済み文書のメタデータ一覧
  5. 05文書のセマンティック検索

活用シーン

  1. 01金融文書を検索用にインデックス化
  2. 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 リージョンに保存されるファイルメタデータ
  • 🔍 高速なインメモリーセマンティック検索

必要なもの


GemFire MCP サーバーのセットアップ

Java の構成がマシンと一致していることを確認する(Unexpected flavor: cpu を回避するため)

一部の依存関係には、アーキテクチャに固有のネイティブバイナリが含まれています。JDK のアーキテクチャがマシンのアーキテクチャと一致しない場合、これらのライブラリを正しく読み込めず、Unexpected flavor: cpu のようなエラーが発生することがあります。

  1. 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
  1. 次の 2 点を確認する
  • Java 17 以降(java.runtime.version ≥ 17)

  • アーキテクチャが一致していること:os.arch がマシンの CPU アーキテクチャと一致している必要があります

    • Apple Silicon/M1~M4:aarch64(別名 arm64)
    • Intel/AMD:x86_64(別名 amd64)

(省略可)マシンのアーキテクチャを確認します。

uname -m
# arm64 or x86_64
  1. 一致しない場合

マシンに合った 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 ドキュメントを参照するか、以下の手順に従ってください。

  1. GemFire Examples リポジトリをクローンします

    git clone https://github.com/gemfire/gemfire-examples.git
    cd extensions/gemfireVectorDatabase/gemfire-model-context-protocol-server
    
  2. お好みの IDE でプロジェクトを開きます。

  3. ターミナル(IDE 内または別途起動)で gemfire-model-context-protocol-server ディレクトリに移動します。

  4. 仮想環境を作成します

    python3 -m venv venv
    
  5. 仮想環境を有効化します

    source ./venv/bin/activate
    
  6. pip をアップグレードし、ビルドツールをインストールします

    pip install --upgrade pip setuptools wheel
    
  7. 必要な Python パッケージをインストールします

    pip install optimum onnx onnxruntime sentence-transformers
    
  8. モデルを 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/onnx
    

    Spring AI はこの場所からモデルを自動的に読み込みます。

  9. ファイルが存在することを確認します

   ls -lh src/main/resources/onnx
# Should see: model.onnx, tokenizer.json
  1. 仮想環境を無効化します
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 のアクセス認証情報が必要です。

  1. 顧客認証情報を使用して、Broadcom Customer Support Portal にログインします。
  2. VMware Tanzu GemFire のダウンロードページに移動し、VMware Tanzu GemFire を選択して、Show All Releases をクリックします。
  3. 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クラスターへの接続を試みます。クラスターが別の場所で実行されている場合は、次の手順に従います。

  1. GemfireMcpServerDemoApplication.javaを開きます。
  2. ClientCacheの設定である@Beanを見つけます。
  3. ロケーターのホストとポートを環境に合わせて更新します。
MCP サーバーをビルドする
./gradlew clean build

GemFireクラスターのセットアップ

GemFire 10.x以降と、Broadcom Customer Support PortalからGemFire Vector DB拡張機能をダウンロードしていることを確認してください。

  1. GemFireを解凍し、ディレクトリを開きます。

  2. Broadcom Support PortalからダウンロードしたGemFire Vector DBの.gfmファイルを見つけ、GemFireのインストール先にあるextensionsディレクトリに移動します。
    このファイルはGemFireのメインダウンロードには含まれていないため、別途ダウンロードする必要があります。

    例:

    vmware-gemfire-10.1.3/extensions/vmware-gemfire-vectordb-1.2.0.gfm
    
  3. Open a terminal, navigate to the bin folder in the GemFire directory, and start GFSH:

    ./gfsh
    
  4. In GFSH, confirm that the Vector DB extension is installed:

    version --full
    

    You 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
    
  5. Start a locator with the HTTP service enabled:

    start locator --name locator1 --http-service-port 7070
    
  6. Start a second server with a different HTTP service port:

    start server --name server1 --http-service-port 7071
    
  7. Create a region matching the name used in your gemfire.region.docsMetadata property. 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コマンドの出力先を指定する必要があります。

  1. Claude Desktopを再起動します。
  2. 再起動後、ツール選択ボタン(+ボタンの隣)をクリックし、両方のツールが利用可能であることを確認します(バージョン0.9.3の場合)。

Claude Desktopでfilesystemとgemfire-mcp-demoのMCPサーバーが利用可能になりました

  1. financialDocumentsディレクトリに文書があることを確認します。このデモでは、Eli Lilly 2024 10KとEli Lilly May 1, 2025 10Qの文書を使用しました。

ツールの使用

Claude Desktop で gemfire-mcp-demo をクリックすると、利用可能な 3 つのツールが表示されます。

gemfire-mcp-demo で利用可能なツール

  • 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 つのドキュメントを一覧表示

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

クラスター内の指定したドキュメントを要約

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

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