🤖

Claude CodeにDXTファイル(Desktop Extensions)を作らせてみた話

に公開

はじめに

6月27日に社内の非エンジニアに向けてMCP(Model Context Protocol)連携のワークショップを開催したのですが、想定以上にエラー続き・・・!自分の端末上では動くのに、参加者の端末では誰一人動かない。その日は諦めて、後日にと解散をしました。
そして、その6月27日にAnthropic社が発表したのがDesktop Extensionsです。
https://www.anthropic.com/engineering/desktop-extensions

これのすごいところはMCPサーバーをローカルに立てるための環境準備が不要で、Claude Desktop上でMCPサーバーが動くところです。
あと、1日早ければ・・・と悔やみながら、「これならClaude Codeに任せるだけでDXTファイルを作れるのでは?」と考え、早速やらせてみた記録と、そこから得られた知見をまとめました。

DXTファイルとは何か

DXTファイル(Desktop Extensions)は、MCPサーバーを一つのパッケージファイルとして配布するための新しい形式です。ZIP形式のアーカイブファイルであり、manifest.json、サーバーコード、依存関係、リソースファイルなど、MCPサーバーの動作に必要なすべてを含んでいます。
この形式の最大の特徴は、ワンクリックでのインストールを実現することです。従来のように複雑なターミナル操作やJSON設定ファイルの手動編集は不要で、Claude Desktopにドラッグ&ドロップするだけでMCPサーバーをインストールできます。これにより、技術的な知識を持たないユーザーでも、Chromeの拡張機能のような感覚でClaudeに新しい機能を追加することが可能になりました。

※ 上記の文章だけ生成AIで書いてます

アプローチ

Claude Codeを使ってDXTファイルを作成してもらいました。
ただ、Claude Codeは最新の情報に関しては疎いので(というか、さすがに当日に発表されたものまでは知らないのは仕方ないですね)、公式のドキュメントを参照してもらいながら実行してもらう必要があります。
そこで、不足情報はGemini CLIで検索させ、Claude Codeに与えることで補いました。(参考:【CLAUDE.mdに貼るだけ】Claude Code x Gemini CLI x 人間による、三位一体開発術
今だとContext7を利用するのでも大丈夫だと思います。先ほど調べたところ、ちゃんと情報が返ってきましたので。

ちなみにDXTファイル化したMCPサーバーは、Node.js/TypeScriptで構築され、APIキー設定が必要な典型的なMCPサーバーです。
Pythonで動くMCPサーバーなどは今のところ試してません。

遭遇した主要な問題点

対話型入力の制約問題

最初に直面したのはdxt initの対話型入力問題でした。Claude Code環境では対話型プロンプトが表示されず、プロセスが停止して先に進めない状況が発生してました。残念ですが、この問題によりレールに乗ったmanifest.json生成に頼ることができないようです。
もっと簡単にできると思ったのに。。。
dxt initを諦めて、manifest.jsonの手動作成に集中し、package.jsonから必要な情報を転記・調整する手順をAIに確立してもらいました。

Claude Codeによるエラー解析と自己修正

dxt packでなんとかDXTファイルを作成できても、Claude Desktopにインストールするとエラーが発生していました。
そのたびに、エラーメッセージをClaude Codeにフィードバックし、修正させる、というサイクルを繰り返しました。人間がやったのは、このエラーメッセージを伝えることだけです。5回も繰り返さないうちに正しく動くDXTファイルが作成できました。

以下がClaude Codeが解析・修正したエラーの例です。
何を対応したのかCloud Codeに書き出してもらいました。対応当時は自分はちゃんと見てないので、こんなことしてたのかって気持ちです。

  1. manifest.jsonの形式エラー

    Error: Invalid manifest format. Failed to parse JSON.
    

    カンマの不足や括弧の不整合が原因でした。

  2. entry_pointのパスエラー

    Error: entry_point "dist/index.js" not found
    

    npm run buildを忘れていたか、パスが間違っていました。

  3. APIキー設定のバリデーションエラー

    Configuration validation failed: notion_api_key does not match required pattern
    

    user_configのvalidationパターンが厳しすぎる設定になっていました。

思いついてやったこと

「この失敗を活かせれば、他のMCPでも簡単にDXTファイルを作成できるのでは?」
と思いついてしまいました。

具体的には、AIへの指示ファイル(CLAUDE.md)を作成し、そこに前回の失敗内容と望ましい挙動を記録しました。これを参照させることで、AIが同じ間違いを繰り返さないようにする、いわば 「AI向けのトラブルシューティング集」 です。

このCLAUDE.mdを更新しながら試行錯誤を重ね、最終的に下記のプロンプトでDXTファイルを安定して生成できるようになったので、その内容をGistで共有します。(今後もバージョンアップするかもです)

ルールに従ってdxtファイルを生成してください。
知らないことは外部AIに相談をして公式サイト(https://github.com/anthropics/dxt)を確認してください。
代替案に逃げるべきではなく、外部AIと何度でも相談して解決を目指してください。
全力で取り組めばできるはずです!
前回の失敗はCLAUDE.mdに書いておきましたので、参考にしてもいいかもです。
dxtファイルの生成ができたら、作業は完了です!

https://gist.github.com/knktkc/04016c3c48fb811e14905f86098ff1f6

まとめ

将来的には大体のMCPもDXTファイルに標準対応するんじゃないかなと思ってます。
なので、こんな挑戦は今しかやれない(やらない)ことだと思いますので、ぜひ試してみてください!
ちなみに、今回作成したDXTファイルによって、非エンジニアのメンバーも簡単にNotionとMCPを連携できるようになりました!

GitHubで編集を提案
xtone tech blog

Discussion