Sitemcp について
SiteMCPは、ウェブサイトのページを取得してMCPクライアントに提供する、アーカイブ済みのコマンドラインツールです。ページの絞り込み、コンテンツ長の上限、本文抽出用セレクターを設定できます。
主な機能
- 01ウェブページの取得
- 02パスによるページ指定
- 03コンテンツ長の上限設定
- 04本文用CSSセレクターの指定
- 05取得ページのキャッシュ
活用シーン
- 01サイトのドキュメントをMCPクライアントに提供
- 02指定したパス配下のページだけを取得
- 03長文コンテンツの取得上限を調整
MCP 対応
取得したウェブサイトのコンテンツをMCPサーバーとしてクライアントに公開します。プロジェクトはアーカイブ済みで、READMEではドキュメントの静的な取得を推奨しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SiteMCP
警告
このリポジトリはアーカイブされています。 このプロジェクトを使用する前に、以下のお知らせをお読みください。
アーカイブに関するお知らせ
SiteMCP は 2025 年 4 月 8 日に、Model Context Protocol の黎明期に作成されました(当時のツイート、紹介記事、日本語)。当時、MCP は登場したばかりの概念で、MCP サーバーを介してドキュメントを AI アシスタントに渡すことが、実用的な選択肢のほぼ唯一のものでした。Claude Code は従量課金プランでのみ利用でき、まだ広く普及していませんでした。また、スキルのような機能もまだ存在していませんでした。(そのため、このリポジトリのデモはすべて Claude Code Desktop で記録されています。)
当時、コーディングエージェントの能力は今より大幅に低く、LLM ネイティブのウェブ検索はせいぜい信頼性に欠けるものでした。そのため、ウェブサイト全体を取得して MCP 経由で提供することには、実際に有用性がありました。SiteMCP は、ローカルの AI アシスタントにドキュメントを提供する、最も初期かつ実用的な方法の一つだったと言えるでしょう。
その後、状況は大きく変わりました。MCP 自体は急速な成長期を経て調整期に入り、コミュニティでは静的なドキュメントに対する、よりシンプルで効率的な代替手段として、ドキュメントをダウンロード可能な Markdown ファイルとして公開する、npm パッケージで配布する、最後の手段としてウェブ検索を利用する、といった方法が定着しました。私の見解では、静的なドキュメントの提供に MCP を使うことはアンチパターンになりました。オーバーヘッドに見合う価値がないためです。このことについて、ブログで詳しく書いています。
初回リリースから 1 年が経ち、SiteMCP をアーカイブすることにしました。AI アシスタントにドキュメントを提供する必要がある場合は、上記のブログ記事で紹介した方法に従い、可能な限り静的な方法でドキュメントを取得してください。
サイト全体を取得し、MCP サーバーとして使用します
https://github.com/user-attachments/assets/ebe2d7c6-4ddc-4a37-8e1e-d80fac49d8ae
日本語のデモ
https://github.com/user-attachments/assets/24288140-be2a-416c-9e7c-c49be056a373メモ
インストール
一時的に使用する場合は、以下から1つ選んでください。
bunx sitemcp
npx sitemcp
pnpx sitemcp
グローバルにインストールする場合は、以下から1つ選んでください。
bun i -g sitemcp
npm i -g sitemcp
pnpm i -g sitemcp
使用方法
sitemcp https://daisyui.com
# or better concurrency
sitemcp https://daisyui.com --concurrency 10
ツール名の戦略
-t, --tool-name-strategyを使ってツール名の戦略を指定します。これはMCP サーバー名として使用されます(デフォルト:domain)。
これはMCP サーバー名として使用されます。
sitemcp https://vite.dev -t domain # indexOfVite / getDocumentOfVite
sitemcp https://react-tweet.vercel.app/ -t subdomain # indexOfReactTweet / getDocumentOfReactTweet
sitemcp https://ryoppippi.github.io/vite-plugin-favicons/ -t pathname # indexOfVitePluginFavicons / getDocumentOfVitePluginFavicons
コンテンツの最大長
-l, --max-lengthを使ってコンテンツの最大長を指定します。デフォルトは2000文字です。
これは、ブログやドキュメントなど、コンテンツが長いサイトで役立ちます。
許容されるコンテンツの長さは使用するMCPクライアントによって異なるため、詳細についてはMCPクライアントのドキュメントを確認してください。
ご不明な点があれば、ぜひイシューを作成してください。
sitemcp https://vite.dev -l 10000
特定のページに一致させる
-m, --matchフラグを使って、取得するページを指定します。
sitemcp https://vite.dev -m "/blog/**" -m "/guide/**"
マッチパターンは対象ページのパス名に対してテストされます。micromatchを利用しており、サポートされているすべてのマッチング機能を確認できます。
コンテンツセレクター
ウェブページから読みやすいコンテンツを抽出するためにmozilla/readabilityを使用していますが、一部のページでは無関係なコンテンツが返されることがあります。その場合は、読みやすいコンテンツの場所を指定するCSSセレクターを設定できます。
sitemcp https://vite.dev --content-selector ".content"
MCPクライアントでの設定方法
MCPクライアント(例:Claude Desktop)からサーバーを実行できます。
以下はClaude Desktop用の設定例です。
{
"mcpServers": {
"daisy-ui": {
"command": "npx",
"args": [
"-y",
"sitemcp",
"https://daisyui.com",
"-m",
"/components/**"
]
}
}
}
ヒント
- ページ数の多いサイトもあります。MCPクライアントにサーバーを登録する前に、
sitemcpを実行しておくと便利です。sitemcpはデフォルトでページを~/.cache/sitemcpにキャッシュします。--no-cacheフラグでキャッシュを無効にできます。
ライセンス
MIT。
スポンサー
統計
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。