• #MCP
  • #Claude Desktop
  • #Desktop Extensions
  • #AI
  • #Anthropic

この機能はClaude Desktop専用です。 Desktop Extensionsは、Claude Desktopアプリケーション向けに設計されたMCPサーバーのパッケージング・インストール形式であり、Claude Code(CLI)では使用できません。

機能Claude DesktopClaude Code (CLI)
.mcpbファイルのインストール対応非対応
ワンクリックインストール対応非対応
自動UI生成(user_config)対応非対応
OSキーチェーン統合対応非対応
自動更新対応非対応
MCPサーバー利用対応対応(手動設定)

Claude Codeユーザーの場合: MCPサーバーは引き続き手動で設定する必要があります。~/.claude/settings.jsonclaude_desktop_config.jsonを編集してMCPサーバーを追加してください。ただし、Desktop Extensions形式で配布されているMCPサーバーのソースコードを参照し、同等の設定を手動で行うことは可能です。

Desktop Extensions: Claude Desktop向けMCPサーバーのワンクリックインストール

概要

Anthropicは昨年のModel Context Protocol(MCP)リリース後、開発者が強力なローカルサーバーを構築したものの、インストールの複雑さに関する継続的なフィードバックを受けました。本記事ではDesktop Extensionsという新しいパッケージング形式を紹介します。この形式により「MCPサーバーのインストールをボタンをクリックするだけの簡単さにする」という目標が実現されました。

従来のインストール方法の問題点

既存のMCPサーバー導入には複数の障害がありました:

  • 開発者ツールの必須化:Node.js、Python等のランタイムの事前インストールが必要
  • 手動設定作業:JSON設定ファイルの編集が必要
  • 依存関係の管理:パッケージ競合やバージョン不一致の解決が必須
  • 発見機構の欠如:GitHubでのサーバー検索が必要
  • 更新の複雑性:サーバー維持管理のための手動再インストール

これらの障壁により「MCPサーバーの強力な機能にもかかわらず、大多数の非技術ユーザーにはアクセス不可能な状態」が続いていました。

従来のインストール手順の例

# まずNode.jsをインストール
npm install -g @example/mcp-server
# ~/.claude/claude_desktop_config.jsonを手動編集
# Claude Desktopを再起動
# 動作確認...うまくいくことを祈る

Desktop Extensionによる解決策

新しいフォーマット(.mcpbファイル)により、「MCPサーバー全体—すべての依存関係を含む—を単一のインストール可能なパッケージに統合」することが可能になりました。

ユーザー体験の変化

従来

  1. Node.jsをインストール
  2. JSONを手動編集
  3. Claude Desktopを再起動
  4. 動作確認(不確実)

現在

  1. .mcpbファイルをダウンロード
  2. Claude Desktopで開く
  3. インストールボタンをクリック

アーキテクチャ

Desktop Extensionは、MCPサーバーとmanifest.jsonを含むZIPアーカイブです。

ディレクトリ構造

extension.mcpb/
├── manifest.json (必須)
├── server/ (実装ファイル)
├── node_modules/ または lib/ (バンドルされた依存関係)
└── icon.png (オプション)

基本的なmanifest.json

最小構成のmanifest.jsonには以下のフィールドが必要です:

{
  "mcpb_version": "0.1",
  "name": "my-extension",
  "version": "1.0.0",
  "description": "シンプルなMCP拡張機能",
  "author": {
    "name": "Extension Author"
  },
  "server": {
    "type": "node",
    "entry_point": "server/index.js",
    "mcp_config": {
      "command": "node",
      "args": ["${__dirname}/server/index.js"]
    }
  }
}

user_config付きmanifest.json

ユーザー入力(APIキーなど)が必要な場合:

{
  "mcpb_version": "0.1",
  "name": "my-extension",
  "version": "1.0.0",
  "description": "シンプルなMCP拡張機能",
  "author": {
    "name": "Extension Author"
  },
  "server": {
    "type": "node",
    "entry_point": "server/index.js",
    "mcp_config": {
      "command": "node",
      "args": ["${__dirname}/server/index.js"],
      "env": {
        "API_KEY": "${user_config.api_key}"
      }
    }
  },
  "user_config": {
    "api_key": {
      "type": "string",
      "title": "APIキー",
      "description": "認証用のAPIキー",
      "sensitive": true,
      "required": true
    }
  }
}

完全なmanifest.json(すべてのオプション項目を含む)

