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.jsonGEMINI.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と一緒なら、それが可能です。