AIアシスタントの活用が進む中、社内ドキュメントや技術資料を効率的に検索し、AIの回答に活用したいというニーズが高まっています。Anthropic社が提唱するMCP(Model Context Protocol)を利用することで、AIアシスタントと外部ツールを連携させることができます。
本稿では、Fessをfess-webapp-mcpプラグインでMCPサーバとして構成し、Claude DesktopやClaude Codeから社内ドキュメントを検索できるようにする方法を解説します。今回の動作確認は、Fess 15.5.1およびOpenSearch 3.4.0で行っています。
MCPとは
MCP(Model Context Protocol)は、AIアシスタントと外部ツールやデータソースを接続するためのオープンプロトコルです。MCPを利用することで、AIアシスタントは検索エンジンやデータベース、APIなどの外部リソースにアクセスし、より正確で文脈に沿った回答を生成できるようになります。
Fessでは、fess-webapp-mcpプラグインを導入することで、FessをMCPサーバとして動作させることができます。 これにより、Claude DesktopやClaude CodeなどのMCPクライアントから、Fessに登録されたドキュメントを直接検索できるようになります。
環境構築
Fessの起動
Docker Composeを使用して、FessとOpenSearchを起動します。 以下のコマンドで、起動に必要なファイルをダウンロードします。
$ curl -o compose.yaml https://raw.githubusercontent.com/codelibs/docker-fess/v15.5.1/compose/compose.yaml
$ curl -o compose-opensearch3.yaml https://raw.githubusercontent.com/codelibs/docker-fess/v15.5.1/compose/compose-opensearch3.yamlダウンロードしたcompose.yamlのFESS_PLUGINSの行で、fess-webapp-mcpプラグインをインストールするように編集します。
environment:
- "SEARCH_ENGINE_HTTP_URL=http://search01:9200"
- "FESS_DICTIONARY_PATH=${FESS_DICTIONARY_PATH:-/usr/share/opensearch/config/dictionary/}"
- "FESS_PLUGINS=fess-webapp-mcp:15.5.0"以下のコマンドを実行して、FessとOpenSearchを起動します。
$ docker compose -f compose.yaml -f compose-opensearch3.yaml up -d起動後、ブラウザで http://localhost:8080/
にアクセスして、Fessの検索画面が表示されることを確認します。
プラグインの確認
管理画面にログインし、左メニューの「システム」>「プラグイン」をクリックして、fess-webapp-mcpプラグインがインストールされていることを確認します。

検索対象データの準備
MCPサーバの動作を確認するために、検索対象のデータを準備します。 ここでは、Fess公式サイトをクロールして検索対象とします。
管理画面の左メニュー「クローラー」>「ウェブ」>「新規作成」をクリックして、以下を入力します。
| 項目名 | 設定値 |
|---|---|
| 名前 | Fess Site |
| URL | https://fess.codelibs.org/ja/ |
| クロール対象とするURL | https://fess.codelibs.org/ja/.* |
| 深さ | 2 |
入力後、「作成」ボタンをクリックして設定を保存します。
クロールの実行
「システム」>「スケジューラ」>「Default Crawler」から「今すぐ開始」をクリックしてクロールを開始します。 クロールが完了したら、検索画面で「Fess」と検索して、検索結果が表示されることを確認します。
MCPサーバの動作確認
Fessが起動したら、MCPサーバのAPIをcurlで確認します。
initializeの確認
MCPセッションを初期化して、サーバの機能を確認します。
$ curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "curl-test",
"version": "1.0.0"
}
}
}'以下のようなレスポンスが返ってきます。
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {},
"resources": {},
"prompts": {}
},
"serverInfo": {
"name": "fess-mcp-server",
"version": "1.0.0"
}
}
}利用可能なツールの確認
MCPサーバが提供するツールの一覧を取得します。
$ curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}'Fessでは、以下のツールが提供されています。
| ツール名 | 説明 |
|---|---|
| search | ドキュメントの全文検索を実行 |
| get_index_stats | インデックスの統計情報を取得 |
検索の実行
searchツールを使用して、ドキュメントを検索します。
$ curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search",
"arguments": {
"q": "インストール",
"num": 5
}
}
}'検索結果がJSON形式で返ってきます。 searchツールでは、以下のパラメータを指定できます。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| q | string | ○ | 検索クエリ |
| num | integer | - | 取得件数(デフォルト: 10) |
| start | integer | - | 開始位置(デフォルト: 0) |
| sort | string | - | ソート順(例: "score.desc") |
Claude Desktopの設定
Claude DesktopからFessのMCPサーバに接続するには、mcp-remoteを使用します。 mcp-remoteは、HTTPベースのMCPサーバをClaude Desktopで利用可能にするためのブリッジツールです。
前提条件
Node.js(v18以上)がインストールされている必要があります。
設定ファイルの編集
Claude Desktopの設定ファイルを編集します。 設定ファイルの場所は、OSによって異なります。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
設定ファイルに以下の内容を追加します。
{
"mcpServers": {
"fess": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8080/mcp"]
}
}
}設定ファイルを保存後、Claude Desktopを再起動します。
接続の確認
Claude
Desktopを起動して「fess」サーバが接続されていることを確認します。
「+」>「コネクタ」をクリックして「fess」が表示されることを確認してください。

Claude Codeの設定
Claude Code(CLIツール)からFessのMCPサーバに接続することもできます。
設定ファイルの作成
Claude Codeの設定ファイルは、以下の場所に配置します。
- グローバル設定:
~/.claude/mcp.json - プロジェクト設定: プロジェクトルートの
.mcp.json
設定ファイルに以下の内容を記述します。
{
"mcpServers": {
"fess": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8080/mcp"]
}
}
}接続の確認
Claude Codeを起動すると、MCPサーバへの接続が自動的に行われます。
/mcp
コマンドを実行して、Fessサーバが接続されていることを確認できます。
Claudeからの検索実行
Claude Desktopでの検索
Claude Desktopで、Fessに登録されたドキュメントを検索するには、以下のように質問します。
Fessのインストール方法について、社内ドキュメントを検索して教えてください。
Claudeは、FessのMCPサーバを使用してドキュメントを検索し、検索結果を基に回答を生成します。

Claude Codeでの検索
Claude Codeでも同様に、自然言語で質問することで、Fessに登録されたドキュメントを検索できます。
Fessのクロール設定について、ドキュメントを検索して説明してください。

* * *
本稿では、fess-webapp-mcpプラグインを使用して、FessをMCPサーバとして構成し、Claude DesktopやClaude Codeから社内ドキュメントを検索する方法を紹介しました。
MCPを活用することで、AIアシスタントが社内の検索システムと連携し、より正確で文脈に沿った回答を得られるようになります。 社内ドキュメントの検索効率を向上させたい場合は、ぜひFessとMCPの連携をお試しください。