HacoLdevelopers 一般向けのサイト

自分の LINE を、手元の MCP から読む

HacoL は、自分の LINE と WhatsApp の個人アカウントを自分のサーバーにつなぎ、メッセージを自分のサーバーに保管し、AI から読むためのセルフホストの構成です。AI は、管理画面で許可した部屋にだけ、停止スイッチがオフのときに限り送信できます。AI クライアントとは、手元で動かすローカル stdio MCP で接続します。

このページの内容
  1. 最短ルート
  2. 構成
  3. つなげる AI のアプリ
  4. HacoL がすること、しないこと
  5. 固定している原則
  6. 提供の形
  7. 非公式のブリッジについて
  8. ページ一覧

最短ルート#

  1. 手順1 常時オンの機械で6サービスを立ち上げる#

    手元の Mac では OrbStack で、サーバーでは Docker で Compose の6サービスを動かし、管理画面から LINE と WhatsApp にログインします。セルフホスト

  2. 手順2 手元の MCP をつなぐ#

    手元の機械で stdio MCP をビルドし、AI クライアントに read の設定を書きます。MCP

  3. 手順3 1部屋を読む#

    line_list_rooms で得た room_id を line_get_recent_messages に渡し、エラーなしで返れば完了です。

構成#

HacoL は、Matrix を LINE と WhatsApp との接続に使い、context-app を AI から読むための仕組みに使います。

LINE と WhatsApp の個人アカウントから、ブリッジ、Synapse、context-app、ローカル stdio MCP を通って AI クライアントへ届く構成の図です。
LINE の個人アカウント
WhatsApp の個人アカウント
beeper/line固定した版
mautrix/whatsapp固定した版
synapseMatrix のホームサーバー。Element(任意)から人が読む、手で送る
context-app取り込み、検索、許可リストと停止スイッチ、送信、監査、管理画面、添付の取得、REST API
ローカル stdio MCPline_* ツール。応答に network が入ることがあります
AI クライアント
  • Compose の6サービス(postgres、synapse、line-bridge、whatsapp-bridge、context-app、caddy)で動かします。7つ目のサービスは追加しません。
  • caddy はリバースプロキシです。外からの HTTP と HTTPS を受け、context-app と synapse に振り分けます。
  • context-app は Node.js 22 と TypeScript で書かれた1つのプロセスです(Fastify、pg、Zod)。取り込み、検索、送信を別サービスに分けていません。
  • AI クライアントは、REST API を呼ぶローカル stdio MCP を使います。標準の構成では Remote MCP を公開しません。

Element についてメッセージは、AI のアプリから MCP で読みます。LINE と WhatsApp へのログインは、context-app の管理画面で行います。Element(Matrix の Web クライアント)は、人がメッセージを見たり手で送ったりしたいときに使う、任意の画面です。

つなげる AI のアプリ#

  • Claude Desktopstdio
  • Claude Codestdio
  • ChatGPT デスクトップアプリ対応を確認中です
  • Gemini CLI対応を確認中です

ChatGPT デスクトップアプリと Gemini CLI は、公式の文書では stdio の MCP に対応しています。HacoL との組み合わせは、まだ確かめていません。Web 版の ChatGPT と Gemini アプリは、手元の stdio MCP にはつなげないため、このサイトの手順の対象外です。各社の名称は、各社の商標です。

HacoL がすること、しないこと#

HacoL がすることHacoL がしないこと
個人のメッセンジャーのセルフホストでの保管と、AI からの読み取り他社チャットの受信箱 SaaS
送信は既定で拒否し、部屋ごとに許可する全部屋への自動送信
ローカル stdio MCP標準の構成での Remote MCP の公開
1人の運用者が動かす1つの構成マルチテナントの運用

固定している原則#

context-app の前提の設定
READ_SCOPE=all_bridged_line_rooms
SEND_SCOPE=explicit_allowlist
DEFAULT_SEND=deny
AI_NEVER_RECEIVES_MATRIX_OWNER_TOKEN=true
  • 送信は既定で拒否

    新しい部屋は allow_send=false で登録します。AI は、管理画面で許可した部屋にだけ、停止スイッチがオフのときに限り送信できます。

  • 停止スイッチ

    管理画面の「バックアップと更新」で「送信を止める」を押すと、すべての送信が SEND_DISABLED(423)で止まります。.env の初期値は SEND_ENABLED=false です。

  • AI に渡さない秘密

    Matrix の owner トークンは context-app だけが使います。AI に渡るのは read か agent の API キーだけです。

  • MCP から変えられないもの

    許可リスト、停止スイッチ、トークンの取得は MCP のツールにありません。管理画面で人が操作します。

提供の形#

  • セルフホスト版

    いま提供している形です。手元の Mac の OrbStack か、自分のサーバーの Docker で動かし、データはその機械に残ります。LINE と自分以外の、第三者のサーバーに認証を置きません。PC 版の LINE は要りません。

  • クラウド版(準備中)

    クラウド版を準備中です。公開の条件は Threat model に書いています。

非公式のブリッジについて#

非公式のブリッジですLINE と WhatsApp のブリッジは非公式です。LINE 公式の Messaging API ではなく、LINE ヤフー社との提携もありません。upstream の変更で止まることがあり、アカウントがログアウトされたり、利用を制限されたり、停止されたりするおそれがあります。動き続けることやログインの継続は約束しません。

ツール名と識別子についてツール名は歴史的な理由で line_* のままで、WhatsApp の部屋も返します。リポジトリの中のイメージ名やネットワーク名には、旧称の Linee に由来する linee が残っています。

ページ一覧#

最終更新 2026年10月20日