🖱️

Claude Desktop Extensionsで、MCPサーバーを導入し易い環境へ

に公開

Claude Desktop Extensions

2025年6月26日に、以下の情報がAnthropicのサイトで公開されました。

https://www.anthropic.com/engineering/desktop-extensions

公式リポジトリ

記事公開時(2025年6月29日)で以下の通りでした。Star数について初回Commitが6月27日なので、1週間ほどでこの数字でした。

  • Contributors:5
  • Star:481

https://github.com/anthropics/dxt/tree/main

紹介記事

既に複数の記事で紹介されています。

https://zenn.dev/cadp/articles/6d9dd374fd3d32

https://note.com/npaka/n/nb206aa63ac7e

想定読者

この記事は、Claude DesktopでMCPサーバーを触ったことがある方向けに書いています。「まだ実際に作ったことはないけれど、どんなものか知りたい」という方も歓迎です。

実際に手を動かして試してみたい場合は、MCPサーバーでの開発経験があると理解が深まります。
Pythonで実装されたMCPサーバーを扱いますが、何らかのプログラミング言語に触れたことがあれば、言語の違いで困ることはないかと思います。

この機能が提供された理由

タイトルでもちらっと記載しましたが、
技術者以外のユーザーが、MCPサーバーを利用できる形を実現するためです。

最初に掲載したAnthropicのサイトで記載された内容に沿って少し記載します。

Introducing Desktop Extensions

拡張子dxtのファイルを用いた場合に、享受できる利点について記載されています。

Desktop Extensions (.dxt files) solve these problems by bundling an entire MCP server—including all dependencies—into a single installable package. Here's what changes for users:

ローカルMCPサーバーを単一の .dxt ファイルにパッケージ化し、ワンクリックでインストールできるようにしてくれます。

Addressing the MCP installation problem

続けて、現在のMCPインストールにおける問題点を記載しています。

image.png

5つの観点で記載されています。
簡単ではありますが、それぞれイメージしてみました。

Developer tools required(開発者ツールが必要)

プログラミング開発をしない場合、PythonやNode.jsがインストールされている状況は稀です。
SlackやTeamsなどのチャットツールよりかは少しステップが多めになる印象があります。

Manual configuration(手動設定)

JSONをコピーして、claude_desktop_config.jsonに追加してください。

この作業について、技術者にとっては日常的な作業なので、迷うことはないでしょう。
しかし技術者以外にとっては、JSON自体に馴染みがないはずです。
手順書を用意したとしても、何らかのトラブルが発生する可能性は十分あります。

No discovery mechanism(発見メカニズムの欠如)

JSONと同じですが、技術者以外にとっては、そもそもGithubとは?といったことも珍しくないでしょう。検索をするとなれば、より難しい作業です。

Dependency management(依存関係管理)・Update complexity(アップデートの複雑さ)

パッケージの競合やバージョンの不一致、そしてClaude Desktop自体のアップデートに伴う対応が必要なケースもあるでしょう。
申し訳ないですが、これらは技術者以外にはほぼ無理な作業です。

前述の3項目とは壁の高さが異なる印象です。


今のままでは技術者以外が利用を開始する上で難しい点が多いのも納得がいきます。
この現状を把握できたところで、
今回、Claude Desktop Extensions作成を体感してみました。

公開されたブログ(最初に掲載したAnthropicのサイト)は、Node.jsベースのツールで説明していましたが、私はPythonに慣れているため、examples/file-manager-pythonを用いて試しました。

Extension作成作業開始

ここからは具体的に作成作業を行います。

開発におけるゴールは、dxtファイルを作成することです。

ユーザー(技術者以外)がMCPサーバー利用のために実施する作業から確認される場合は、Claude Desktopへのインストールと動作確認 から確認いただく形でもOKです!

リポジトリも公開してます。

https://github.com/eno-conan/claude-desktop-extensions-intro

作成時の参照箇所

manifest.jsonを作成

JSONで記載されたMCPサーバーの定義書という言い方になるでしょうか。
以下コマンドを実行し、質問に回答すれば作成されます。

dxt init

以下のように色々聞かれます。
<details><summary>ターミナルの内容</summary>

image.png
</details>

私の回答とは異なりますが、回答後以下のようなmanifest.jsonが出来上がります。

https://github.com/anthropics/dxt/blob/main/examples/file-manager-python/manifest.json

