DXT (Desktop Extensions) は、MCPサーバーをClaude Desktopに簡単にインストールできるパッケージ形式です。
- MCPサーバーと依存関係を1つの
.dxt
ファイルにパッケージ化 - Claude Desktopでワンクリックインストール可能
- 非技術者でも簡単に強力なローカルツールを利用可能
mkdir my-extension
cd my-extension
mkdir server
ディレクトリ構造:
my-extension/
├── manifest.json
├── package.json
└── server/
└── index.js
{
"dxt_version": "0.1",
"name": "my-extension",
"version": "1.0.0",
"description": "最小限のMCPサーバー",
"author": "Your Name",
"server": {
"type": "node",
"entry_point": "server/index.js"
},
"tools": {
"hello": {
"description": "挨拶を返す"
}
}
}
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "my-extension",
version: "1.0.0",
});
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "hello") {
return {
content: [{ type: "text", text: "こんにちは!" }]
};
}
});
const transport = new StdioServerTransport();
await server.connect(transport);
{
"name": "my-extension",
"version": "1.0.0",
"type": "module",
"dependencies": {
"@modelcontextprotocol/sdk": "^0.6.0"
}
}
npm install
# @anthropic-ai/dxt CLIをインストール(初回のみ)
npm install -g @anthropic-ai/dxt
# パッケージ化
dxt pack .
これで my-extension.dxt
ファイルが生成されます。
- Claude Desktopを開く
- 生成された
.dxt
ファイルをドラッグ&ドロップ - 「Install」をクリック
- 基本的なNode.js実装
- シンプルな時刻取得ツール
- ブラウザ自動化(macOS)
- URL操作、タブ管理、JavaScript実行
- ファイルシステム操作
- Python実装の例
manifest.json:
{
"user_config": {
"api_key": {
"type": "string",
"description": "APIキー",
"sensitive": true
},
"verbose": {
"type": "boolean",
"description": "詳細ログ出力",
"default": false
}
}
}
server.setRequestHandler("tools/call", async (request) => {
switch (request.params.name) {
case "hello":
return { content: [{ type: "text", text: "こんにちは!" }] };
case "time":
return { content: [{ type: "text", text: new Date().toISOString() }] };
default:
throw new Error(`Unknown tool: ${request.params.name}`);
}
});
- 実装例はテンプレートとして使用し、本番環境では適切なセキュリティ対策を実施すること
- エラーハンドリングを適切に実装すること
- ファイルアクセスなどは適切に制限すること