第20回 AIエージェントと検索をつなぐ -- MCPサーバーでFessを外部AIツールに統合

はじめに

前回は Fess 内蔵の AI 検索モードで AI アシスタントを構築しました。 しかし、AI 活用の形はそれだけではありません。 Claude Desktop や他の AI エージェントから、Fess を「検索ツール」として利用する方法があります。

本記事では、MCP(Model Context Protocol)サーバーとして Fess を公開し、外部の AI ツールからシームレスに社内ドキュメントを検索できる環境を構築します。

対象読者

  • AI エージェントと検索システムの連携に興味がある方

  • MCP の概念を理解したい方

  • Claude Desktop などの AI ツールを業務で活用している方

MCP とは

MCP(Model Context Protocol)は、AI アプリケーションが外部のデータソースやツールにアクセスするためのプロトコルです。 AI モデルが「検索する」「ファイルを読む」「API を呼ぶ」といった操作を、標準化された方法で行えるようにします。

Fess を MCP サーバーとして公開すると、AI エージェントが自然な文脈で「社内ドキュメントを検索して」という操作を実行できるようになります。

パラダイムの転換

従来の検索は「人間がキーワードを入力して結果を読む」というモデルでした。 MCP により、「AI エージェントが自律的に検索し、結果を解釈して回答に組み込む」という新しいモデルが実現します。

これは「人間が検索する」から「AI が人間の代わりに検索する」への転換です。

Fess MCP サーバーの構築

プラグインのインストール

Fess の MCP サーバー機能は、webapp プラグインとして提供されています。

  1. 管理画面の [システム] > [プラグイン] を選択

  2. fess-webapp-mcp をインストール

  3. Fess を再起動

MCP サーバーが提供する機能

Fess の MCP サーバーは、以下の機能を AI エージェントに提供します。

ツール(Tools)

  • search: 社内ドキュメントの全文検索

  • get_index_stats: インデックスのドキュメント数や JVM メモリ情報の取得

AI エージェントは、これらのツールを呼び出して Fess のインデックスを検索したり、システム状態を確認したりできます。

リソース(Resources)

  • fess://index/stats: インデックス統計情報(ドキュメント数、設定情報、JVM メモリ)

プロンプト(Prompts)

  • basic_search: 基本的な検索クエリの生成

  • advanced_search: ソートや件数指定を含む詳細な検索クエリの生成

Claude Desktop との連携

Claude Desktop の設定

Claude Desktop に Fess の MCP サーバーを接続するには、Claude Desktop の設定ファイルに MCP サーバーの情報を追加します。

設定ファイル(claude_desktop_config.json)に以下のような設定を追加します。

{
  "mcpServers": {
    "fess": {
      "url": "http://localhost:8080/mcp"
    }
  }
}

利用例

Claude Desktop で Fess が MCP サーバーとして接続されると、以下のような対話が可能になります。

例1: 社内ドキュメントの検索

ユーザー: 「出張精算の手続きについて教えてください」

Claude: (Fess の search ツールを呼び出し) 社内の出張精算に関するドキュメントを検索しました。 出張精算の手順は以下の通りです: 1. 出張報告書を作成し... [出張精算マニュアル(portal/manual/travel-expense.html)より]

例2: 複数ドキュメントの横断調査

ユーザー: 「当社のセキュリティポリシーで、パスワードに関する規定をまとめてください」

Claude: (Fess で「パスワード セキュリティポリシー」を検索し、複数の結果を統合) パスワードに関する規定は以下のドキュメントに記載されています: - 情報セキュリティ基本方針: パスワードは12文字以上... - アカウント管理規程: 90日ごとの変更が必要... - リモートアクセス規程: 多要素認証の併用が必須...

AI エージェントは検索結果を解釈し、複数のドキュメントから情報を統合した回答を生成します。

他の AI ツールとの連携

MCP は標準プロトコルのため、Claude Desktop 以外の MCP 対応 AI ツールからも Fess を利用できます。

カスタム AI エージェントからの利用

自社開発の AI エージェントから MCP プロトコルで Fess に接続することも可能です。 MCP クライアントライブラリを使って、プログラムから Fess の検索機能を呼び出せます。

セキュリティの考慮

MCP サーバーを公開する際のセキュリティ上の注意点です。

アクセス制御

  • MCP サーバーへのアクセスを信頼できるクライアントに限定

  • ネットワークレベルでの制限(ファイアウォール、VPN)

  • API トークンによる認証

検索結果の権限制御

MCP 経由の検索にも、Fess のロールベース検索(第5回)が適用されます。 API トークンにロールを紐づけることで、AI エージェントが取得できるドキュメントの範囲を制御できます。

データの取り扱い

クラウドベースの AI サービスと連携する場合、検索結果のテキストが外部に送信される点に注意してください。 機密性の高いドキュメントが含まれる場合は、ローカル LLM(Ollama)との組み合わせや、検索結果のフィルタリングを検討します。

まとめ

本記事では、Fess を MCP サーバーとして公開し、AI エージェントと連携する方法を解説しました。

  • MCP プロトコルの概念と「AI が検索する」パラダイム

  • fess-webapp-mcp プラグインのインストールと設定

  • Claude Desktop との連携例

  • セキュリティの考慮(アクセス制御、権限、データの取り扱い)

AI エージェントが社内のナレッジに直接アクセスできるようになることで、ナレッジ活用の可能性が大きく広がります。

次回は、マルチモーダル検索について扱います。

参考資料