カテゴリー: AI agent

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