現在お買い物カゴには何も入っていません。
Gemini-JSCAD-Tool: GeminiとチャットしながらCAD開発する新しい体験
概要
gemini-jscad-tool は、Gemini CLI の拡張として開発されたツールで、JSCADを用いた3Dモデル生成を対話的に実現します。Geminiとチャットしながら、3Dモデルを作成し、リアルタイムにプレビュー&STLファイルに変換できます。
特徴
- 🔄 Geminiと自然言語でやり取りしながら設計できる
- 🧊 JSCADモデルを作成し、STLへ変換
- 🌐 ローカルのライブプレビューサーバーで即座にSTLの形状を確認可能
- ⚙️ Gemini向け拡張機能の実装例としても活用可能
インストール方法
npm install -g gemini-jscad-tool
インストール後、自動的に以下が行われます:
gemini-jscad-server
コマンドがグローバルに配置されるgemini-extension.json
とGEMINI.md
が~/.gemini/extensions/jscad/
にコピーされる
使用方法
以下のように、Geminiとの会話ベースで操作を進めます。
1. プレビューサーバーを起動
あなた: Start the preview server.
→ http://localhost:3000
にアクセスしてプレビュー。
2. モデルを作成
あなた: Create a 20mm cube.
Geminiが自動的に .jscad
ファイルを生成しSTLに変換後、プレビューサーバーに反映。
3. サーバーを停止
あなた: Stop the preview server.
不要なプロセスの残留を防ぎます。
STL変換について
生成されたJSCADモデルは、ツール内部の処理を通じて STL形式に変換され、3Dプリント等にそのまま利用可能です。
Gemini CLI拡張機能の開発に関して
当パッケージは、Gemini CLI Extension 開発ガイドに則って作成されています。
gemini-extension.json の基本構造とMCPサーバー登録
拡張子 .json
のこのファイルは、拡張(extension)ごとに最低1つ必要です。
MCPサーバーの設定例は以下のようになります。
因みにgemini-jscad-toolにはMCPサーバーは使用していません。後述の GEMINI.md
で呼び出しを定義しています。
マニュアルからの引用:
{
"name": "my-extension",
"version": "1.0.0",
"mcpServers": {
"my-server": {
"command": "node my-server.js"
}
},
"contextFileName": "GEMINI.md",
"excludeTools": ["run_shell_command"]
}
各項目の説明
項目 | 必須 | 内容・役割 |
---|---|---|
name | ◯ | 拡張ディレクトリ名と同じにします。拡張の一意名識別子です。 |
version | ◯ | 拡張のバージョン。任意の文字列(例 "1.0.0" )。省略不可。 |
mcpServers | △ | この拡張が使うMCPサーバーの "名前: 設定" マップ。各サーバーは必ずcommand プロパティが必要です。 |
contextFileName | ✕ | 拡張についてAIへ与える文書ファイル名(通常はGEMINI.md)。省略可能。 |
excludeTools | ✕ | Geminiに読み込ませたくないツール名列挙。(例 ["run_shell_command"] /["run_shell_command(rm -rf)"] )省略可能。 |
mcpServers の詳細
MCP(Model Context Protocol) に準拠したサーバーの登録ができます。
これにより、Geminiはサーバーを正しく起動・停止し、会話の中で状態管理することができます。
mcpServers はオブジェクト形式で記述し、
「サーバー識別名: 設定」 の形式でサーバーを複数登録できます。
最小構成例:
"mcpServers": {
"my-server": {
"command": "node my-server.js"
}
}
my-server
:好きな識別名(ユニーク推奨)。command
:起動方法。実行ファイルやNodeスクリプト等を記述。
コマンドにオプションや環境変数を指定したい場合
因みに、 settings.json
にもMCPサーバーを登録できます。
非推奨パッケージになった @modelcontextprotocol/server-github
の 設定例が書かれた記事も参照してください。
マニュアルからの引用:
"mcpServers": {
"myPythonServer": {
"command": "python",
"args": ["mcp_server.py", "--port", "8080"],
"cwd": "./mcp_tools/python",
"timeout": 5000
},
"myNodeServer": {
"command": "node",
"args": ["mcp_server.js"],
"cwd": "./mcp_tools/node"
},
"myDockerServer": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "API_KEY", "ghcr.io/foo/bar"],
"env": {
"API_KEY": "$MY_API_TOKEN"
}
}
}
args
→ コマンドライン引数env
→ サーバープロセスの環境変数cwd
→ サーバを起動する作業ディレクトリtimeout
→ このMCPサーバーへのリクエストのタイムアウトをミリ秒単位で行います
contextFileName について
gemini-extension.json
の説明に戻ります。
この拡張のガイドやAI連携ガイダンスを含むMarkdownファイル名です。
省略時は拡張ディレクトリ内の GEMINI.md
が自動検出されます。
excludeTools について
Gemini CLIが利用可能なツールで、本拡張では“除外”したいものを配列で指定します。
例:
- すべてのシェルコマンド実行を除外
"excludeTools": ["run_shell_command"]
- 特定の危険コマンドのみ除外
"excludeTools": ["run_shell_command(rm -rf)"]
設定の優先順位と適用範囲
- 個人設定(
~/.gemini/extensions/
)よりワークスペース直下(/.gemini/extensions/
)の拡張が優先されます。 - MCPサーバー設定は
settings.json
の内容が同名の場合はそちらが上書きします。
よくある誤り
- mcpServersは必ずマッピング形式(オブジェクト)で書く。[マニュアル例と食い違う原因の多く]
- サーバーごとに必ず
command
プロパティが必要
GEMINI.md の役割
GEMINI.md
には、Geminiが拡張機能と対話する際のワークフローやコマンド定義がMarkdown形式で記述されています。例として下記のように構成します:
# jscad Extension
## Commands
### Start Server
User: Start the preview server.
Gemini runs: gemini-jscad-server
### Create Model
User: Create a 20mm cube.
Gemini writes: cube({size: 20})
### Stop Server
User: Stop the preview server.
Gemini stops: jscad_preview
これにより、Geminiは自動的に動作フローを把握し、ユーザーの自然言語要求をコード生成やファイル操作にマッピングします。
コード・リソース
おわりに
gemini-jscad-tool は、AIとの自然な対話で3D設計と即時プレビューの連携を実現した次世代のCLI拡張です。Gemini CLI拡張の実践例としても最適なので、カスタム開発の参考にもご活用ください。
3D設計をもっと気軽に、もっと賢く―
Geminiと一緒なら、それが可能です。