openwebuiと組み合わせて、ローカルファイルをアップロードせずにLLMに読んでもらえる仕組みができました!
⚠️ 注意:プロンプトにローカルファイル情報が出るため、セキュリティーには十分注意してください。
ローカルや社内AIを使わない場合、ローカルファイル情報がダダ漏れになるリスクがあります。この記事で紹介するコードを使用したことによる損害について、筆者は責任を負いかねますのでご了承ください。
何ができるか
「ローカルファイルからXXXDBの仕様書を探して読んで、XXXテーブルからXXX条件でデータを抽出するsql文を考えて」ができる様になります。
概要
- MCPサーバーを作成(GitHub公開)
- openwebuiと連携して、ファイル検索をLLMに頼める
- ファイルアップロード不要。ローカルインデックス活用
※ openwebuiだけでなくてDifyでも利用できました。
手順(openwebuiを使う場合)
1. openwebuiをDockerで起動
まずはopenwebuiをDockerで立ち上げます。
docker run -d -p 8080:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
初期設定(APIキー設定など)は各自で行ってください。ChatGPT APIやローカルLLMと接続できます。
2. 拙作MCPサーバーをmcpo経由で起動
次にMCPサーバーを立ち上げます。
⚠️ 注意: Windowsの場合env.ymlのpyobjc-*の行を消してください
git clone https://github.com/notfolder/local-file-search-mcp.git
cd local-file-search-mcp
conda create -f env.yml
conda activate mcp-file-search-env
mcpo --port 8000 --host 127.0.0.1 --config ./config.json --api-key "top-secret"
下記コマンドでアプリ化できます。
$ pyinstaller mcpo_cli.py main.py --add-data config.json:. --add-data main.py:. --onefile --console -n local-file-search-mcp
※listenするポートやbindするホスト名はmcpo_cli.pyの内容を変更して下さい。
3. openwebuiにMCPサーバーを設定
- 「管理者設定」→「ツール」→「+」をクリック
- 以下を設定します:
- URL:
http://host.docker.internal:8000/search_local_files
- Auth: Bearerとして
top-secret
を指定 - Visibility:
Public
- URL:
4. システムプロンプトに指示を追加
openwebuiの個人設定→一般→システムプロンプトに以下を追記してください:
「ローカルファイルに関する検索や読み込みを依頼されたら、search_local_filesを利用するようにして下さい。」
5. 利用開始!
チャットを開き、「+」ボタンでsearch_local_files
ツールを有効にします。
例:
ローカルファイルで内容に「FastMCP」が含まれるファイルを探して
ファイルが見つかったら、さらに:
「検索結果のファイル」を読んで、概要を教えて
textファイルだけでなく、Word・Excel・PowerPointファイルにも対応しています。
手順(mcp serverとして使う場合)
1. 起動
- stdioの場合
$ python main.py
- sseでローカルサーバーを立てる場合
$ python main.py --transport sse
2. 設定
-
stdioの場合
mcp_setting.json
を参考にmcpクライアントに設定する。 -
sseでローカルサーバーを立てる場合
mcp_setting_sse.json
を参考にmcpクライアントに設定する。
3. 後はmcpクライアントで有効にして使うだけ
番外編:開発の裏話
このツールの開発にはGitHub Copilotをフル活用しました!
WindowsのSearch.CollatorDSO
や、MacのNSMetadataQuery
なんて全然知らなかったので、頼りきりで作りました。
ちなみに、いまだにWindowsのDocumentsフォルダ限定検索の方法が見つかっていません……(誰か教えてください🙏)。
リンク
- GitHubリポジトリ:local-file-search-mcp
ここまで読んでいただき、ありがとうございました!
ローカルファイルをもっと安全に、便利に扱いたい方はぜひ試してみてください🚀
この記事の作成過程