MANIFEST.mdField DefinitionsにはRequired FieldsとOptional Fieldsが記載されており、以下がRequired Fieldsの一覧です。
(ここは特に日本語化せずそのまま引用しています)

  • dxt_version: Specification version this extension conforms to
  • name: Machine-readable name (used for CLI, APIs)
  • version: Semantic version (semver)
  • description: Brief description
  • author: Author information object with name (required), email (optional), and url (optional)
  • server: Server configuration object

記述内容の検証

以下のコマンドを実行してください。(余談:Terraformを思い出しました。)

dxt validate manifest.json

問題なければ、以下のメッセージが返ってきます。(validateはpack時も最初に実行されます)

Manifest is valid!

ファイルの移動

作業フォルダに、examples/file-manager-pythonの中身を移動します。

<details><summary>この段階の作業フォルダの状態【part1】</summary>

package(作業フォルダ)
├── server/
│   └── main.py
├── manifest.json
├── pyproject.toml
└── requirements.txt

</details>

pyproject.tomlの微修正

VsCodeで表示すると、以下メッセージが表示されました。
image.png
これが原因で動かないのは面倒なので、指示通り以下のように修正しました。

dependencies = [
    "mcp>=1.0.0",
    "trio>=0.22.0"
]

pyproject.tomlの[tool.dxt]に沿って、パッケージ化まで

pyproject.toml[tool.dxt]にあるコマンド3つでパッケージ化まで行います。

[tool.dxt]
bundle = "pip install \"mcp[all]\" --target server/lib --upgrade --force-reinstall"
test = "python server/main.py --debug"
pack = "npx @anthropic-ai/dxt pack"

bundle(ライブラリインストール)

server/libフォルダへのライブラリのインストールを実行します。
server/libは、.gitignore にある通り、git管理対象外です。

pip install \"mcp[all]\" --target server/lib --upgrade --force-reinstall

<details><summary>この段階の作業フォルダの状態【part2】</summary>

package(作業フォルダ)
├── server/
│   ├── lib/
│   └── main.py
├── .gitignore
├── manifest.json
├── README.md
└── requirements.txt

</details>

test(動作確認)

(今回試すという点では)必須作業ではないですが、せっかくなのでやってみます。
サーバーを起動して、想定通りの挙動か確認します。

python server/main.py --debug

方法は何通りかあるかもしれませんが、
MCP Inspectorを用いるのが早いので、別ターミナルで以下コマンドを実行します。
実行するとURLが表示されるので、クリックします。

npx @modelcontextprotocol/inspector

以下画像の内容で、Connectをクリックすれば接続できます。
image.png

Toolsで3つのツールが表示されていればOKです。
image.png

list_filesを実行してみました。
Tool Result: Success、と表示されているので、問題なく動いてそうです。
image.png

pack(dxtを作成)

パッケージ化します。

npx @anthropic-ai/dxt pack

pyproject.tomlと同じ階層に、拡張子がdxtのファイルが生成されます。

<details><summary>この段階の作業フォルダの状態【part3】</summary>

package(作業フォルダ)
├── server/
│   ├── lib/
│   └── main.py
├── .gitignore
├── manifest.json
├── package.dxt
├── pyproject.toml
└── requirements.txt

</details>

これで開発作業が終了しました。

Claude Desktopへのインストールと動作確認

技術者以外の方はここから作業します。

配布されたdxtファイルを、
以下画像の通り、エクスプローラーなどからこの場所にドラッグ&ドロップします。
image.png

問題なければ、「インストール」をクリックします。
これで利用するための準備は終わったので、早速使います。
image.png

チャットからツールを呼び出してみました。
ツールがきちんと機能しました。これで作成作業完了です。
image.png

まとめ

タイトルにも記載しましたが、
技術者以外がMCPサーバーを活用できれば効率化できる作業はたくさんありそうです。

ITリテラシーというよりは「AIリテラシー」が必要と思いますので、あちらこちらですぐに導入、という訳にはいかないですが、
より人を必要とする作業に専念するための一手段として利用する箇所が増えればいいなと、一技術者としては思います。

ありがとうございました。

https://www.soumu.go.jp/use_the_internet_wisely/special/generativeai/

https://sooon-web.com/media/knowledge/ai/ai-literacy-importance/

Discussion