💡

mcpdocでllms.txtをmcpから参照して効率的にドキュメントを読む

に公開

先日LangChainのブログでこういうのが公開されました。

https://blog.langchain.com/how-to-turn-claude-code-into-a-domain-specific-coding-agent/

LLMへ渡す情報として、CLAUDE.md + MCPが最も性能向上が期待できるという内容ですが、その中におもしろそうなモジュールがありました。

https://github.com/langchain-ai/mcpdoc

mcpdoc はagentがmcp toolを使って特定のサイトで公開されている llms.txt を取得し、ドキュメント検索に利用するためのmcpです。今までは llms-full.txt を手元にダンプして食わせてコンテキストが爆発して使いもんにならねえ!となりがちでしたが、このtoolを使えば llms.txt に羅列されているURLをtool経由で辿ってくれるのでllmsが使いにくい問題が解消しそうです。

ということで、使ってみました。

dotfiles cliで管理する

自分はclaude codeを含む設定ファイルをdotfilesで管理しているので、これに組み込みます。cliになっているので dotfiles mcpdoc add のようなコマンドで追加できるとうれしいです。

https://github.com/ushironoko/dotfiles

mcpdoc はymlやjsonで設定を記述できます。例えば以下のようなjsonを用意して、mcpServersの設定で引数に指定すればそのドメインを扱えるようになります。

[
  {
    "name": "Gunshi",
    "llms_txt": "https://gunshi.dev/llms.txt"
  },
  {
    "name": "Gistdex",
    "llms_txt": "https://gistdex.vercel.app/llms.txt"
  }
]

cliからは以下のようなコマンドでこのファイルを編集できるようにしました。

# add
dotfiles mcpdoc add "Gunshi" "https://gunshi.dev/llms.txt"

# remove
dotfiles mcpdoc remove "Gunshi"

# list
dotfiles mcpdoc list
# Configured Documentation Sources:
#
# 1. Gunshi
#  URL: https://gunshi.dev/llms.txt
#
# 2. Gistdex
#  URL: https://gistdex.vercel.app/llms.txt

mcpServersへの定義を追記します。

{
  "mcpServers": {
    "mcpdoc": {
      "command": "uvx",
      "args": [
        "--from",
        "mcpdoc",
        "mcpdoc",
        "--json",
        "${HOME}/.config/mcpdoc/mcpdoc-sources.json",
        "--transport",
        "stdio"
      ],
      "description": "Documentation server for llms.txt files"
    }
  }
}

起動して使ってみます。

gunshiのtype-safe essentialsについて検索してくれました。mcpdocは内部でmarkdownifyを使ってドキュメントリソースをmarkdownに変換してくれるので、構造化情報としてagentが扱えます。

思わぬ副作用ですが、この後gistdexの構造化ナレッジの構築ツールまで勝手に使ってキャッシュに書き込んでくれました、謎連携。gistdexは僕が作っているローカルでRAGを簡単に使うツールなんですが、相性が良いのかもしれません。

結論

llms.txt や llms-full.txt はそのままでは扱いづらく、どのようにエージェントへ渡せばよいのかプラクティスが定まっていませんでしたが、mcpdoc のtoolを経由することでエージェントが自律的に扱えるようになりました。dotfiles cliでの管理はオリジナルですが、便利なので興味のある方はどうぞ。

https://github.com/ushironoko/dotfiles/blob/main/src/commands/mcpdoc.ts

Discussion