Page2AI — Web to Markdown について
Page2AI — Web to Markdownは、Webページや渡されたHTMLをLLM向けのMarkdownに変換するローカルMCPサーバーです。表やコードブロックなどの構造を保ちつつナビゲーションを除去し、指定URL以外への外部通信を行いません。
主な機能
- 01URLまたは指定HTMLをMarkdownに変換
- 02表、見出し、コードブロックを保持
- 03ページ情報をYAMLフロントマターに収録
- 04プライベート、ループバック、メタデータ宛先を遮断
- 05Agent Bridge経由でブラウザー表示ページを利用
活用シーン
- 01ドキュメントページをLLM向けに整形
- 02ブラウザーツールから渡されたHTMLを変換
- 03ブラウザー拡張ブリッジでログイン済みページを取得
MCP 対応
読み取り専用の`page_to_markdown`ツールをstdioで提供し、任意でホスト型Streamable HTTPエンドポイントも利用できます。Page2AI拡張機能からAgent Bridge経由でレンダリング済みMarkdownを受け取ることもできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 3 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | 変換するウェブページの絶対 HTTP または HTTPS URL。プライベートアドレス範囲、ループバック、クラウドメタデータのエンドポイントをブロックします。 |
| timeout_ms | integer | いいえ | N ミリ秒後に取得を中止します。範囲:1000-60000。 |
| include_images | boolean | いいえ | 出力に画像参照 () を含めます。 |
| include_frontmatter | boolean | いいえ | タイトル、ソース URL、取得タイムスタンプ、言語、説明、正規 URL を含む YAML frontmatter ブロックを先頭に追加します。 |
詳細
@page2ai/mcp — LLM コンテキスト向け Web から Markdown への変換
ダウンロード数のバッジは意図的に掲載していません。npm のダウンロード数はレジストリのミラーやボットの影響が大きく、この README では人が信頼できる数値のみを掲載しています。
ChatGPT、Claude、Gemini 向けの、ワンクリックで Web ページを Markdown に変換する MCP サーバーです。 言語ヒント付きのコードブロック、表、読みやすい構造を保持します。 取得、抽出、変換を 1 つのツール、1 つのコマンドで、すべてお使いのマシン上で実行できます。 API キーもアカウントもテレメトリーも不要です。ネットワークリクエストは、指定した URL へのものだけです。
Page2AI Chrome & Firefox extensions の補完ツールです。この拡張機能は、独自のパイプラインを使ってブラウザー内の表示中のページを変換します。このサーバーは
@page2ai/core をベースに構築されています。
クイックスタート
npx -y page2ai-mcp
これにより stdio MCP サーバーが起動します。クライアントからの接続を待って何も表示しないため、単独で実行するのではなく、以下のいずれかのクライアントに接続してください。Node.js 20 以降が必要です。API キーは不要です。npx が古いキャッシュ版を提供する場合は、npx -y page2ai-mcp@latest を一度実行してください。
更新。 npx -y page2ai-mcp はサーバーの起動時に npm に最新バージョンを問い合わせますが、MCP クライアントは終了するまでサーバーを実行し続けます。クライアントを終了して再度開くと更新されます。設定で指定したバージョン([email protected])は、変更するまでそのままです。npx -y page2ai-mcp --version を実行すると、現在 npx が実行するバージョンが表示されます。
page2ai-mcp は @page2ai/mcp をラップする、スコープなしの薄いラッパーです。両者は同時にリリースされます。依存関係には ^ の範囲が指定されており、0.x バージョンではパッチリリースのみが許可されます。
ホステッドエンドポイント(ベータ)— インストール不要
リモート MCP サーバーの URL(Streamable HTTP)のみを受け付けるクライアント向け:
https://page2ai-mcp-remote.vercel.app/api/mcp
同じツールで、コードも同じです(remote/ を参照)。IP ごとにレート制限があります。
プライバシー面でのトレードオフ: ホステッドエンドポイントに送信された URL は、そのサーバーから取得されるため、作者が運用するインフラストラクチャ(Vercel 上)を経由します。npx を使ってローカルで実行すれば、すべてがマシン上にとどまります。可能であれば、こちらをお使いください。
Claude Code
claude mcp add page2ai -- npx -y page2ai-mcp
Claude Desktop
ワンクリックバンドル: latest release から page2ai-mcp-<version>.mcpb をダウンロードし、Claude Desktop で Settings → Extensions → Advanced settings → Install Extension… を開いてファイルを選択します。
または、claude_desktop_config.json(macOS:~/Library/Application Support/Claude/、Windows:%APPDATA%\Claude\)に追加し、Claude Desktop を完全に終了してから再起動します:
{
"mcpServers": {
"page2ai": { "command": "npx", "args": ["-y", "page2ai-mcp"] }
}
}
Cursor
または、~/.cursor/mcp.json(グローバル)/.cursor/mcp.json(プロジェクト)に追加します:
{
"mcpServers": {
"page2ai": { "command": "npx", "args": ["-y", "page2ai-mcp"] }
}
}
VS Code(GitHub Copilot)
code --add-mcp '{"name":"page2ai","command":"npx","args":["-y","page2ai-mcp"]}'
または、.vscode/mcp.json に追加します:
{
"servers": {
"page2ai": { "type": "stdio", "command": "npx", "args": ["-y", "page2ai-mcp"] }
}
}
Codex CLI
codex mcp add page2ai -- npx -y page2ai-mcp
Gemini CLI
gemini mcp add page2ai npx -y page2ai-mcp
Antigravity
agy mcp add page2ai npx -y page2ai-mcp
Windsurf
~/.codeium/windsurf/mcp_config.json(macOS/Linux)または
%USERPROFILE%\.codeium\windsurf\mcp_config.json(Windows)に追加します:
{
"mcpServers": {
"page2ai": { "command": "npx", "args": ["-y", "page2ai-mcp"] }
}
}
Zed
settings.json(zed: open settings file)に追加します:
{
"context_servers": {
"page2ai": { "command": "npx", "args": ["-y", "page2ai-mcp"] }
}
}
その他の MCP クライアント
stdio 経由で MCP を利用するクライアントであれば、どれでも動作します。Cline、Continue、JetBrains AI Assistant、LM Studio などが該当します。MCP サーバーの設定で、同じコマンドを指定してください:
npx -y page2ai-mcp。
AI エージェントにインストールを任せる
AI エージェント(Cline、Claude Code、Codex など)にセットアップを任せる場合は、
llms-install.md を参照させてください。クライアントごとの正確なコマンドと
確認手順を記載した、機械向けのインストールガイドです。
ツール
| ツール | 説明 | 読み取り専用 | 例 |
|---|---|---|---|
page_to_markdown | ウェブページの URL を取得するか、その HTML を受け取り、読みやすい Markdown に変換します | ✅ | page_to_markdown(url="https://docs.anthropic.com/en/api/messages") |
サインインが必要なページ、または JavaScript でレンダリングされるページ
サーバーは Cookie なしでページを取得し、ページスクリプトは実行しません。どちらかが必要なページには、次の方法を使います。
-
手元にある HTML を渡す(Playwright、Chrome DevTools MCP、または別のブラウザツールから取得したもの)。HTML を
htmlとして、ページのurlとともに渡します。HTML が変換され、URL は取得されません。相対リンクはその URL を基準に解決されます。この場合、フロントマターにはprovenance: "HTML supplied by the caller; the source URL was not fetched"が含まれます。空のhtmlはエラーとなり、urlの取得は行われません。 -
または、Page2AI 拡張機能で Agent Bridge を有効にする(1.6.0 以降):ポップアップ → Agent Bridge スイッチ → ウェブサイトへのアクセスを許可します。拡張機能が接続されている間、
urlのページは、 Cookie とスクリプトを使用して、ユーザー自身のブラウザのバックグラウンドタブで開かれ、拡張機能の Markdown として返されます(include_imagesとinclude_frontmatterの設定はポップアップではなく、 ここでの呼び出しに適用されます)。拡張機能はサインインプロバイダーのページと http(s) 以外のページを 拒否します。拒否されたページは通常どおりサーバーが取得し、その理由を示す 2 つ目のテキストブロックが 返されます。ブラウザが別のページ(サインインへのリダイレクト先)に移動した場合は、取得されたページを 示す 2 つ目のテキストブロックが返されます。プライベートアドレス、ループバックアドレス、クラウドメタデータ アドレスは、サーバー自身による取得と同様に、ブラウザを開く前に拒否されます。また、ブラウザがリダイレクト された先のページも拒否されます。ブリッジがリッスンするのはws://127.0.0.1:3025のみです。キー(0.6.0 以降)。 ブリッジが動作するのは、拡張機能に表示されるキーを使った場合のみです。 ポップアップ → Agent Bridge をオン → Copy key。このキーを
PAGE2AI_BRIDGE_KEYとしてこの サーバーに渡します。Claude Desktop(.mcpb拡張機能)では、Page2AI の設定 Agent Bridge key に 貼り付けます。JSON 設定では、サーバーエントリーに"env": { "PAGE2AI_BRIDGE_KEY": "<key>" }を 追加します。Claude Code では、claude mcp add page2ai -e PAGE2AI_BRIDGE_KEY=<key> -- npx -y page2ai-mcpを実行します。その後、MCP クライアントを再起動してください。複数のブラウザやプロファイルを使う場合は、 各キーを 1 つの変数にカンマ区切りで設定します。最初に接続したブラウザがブリッジを保持します。Page2AI を実行する MCP クライアントが複数ある場合(たとえば Claude Desktop と Cursor)、最初に起動したものが ポート 3025 を保持し、ほかのクライアントはブリッジなしで実行されます。そのため、各クライアントにキーを 渡してください。キーがなければ、サーバーはページをブラウザに送信しません。ポップアップとこのサーバーの ログに、どこに何を貼り付けるかが表示されます。接続時には両方の側でキーを知っていることを証明します (HMAC 交換。キーがソケットを通過することはありません)。最初にサーバーが証明します。サーバーが動作して いない間にポート 3025 を取得したプログラムは、拡張機能から何も受け取れません。また、キーを持たずに サーバーに接続したプログラムは、ページを要求できません。0.6.0 以降、Firefox では追加設定は不要です (0.5.3 では、PAGE2AI_BRIDGE_ORIGINSにインストール時の UUID が必要でした)。ポップアップで New key を選ぶか、拡張機能を再インストールすると、新しいキーが生成されます。古いキーを新しいキーに 置き換えてください。MCP クライアントの設定やブラウザープロファイルを読める人はキーも読めます。ブリッジの 安全性は、ユーザーアカウントの安全性を超えるものではありません。
プロンプトの例
1. ドキュメントを取得して質問に回答する:
"page_to_markdown を使って https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking を取得し、拡張思考の主なユースケースを3つ要約してください。"
2. API リファレンスをコードスニペットに抽出する:
"page_to_markdown で https://ai.google.dev/gemini-api/docs/thinking を取得し、thinking budget パラメーターを使った Python のコードサンプルを生成してください。"
3. 2つのドキュメントページを比較する:
"page_to_markdown で https://docs.anthropic.com/en/docs/prompt-engineering と https://platform.openai.com/docs/guides/prompt-engineering の両方を取得し、アプローチの違いを要約してください。"
呼び出しで返される内容
page_to_markdown(url="https://docs.anthropic.com/en/api/messages") の出力そのままです。
2026-10-18 に core 0.2.1 で取得し、一部省略しています。
---
title: "Messages"
source: "https://platform.claude.com/docs/en/api/messages"
captured_at: "2026-10-18T04:33:07.670Z"
language: "en"
description: "API reference for Messages endpoints"
canonical: "https://platform.claude.com/docs/en/api/messages"
og_title: "Messages - Claude API Reference"
extractor: "page2ai-core"
extractor_version: "0.2.1"
---
# Messages
A beta version of this API exists and may have additional functionality. [View the beta version](https://platform.claude.com/docs/en/api/http/beta/messages).
1. [API reference](https://platform.claude.com/docs/en/api/http)
##### [Create a Message](https://platform.claude.com/docs/en/api/http/messages/create)
POST /v1/messages
Send a structured list of input messages with text and/or image content, and the model will generate the next message in the conversation.
YAML フロントマター(タイトル、ソース、取得日時、ページのメタデータ、抽出元の情報)に
続いて、ページが Markdown として表示されます。見出し、表、フェンス付きコードは保持され、
ナビゲーション、ヘッダー、フッター、サイドバーは除外されます。インターフェースのボタンは
除外されます(core 0.2.1)。0.3.0 までは、このページに «Copy page»(アイコンのグリフ付き)と
«cURL» コードサンプル切り替えボタンもそれぞれ2回出力されていました。0.2.8 までは、この URL から
サイト独自の Markdown コピーが返されていました(extractor_source: "content-negotiation")。
0.3.0 以降、サーバーはページのみを読み取ります。
設定
セットアップは不要です。すべての引数に適切なデフォルト値が設定されています。page_to_markdown は次を受け付けます。
| 引数 | 型 | デフォルト | 効果 |
|---|---|---|---|
url | 文字列 | — | 変換する絶対 http(s) URL。プライベート範囲、ループバック、クラウドメタデータのエンドポイントはブロックされます(SSRF ガード)。html と併用する場合は取得されず、相対リンクの基準になります |
html | 文字列(≤ 10 MB) | — | 取得の代わりに変換するページの HTML。url または html が必要です |
include_images | ブール値 | true | 出力に  形式の画像参照を残します |
include_frontmatter | ブール値 | true | YAML フロントマターブロックを先頭に追加します |
timeout_ms | 整数 | 15000 | N ミリ秒後に取得を中止します(1000–60000) |
ホスト型エンドポイントが受け付けるのは url のみです(ChatGPT プラグインのレビューで確認された契約に基づきます)。
また、timeout_ms の上限は 20000 です。
ローカルサーバーの環境変数は、すべて省略可能です。
| 変数 | デフォルト | 効果 |
|---|---|---|
PAGE2AI_BRIDGE_KEY | — | Page2AI ポップアップに表示される Agent Bridge キー(複数可、カンマ区切り)。設定しない場合、ブリッジはブラウザーに接続しません |
PAGE2AI_BRIDGE_PORT | 3025 | 127.0.0.1 上の Agent Bridge のポート。拡張機能は 3025 にのみ接続するため、変更するのはテスト時にしてください。使用中の場合(別のインスタンスが実行中の場合)、サーバーはブリッジなしで起動します |
PAGE2AI_BRIDGE_ORIGINS | — | Page2AI の Web Store ID 以外にブリッジが受け入れる、展開済みまたは独自ビルドの Chrome の正確なオリジン(chrome-extension://<id>)。Firefox では不要です |
予定:profile 引数(auto | docs | marketing | research | dashboard | wordpress-marketing)。
プライバシー
@page2ai/mcp はデータを収集せず、テレメトリーを送信せず、明示的に指定した URL 以外への
外部ネットワーク呼び出しも行いません。ただし、AI クライアント(Claude、ChatGPT など)は、
抽出した Markdown をそのクライアントのプライバシーポリシーに基づいて、それぞれのモデルプロバイダーに
送信します。この部分はこのサーバーの管理外です。詳細は PRIVACY.md を参照してください。
Agent Bridge を有効にすると、拡張機能はブラウザーで表示される URL の Markdown を、サインイン済みの コンテンツも含めて、127.0.0.1 上の WebSocket 経由でこのサーバーに送信します。ほかの情報がマシンの外に 出ることはありませんが、その後 Markdown はほかの結果と同様に AI クライアントに送信されます。
ホスト型エンドポイントは性質が異なります。変換を依頼した URL は、作者が運用する サーバー(Vercel にデプロイ)から取得され、Vercel の標準的な運用ログに記録されます。アカウントも トラッキングもありません。この点が用途に合わない場合は、ローカルでサーバーを実行してください。 同じコードを使用します。
プロトコルの改訂
0.2.0以降、このサーバーは同じstdio接続上でMCPプロトコルの両方の改訂に対応します。
| 改訂 | クライアントによる接続の開始方法 | 対応 |
|---|---|---|
2026-07-28 | _metaにio.modelcontextprotocol/protocolVersionを含めたserver/discover | はい |
2025-11-25以前 | initializeハンドシェイク | はい |
serveStdioは開始メッセージからプロトコルの世代を判定し、接続中は1つのサーバーインスタンスを固定するため、古いSDKを使用するクライアントに影響はありません。バージョンの申告がないメッセージは、仕様上、2025年世代の開始メッセージとして扱われます。そのため、_metaフィールドのないserver/discoverにはアップグレードせず、-32601で応答します。
クライアントライブラリを使わず、生のJSON-RPCフレームでビルドを検証します。
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"}}}' | node dist/index.js
既知のセキュリティ勧告
ありません。v2 SDKへの移行により、推移的なパッケージが90個削減されました(本番環境の依存関係は117個から26個になりました)。これに伴い、モノリシックな@modelcontextprotocol/sdkを介して0.1.xに含まれていた@hono/node-serverのセキュリティ勧告も解消されました。このパッケージは、stdio専用サーバーでもHTTPおよびOAuthサーバースタックを取り込んでいました。0.2.0時点でnpm auditに問題はありません。
開発
git clone https://github.com/igorsaevets/page2ai-mcp
cd page2ai-mcp
npm install
npm run build
node dist/index.js # runs stdio MCP server
MCP Inspectorでテストします。
npx @modelcontextprotocol/inspector node dist/index.js
サポート
入力が最も手軽な方法ではなく、お持ちの内容に応じて連絡先を選んでください。
| お持ちの内容 | 連絡先 |
|---|---|
| バグ、ページの抽出に関する問題、機能のアイデア | GitHubのイシュー — 公開され検索可能なため、修正が次の人にも役立ちます |
| セキュリティの脆弱性 | 非公開の脆弱性報告。SECURITY.mdを参照してください。公開イシューは作成しないでください |
| 使用方法に関する質問 | まずドキュメント、その後イシューをご利用ください |
作者について
Igor Saevets(AIの専門家、Page2AIの創業者)が執筆・保守しています。詳しい略歴: igorsaevets.github.io/page2ai-docs/about/。
以下は本人確認およびコラボレーションのためのリンクであり、サポート窓口ではありません。DMで報告されたバグは、後からほかの人が見つけられないバグになります。修正を希望する内容は、上記の表から報告してください。
- LinkedIn: linkedin.com/in/igorsaevets
- Facebook: facebook.com/igorsaevets
- GitHub: github.com/igorsaevets
- ORCID: 0009-0006-8636-1377
ビルドの来歴
MCPサーバーは起動したプロセスの権限で実行されるため、tarballの入手元は形式上の問題ではなく、セキュリティ上の問題です。v0.1.2以降のリリースは、npm provenanceを使用してGitHub Actionsから公開されています。各バージョンには、生成元のコミットとワークフロー実行を示すSigstoreアテステーションが付与され、公開Rekor透明性台帳に記録されるとともに、npmjs.comにバッジとして表示されます。
信頼する前に確認してください。
npm audit signatures
npm view @page2ai/mcp --json | jq '.dist.attestations'
ライセンス
MIT — LICENSEを参照してください。Copyright © 2026 Igor Saevets.
関連項目
- Page2AI Chrome extension — https://github.com/igorsaevets/page2ai-extension(人間向けのブラウザー拡張機能。独自の抽出パイプラインを備えています)
- @page2ai/core — https://npmjs.com/package/@page2ai/core(このサーバーが実行する抽出ライブラリ)
- page2ai-mcp(スコープなし)— https://npmjs.com/package/page2ai-mcp(このパッケージを薄くラップしたもので、スコープの接頭辞なしで`npx -y page2ai-mcp`を実行できるよう公開されています)
- Software Heritage archive — SWHID
swh:1:snp:05123c51ef9e7c0aeb06f42b1263c07a8d26999a
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。