自分だけの検索エンジンを作る「Hister」──ブラウザ履歴もローカルファイルもMCP経由で検索対象にする
AGPLv3のOSSツールHisterは、訪れたWebページと手元のファイルを全文インデックス化し、Web・ターミナル・CLI・HTTP API・MCPサーバーという5通りの入口から検索できる自己ホスト型の検索エンジン。テレメトリなし・クラウド必須なしという設計をREADMEから確認した。

目次
3行まとめ
- Histerは、ブラウザで訪れたページと手元のファイルの内容を全文インデックス化し、自分で選んだサーバー上に保存する自己ホスト型の検索エンジン。ライセンスはAGPLv3。
- 検索の入口はWeb・ターミナル・CLI・HTTP API・MCPサーバーの5種類が用意されており、AIアシスタントからMCP経由で検索させることもできる。
- サイト自身が掲げる原則は「テレメトリなし」「クラウド必須ではない」「クライアントはあなたが設定したHisterサーバーにしかインデックス内容を送らない」の3点。
「ブックマークやファイル名の先」を検索する
Histerのコンセプトは、タイトルやURL・ファイル名だけでなく、インデックス化したページ・ファイルの中身そのものを検索対象にすることだ。サイトのデモには「1,924ページがインデックス済み」の状態で「privacy notes I read last month(先月読んだプライバシーに関するメモ)」と検索すると、0.04秒で6件がヒットする例が示されている。ヒットした結果はスニペットだけでなく、保存された本文プレビューと元の出典(ソース)を並べて表示する。
集める・索引する・見つける、という3ステップ
サイトの説明によれば、仕組みは次の3段階に分かれる。
- 収集(Collect):ブラウザ拡張機能で訪れたページを自動的に保存する、ローカルフォルダを監視する、ブラウザ履歴をインポートする、サイトをクロールする、のいずれか
- 索引(Index):重要な部分を抽出し、選んだサーバー上で全文インデックス化する
- 検索(Find):Web・ターミナル・コマンドライン、あるいはAIアシスタントにMCP経由で取得させる
「収集」で使えるソースとして明記されているのは、ブラウザ拡張機能(Chrome・Firefox向けが配布されている)・ローカルファイル監視・ブラウザ履歴インポート・Webサイトクローラーの4種類。「検索」では、フィールド指定・引用符によるフレーズ検索・ワイルドカード・否定・日付範囲・独自エイリアスといったクエリ言語の機能が使える。「抽出」については、構造化データに対応したコンテンツ抽出器、オプションのセマンティック検索(有効にした場合のみ、自分で設定した埋め込みエンドポイントへテキストが送られる)、言語別インデックス、読みやすいプレビューが用意されている。「ルール適用」では、スキップ・優先度ルール、バージョン管理(過去のドキュメント内容を保持できる)、機微情報チェックが挙げられている。
開発者はSearx(メタ検索エンジン)とColly(Webスクレイピングフレームワーク)の作者だった
Histerの開発者はGitHubアカウントasciimoo(本名Adam Tauber、ハンガリー・ブダペスト在住)。本人のGitHubプロフィールには「Author of Hister, Searx, Colly and a bunch of smaller projects」と明記されている。Searxは、SearXNGの前身にあたるプライバシー重視のメタ検索エンジンとして知られるOSSプロジェクトで、Collyは人気のGo言語製Webスクレイピングフレームワークだ。つまりHisterは、検索エンジンとクローラーの両方を作った経験を持つ開発者による、個人向け検索エンジンという位置づけになる。リポジトリ(asciimoo/hister)はGitHub実測でスター3.2k・フォーク147。
クエリ言語:フィールド指定と日付範囲の実例
Query Language Guideには、field:value形式で使えるフィールドが具体的に列挙されている。
| フィールド指定 | 意味 | 例 |
|---|---|---|
title: |
タイトルのみを検索 | title:encryption |
text: |
本文のみを検索 | text:"GDPR compliance" |
url: / url_re: |
URLのみ検索(url_re:はGo正規表現) |
url:*/security/* |
domain: |
ドメイン名のみ検索 | domain:github.com |
language: |
検出された言語で絞り込み | language:en |
label: |
ドキュメントのラベルで絞り込み | label:research |
metadata.KEY: |
メタデータの値で絞り込み | metadata.source:linkding |
type: |
ドキュメント種別(web/file/local) | type:file |
visits: |
訪問回数(範囲指定可:visits:2..4、visits:10..) |
visits:1 |
added: / updated: |
追加日・更新日(相対期間 or 絶対日付) | added:>90d、added:>=2026-04-01、updated:>90d、updated:<2026-05-01 |
user_id: |
ユーザーIDで絞り込み(管理者用) | user_id:3 |
added:とupdated:は、90d(90日)のような相対期間と、YYYY-MM-DD形式の絶対日付の両方に対応しており、相対期間は秒(s)・分(m)・時(h)・日(d)・週(w)の単位が使える。
MCP経由のアクセスには「プロンプトインジェクション対策」が明記されている
MCP Integrationのドキュメントを読むと、単に検索結果をAIアシスタントに渡すだけでなく、プロンプトインジェクション対策が具体的に設計されていることが分かる。
Every indexed title, URL, metadata value, document body, and history field is untrusted source data. A page can contain instructions aimed at the assistant that reads it. Those instructions must never override the user request, cause secret disclosure, or trigger another tool.
(インデックス化されたタイトル・URL・メタデータ値・本文・履歴のすべてのフィールドは、信頼できない情報源のデータとして扱われる。ページには、それを読むアシスタント宛ての指示が含まれている可能性がある。そうした指示は、ユーザーの要求を上書きしたり、秘密情報を漏洩させたり、別のツールを起動させたりしてはならない)
具体的には、ツールのレスポンスはソース由来の値をstructuredContent.untrusted_contentという区画に格納し、すべてのレコードにtrust: "untrusted"というフラグを付与する。目に見えない制御文字は除去され、HTMLはsearchで明示的に要求された場合かget_previewのプレビューとしてのみ返る。ドキュメント自身も「これらの対策はリスクを減らすが、すべてのモデルがプロンプトインジェクションに抵抗できることを保証するものではない」「MCPクライアント側もHTMLをサニタイズし、読み取り専用以外のアクション(ファイル・シェル・ブラウザ・メール・ネットワークツールの使用)の前にはユーザー確認を必須にすべき」と注意を添えている。エンドポイントはPOST /mcpで、Streamable HTTPトランスポートを使う設計だ。
デプロイはローカル1バイナリからマルチユーザーまで
デプロイの選択肢として、設定不要のクイックスタートで動く単一バイナリ、SQLiteまたはPostgreSQLを使ったバックエンド、ユーザースコープ付きのマルチユーザー構成、Docker・Nixでの導入が挙げられている。「プライバシーの原則」としてサイトが強調しているのは、インデックス・保存されたページ内容・ルールはすべて自分で設定したHisterサーバー上に留まり、そのサーバーにはテレメトリがなくクラウドサービスも必須ではない、という点だ。オプションのセマンティック検索を有効にした場合のみ、テキストが自分で設定した埋め込みエンドポイントに送られる(ブラウザ拡張機能がファビコンを取得する場合もある)とも明記されている。
大規模なインデックスでの検索速度は確認していない
本記事はHister公式サイト(hister.org)・GitHubリポジトリ・Quickstart/Query Language Guideの各ドキュメントを2026年8月27日〜30日にcurlで取得した内容にもとづく。実際にブラウザ拡張機能とサーバーをセットアップし、自分のブラウジング履歴やファイルをインデックス化して検索を試したわけではない。Quickstartの手順によれば、./hister listenでサーバーが起動し、既定ではhttp://127.0.0.1:4433(同一マシンからのみアクセス可能)で待ち受けるとされているが、この起動コマンド自体も自分の手元では実行していない。デモに掲載されている「1,924ページ・0.04秒」という数字も、サイトが提示する1つの例であり、大規模なインデックスでの検索速度がどうなるかは確認できていない。
自己ホスト型の個人検索エンジンという事例はまだ少ない
Zenn・Qiitaともに言及はゼロだった。自己ホスト型の個人検索エンジンというテーマ自体、日本語圏ではまだ紹介例が少ない。
関連記事
出典・参照資料
AIニュースの解説を動画でも
YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。
コメント
まだコメントはありません。最初のコメントを書いてみませんか?
AIについて聞きたいことはありますか?
質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。
質問箱を見る →新しい記事をメールで受け取る
AIの新しい発表を、出典付きで整理して届けます。