を作りました @pokutuna/mcp-chrome-tabs

AppleScript を使っている都合上 macOS でのみ動きます。
なぜ作ったか
既に LLM にブラウザを操作させる技術は色々ある。browser-use、playwright-mcp、mcp-chrome などなど。
これらの Tool, MCP は便利だけど、様々なツールが入っていてコンテキストへの圧迫が大きく、Chrome の debugging port を開けたり、普段のユーザディレクトリは使えなかったり、ブリッジとなるブラウザ拡張入れたりなど、まあまあめんどく、普段遣いしたいかというと否である。なのでタスクに応じて MCP サーバーのセットを切り替えて暮らしている。
ただ今開いているページを LLM に読ませたい
普段はブラウザ操作をしたいわけではなく、今見ているページを LLM に読ませたいことがほとんどだなと気づいた。
いまや大抵の AI アプリケーションは URL を取得して読んでくれるし、検索エンジンを使えたり便利になっているものの、様々な煩わしさがある。
- URL を貼っても読んでくれず「fetch して」と追加で指示
- 取得し始めるものの robots.txt に阻まれる
- "代わりに別のページを検索します" やめてくれ〜
- 検索したら「これは別の話だな...」「古いの参照してるな...」と実行を停める
- 認証情報がなく見られない、与えるのもひと手間
- 長大なページを読んで Prompt too long エラーで死ぬ
ただ俺が今見てるページ読んでくれ!! という気持ちで作ったのが @pokutuna/mcp-chrome-tabs です。
機能・特徴
- Apple Script 経由でタブのコンテンツを取得する
- 追加の HTTP リクエスト送らず、ページの内容をそのまま参照
- 本文部分を取得し Markdown に変換
@mozilla/readabilityの代替を目指す defuddle を使う
- ツール 3 つのみ、説明も出力も短めで普段遣いできるように
list_tabs: 現在開いているタブの一覧を取得するread_tab_content: 指定したタブの本文部分を Markdown で取得するopen_in_new_tab: AI 側からユーザのブラウザで URL を開けるように
- 実験的に MCP Resources に対応
- Claude Code の
@補完にタブの候補が出ます
- Claude Code の
単純な MCP サーバーで似たものもいくつかあるけど、意外と満足行くものがなく1作ることにしました。 名前に chrome と入れてしまったけどオプションを指定することで Safari でも動く。
使い方
以下のような感じで MCP サーバーとして追加します:
{ "mcpServers": { "chrome-tabs": { "command": "npx", "args": ["-y", "@pokutuna/mcp-chrome-tabs@latest"] } } }
Claude Code の場合は以下のコマンドで:
$ claude mcp add -s user chrome-tabs -- npx -y @pokutuna/mcp-chrome-tabs@latest
その後、Chrome のメニューから
表示 > 開発 / 管理 > Apple Events からのJavaScript を許可
で AppleScript 経由からの Chrome の操作を許可してください。2
実際の使用例
作ってからほぼ毎日使っています。こんな感じで活用中。
- 議事録開きながら「決定事項を箇条書きにして」
- コーディングエージェントが新しすぎて LLM 側に情報がないような作業するときに、公式ドキュメントやリファレンスを開いておいて「タブ一覧から関連する内容を確認してから作業して」
- リポジトリにない設計ドキュメントを開いておいて 「現在のタブの内容から重要なものを CLAUDE.md に反映して」
手で丁寧に渡すなどの代替手段でできることではありますが、いきなり指示して読めるのが便利。
defuddle の本文抽出都合でうまく取れないケースもあり改善したいものの、まあ大抵はうまくいきます。本文テキストを取り出すものなので、具体的には GitHub のコードのページなんかはうまくいかないけど、URL を確認してから gh を使ってくれたり / 使うよう促したり。
MCP Resources プロトコルに対応
Tools だけでなく MCP の Resources プロトコルにも対応してみました。
Claude Code では @file で特定のファイルを参照させることができるけど、その補完候補に Resource を登場させることができます。@cur で tab://current の参照を補完させたり、@{ページタイトルやホスト名の一部} など引っかかるワードで補完候補から選べます

タブ集合の差分を検出してリソースリストの再取得を促す listChanged notification を送る実装もしていますが、まだ Claude Code 側が対応しておらず起動時のタブリストから更新されない。まあそのうち対応されるでしょう...
まとめ
使ってみてね
おまけ情報: playwright-mcp 公式のブリッジ拡張が来そう
リポジトリを見ると見つかる。まだ動きはするけど PoC かな? 再接続ができなかったり親切さゼロだったり。
でも信頼できるところがリリースしてくれると使いやすいので期待しています。
playwright-chrome-extension - pokutuna
- 例えば Claude Desktop の Chrome コネクタも似たような仕組みではあるものの、実装がいまいちで本文部分の切り出しがなかったり。↩
- Chrome が制限厳しくしたのに横穴開けている感はあるので注意は必要↩