SiteMCP: 任意のサイトを丸ごとMCPサーバー化
https://ryoppippi.com を MCP サーバーとしてClaudeから参照している様子
ウェブサイトの内容をまるごとAIに参照させたい、そんな願いを叶えるツールがあります。
その名も sitemcp
です。
このツールを使うと、任意のサイトのページをfetchして、MCPサーバーとして立ち上げることができます。
MCP サーバーとは
MCPは「Model Context Protocol」の略で、AIアシスタントが外部データにアクセスするための仕組みです。要するに、AIに「このウェブサイト読んでね」とか「このファイル見てね」と渡せるようにするプロトコルです。
使い方
詳しいインストールの仕方は GitHub の README を見てください。
ここではClaude Desktopから使う方法を紹介します。
...と言ってもそんなに難しいことはありません。
例えば、DaisyUIについてClaudeに聞きたいときは、Claude Desktop の設定ファイルに
{
"mcpServers": {
"daisy-ui": {
"command": "npx",
"args": [
"-y",
"sitemcp@latest",
"https://daisyui.com",
"-m",
"/components/**"
]
}
}
}
と書いておきます。
あとは、Claude Desktopを再起動するだけです。
これにより、MCPサーバーや llms.txt
を提供していない任意のサイトでも、LLM から情報を取得できるようになります。
何が嬉しいか
トークン数を削減できる可能性がある
-> 実装方法を変更しました。現在はタイトルとURLの一覧を返すサーバーと、URLをキーとしてページの内容を返すサーバーの2段構えです。sitemcp
は各ページのURLをMCPのtool nameとして、ページのタイトルをdescriptionとして登録します。
LLM はこれらの情報を元に、ページの内容を取得することができます。
これは従来の llms.txt
を使った手法と比べて、トークン数が減る可能性があります。なぜなら、全体のページの内容を一気に渡す必要がなくなり、LLMが能動的に必要な分だけ情報を取得することができるからです。
LLMでの情報の少ないライブラリの使用を強化
例えば、shadcn/ui
などのUIライブラリはよく使われているので Claude でもよくおすすめされ、精度良くコンポーネントの生成が可能ですが、少しマイナーなものだと、情報が乏しくなります。
また、自分の経験では Svelte 5
のコードが欲しいのにもかかわらず、Svelte 4
のコードを生成されてしまったり、React
のコードを生成されたりしていました。
このような場合に、sitemcp
を使うことで、LLMの持ち合わせていない最新の情報を踏まえた回答を得ることができます。
最新のSvelte5を使ったコードを生成して欲しいときは、Claude DesktopやCursor、Codecompanionの設定ファイルに
{
"mcpServers": {
"svelte": {
"command": "npx",
"args": [
"-y",
"sitemcp@latest",
"https://svelte.dev",
"-m",
"/docs/**"
]
}
}
}
と記述するだけです!なんて簡単なんでしょう。
使用しているライブラリのドキュメントがMCPサーバーを提供しているか、llms.txt
を提供しているか、そんなものはもはや関係ありません。
自分の好きなライブラリをMCPサーバー化して、LLMに情報を取得させることができます。
自分のサイトをMCPサーバー化
自分のサイトをMCPサーバー化することで、AIに自分のサイトを参照させることができます。
履歴書を作成したり、自分の文体を真似たブログを書かせたりすることができます。
妄想が広がりますね。
終わりに
-
sitemcp
は、任意のサイトをMCPサーバー化するためのツールです。 - MCPサーバーを使うことで、AIに特定のサイトを参照させることができます。
- LLM に情報を効率的に提供する手段として、MCP、そして
sitemcp
を活用してみてください!
追記
0.2.0に更新しました!
インターフェースに変更はないですが、実装方法が大きく変わりました。
- ひとつのドキュメントにつき立ち上がるサーバーを2つに減らしました(前の実装ではページの数だけサーバーが立ち上がっていた)
- ドキュメントが長すぎるとclaudeがアクセスに失敗するので、paginationを入れました
これに伴いよりAgentっぽくなりました!ぜひお試しください!
また、自分のOSS史上一番と言っていいほどStarをもらっています。
24時間で100以上のStarをもらうのは初めてです!
ありがとうございます!
(もちろんXでも多くの方に拡散していただきました。正直2時間で作ったものなのでここまで話題にしていただけるとは思ってませんでした。とてもうれしいです。)
Discussion
sitemcpありがとうございます。
macのClaude Desktopで利用させていただきましたが、Claude Desktopのログファイルに
以下の様なログが出力されており、
Caludeに聞いたところ下記のような原因があるかもしれないと言われました。
そのせいか、Claude Desktopでの検索時に、
tools.1.ToolDefinition.name: String should have at most 64 character
のエラーが表示されてしまい、どうもClaude Desktopの利用ができない状態になってしまいました。↓自分のclaude_desktop_config.json の内容です。
ありがとうございます! GitHub Issueに英語で起票いただけますか?そちらで議論を進めましょう。
ありがとうございます🙇♂️
issue起票させていただきました。
ありがとうございます!確認しますね!
めちゃくちゃ詳しく再現手順書いていただいてるじゃないですか!感謝です
議論済みですが、こちらの読者の方への告知として
v0.3.0で手元ではこの問題は修正済みです