{
  "mcpb_version": "0.1",
  "name": "My MCP Extension",
  "display_name": "My Awesome MCP Extension",
  "version": "1.0.0",
  "description": "この拡張機能が何をするかの簡潔な説明",
  "long_description": "拡張機能の機能、ユースケース、特徴を説明する詳細な説明。複数段落をサポートし、基本的なMarkdownが使用可能。",
  "author": {
    "name": "Your Name",
    "email": "[email protected]",
    "url": "https://your-website.com"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/your-username/my-mcp-extension"
  },
  "homepage": "https://example.com/my-extension",
  "documentation": "https://docs.example.com/my-extension",
  "support": "https://github.com/your-username/my-extension/issues",
  "icon": "icon.png",
  "screenshots": [
    "assets/screenshots/screenshot1.png",
    "assets/screenshots/screenshot2.png"
  ],
  "server": {
    "type": "node",
    "entry_point": "server/index.js",
    "mcp_config": {
      "command": "node",
      "args": ["${__dirname}/server/index.js"],
      "env": {
        "ALLOWED_DIRECTORIES": "${user_config.allowed_directories}"
      }
    }
  },
  "tools": [
    {
      "name": "search_files",
      "description": "ディレクトリ内のファイルを検索"
    }
  ],
  "prompts": [
    {
      "name": "poetry",
      "description": "LLMに詩を書かせる",
      "arguments": ["topic"],
      "text": "以下のトピックについて創造的な詩を書いてください: ${arguments.topic}"
    }
  ],
  "tools_generated": true,
  "keywords": ["api", "automation", "productivity"],
  "license": "MIT",
  "compatibility": {
    "claude_desktop": ">=1.0.0",
    "platforms": ["darwin", "win32", "linux"],
    "runtimes": {
      "node": ">=16.0.0"
    }
  },
  "user_config": {
    "allowed_directories": {
      "type": "directory",
      "title": "許可するディレクトリ",
      "description": "サーバーがアクセスできるディレクトリ",
      "multiple": true,
      "required": true,
      "default": ["${HOME}/Desktop"]
    },
    "api_key": {
      "type": "string",
      "title": "APIキー",
      "description": "認証用のAPIキー",
      "sensitive": true,
      "required": false
    },
    "max_file_size": {
      "type": "number",
      "title": "最大ファイルサイズ(MB)",
      "description": "処理する最大ファイルサイズ",
      "default": 10,
      "min": 1,
      "max": 100
    }
  }
}

クロスプラットフォーム対応

WindowsとmacOSで異なる設定が必要な場合:

"server": {
  "type": "node",
  "entry_point": "server/index.js",
  "mcp_config": {
    "command": "node",
    "args": ["${__dirname}/server/index.js"],
    "platforms": {
      "win32": {
        "command": "node.exe",
        "env": {
          "TEMP_DIR": "${TEMP}"
        }
      },
      "darwin": {
        "env": {
          "TEMP_DIR": "${TMPDIR}"
        }
      }
    }
  }
}

開発者向け実装手順

ステップ1:初期化

npx @anthropic-ai/mcpb init

または、グローバルインストールして使用:

npm install -g @anthropic-ai/mcpb
mcpb init

ステップ2:ユーザー入力の設定

user_configセクションで必要なフィールドを宣言します。Claude Desktopが自動的にUI生成、バリデーション、キーチェーンへの安全な保存を処理します。

ステップ3:パッケージング

npx @anthropic-ai/mcpb pack

または:

mcpb pack

ステップ4:テスト

生成された.mcpbファイルをClaude Desktopの設定ウィンドウにドラッグ&ドロップします。権限のプレビューとインストールボタンが表示されます。

ランタイム機能

組み込みNode.js

Claude DesktopにNode.jsがシップされており、外部依存が排除されています。ユーザーは事前にNode.jsをインストールする必要がありません。

自動更新

新しいバージョンが利用可能になると、自動的に更新されます。

テンプレートリテラル

ランタイム時に以下の変数が置換されます:

  • ${__dirname}:拡張機能のインストールディレクトリ
  • ${user_config.key}:ユーザーが提供した値
  • ${HOME}:ユーザーのホームディレクトリ
  • ${TEMP}:一時ディレクトリ

ツールとプロンプトの宣言

拡張機能が提供するツールとプロンプトを宣言できます:

"tools": [
  {
    "name": "read_file",
    "description": "ファイルの内容を読み取る"
  }
],
"prompts": [
  {
    "name": "code_review",
    "description": "ベストプラクティスに基づいてコードをレビュー",
    "arguments": ["file_path"]
  }
]

セキュリティ機能

一般ユーザー向け

  • OSキーチェーンでの保存:APIキー等の機密データがOSのキーチェーンに安全に保管される
  • 自動更新:セキュリティパッチが自動的に適用される
  • インストール監査:インストール済み拡張機能の監査が可能

エンタープライズ向け

Anthropicは企業向けのセキュリティと管理機能を実装しています:

  • Group Policy/MDM対応:WindowsとmacOSでの一括管理
  • 事前インストール:承認済み拡張機能を事前にデプロイ
  • ブロックリスト:特定の拡張機能またはパブリッシャーをブロック
  • ディレクトリ無効化:拡張機能ディレクトリ全体を無効化可能
  • プライベートディレクトリ:組織専用の拡張機能ディレクトリをデプロイ

オープンエコシステム

Anthropicは「MCPサーバー周辺のオープンエコシステムに対するコミットメント」を表明し、複数アプリケーション間での普遍的な採用を目指しています。

以下がオープンソースとして公開されています:

  • 完全なMCPB仕様
  • ツールチェーン
  • 参照実装
  • TypeScriptスキーマ

これにより:

  • 開発者:一度パッケージ化すれば、MCPB対応の任意の環境で実行可能
  • アプリケーション開発者:ゼロからビルドせずに拡張機能対応を追加可能
  • ユーザー:MCP対応の全アプリケーション間で一貫した体験

拡張機能の提出

拡張機能をAnthropicのキュレーションされたディレクトリに提出できます:

  1. WindowsとmacOSの両方でテストを完了
  2. 提出ガイドラインに従う
  3. セキュリティレビューを通過

まとめ

Desktop Extensionsは「ローカルAIツールの操作方法における根本的な転換」を表現しています。インストールの障壁を排除することで、「強力なMCPサーバーを開発者だけでなく、すべてのユーザーにアクセス可能」にしています。

Anthropicは社内でも試験的なMCPサーバーの共有に拡張機能を活用しており、GameBoyエミュレータへの接続なども実現しています。「開発者の創意工夫から生まれた数千のMCPサーバーは、今や数百万のユーザーにワンクリックで届けられる」ようになりました。


元記事: Desktop Extensions: One-click MCP server installation for Claude Desktop - Anthropic Engineering Blog