AI と MCP

お使いの AI に、壊せない機械を。

言語モデルは、一見正しそうな Gコードを書きます。本当に正しいかどうかは、Studio が教えてくれます。組み込みの MCPサーバーを使えば、AIアシスタントが素材をセットし、Studio の CAM にプログラムを作成させ、ツインで実行して、何が起きたか(アラーム、衝突、切削抵抗、びびり、部品の形状)を読み取り、そのうえでプログラムを速くできます。

Studio 1.2に搭載 · MCPツール47個 · MCPリビジョン 2024-11-05~2026-07-28 · stdio とローカルHTTP

全体の仕組み

AIクライアントが TwinwrightStudio.exe --mcp を起動し、それがお使いのコンピューター上のツインホストに接続します。ツインホストは、会話をまたいでツインを保持します。既定で使われるのは練習用ツイン(サンドボックス)で、ウィンドウの機械が使われるのは、その機械の AIアクセスをオンにしたときだけです。シミュレーションはすべて、段取りの非表示のコピー上で、実時間より速く実行されます(ワークの現在の状態から、または要求があれば新しい素材から)。

AI を使う2つの方法

お使いの AIクライアントをそのまま使うことも、Studio の中でモデルと対話することもできます。どちらも、同じツインで同じツールを使います。

お使いの AIクライアント(MCP経由)

AI をオンにして、「接続」をクリック。

Studio は、変更内容を示したうえでクライアントの設定に項目を書き込むか、クライアント自身のインストールリンクを開きます。その他の MCPクライアントには、貼り付けて使うコマンドまたはローカルアドレスを用意します。

  • Claude Desktop と ChatGPTデスクトップ版(Codexモードと Workモード):設定は Studio が書き込みます
  • Cursor、VS Code(GitHub Copilot)、LM Studio:各クライアントのワンクリックインストールリンクを開きます
  • Claude Code、Cherry Studio、Trae、Kimi Code など:コマンドまたは HTTPアドレスをコピーして使います
AI ▾ →「AIクライアントを接続」。下部の注記には、AI は実機にアクセスできないこと、ウィンドウの機械への変更にはあなたの許可が必要なことが書かれています。
AI ▾ →「AIクライアントを接続」。下部の注記には、AI は実機にアクセスできないこと、ウィンドウの機械への変更にはあなたの許可が必要なことが書かれています。
Studio内の AIアシスタント

お手持ちの APIキー、またはローカルモデルで。

AIパネルは、Anthropic、OpenAI、DeepSeek、Qwen(Bailian)、Kimi、Zhipu GLM、任意の OpenAI互換サービス、または LM Studio や Ollama で動かすご自身のコンピューター上のモデルと通信します。ウィンドウのプログラム、段取り、検査結果を添付でき、ツインの画像を会話の中に表示します。

  • キーは Windows DPAPI で暗号化され、選んだプロバイダーにだけ送信されます
  • ローカルモデルなら、何もコンピューターの外に出ません
  • 「AI用にコピー」と「AI から貼り付け」は、MCP なしで、どのチャットアプリでも使えます
result_imageの画像を表示した AIパネル(セルフテスト中の画面。セルフテストでは、スクリプトで動く代役のモデルがパネルを操作します)。
result_imageの画像を表示した AIパネル(セルフテスト中の画面。セルフテストでは、スクリプトで動く代役のモデルがパネルを操作します)。

AI にできること

47個の MCPツール。各ツールは、モデルが推論に使える短い要約と、スキーマ付きの構造化データを返します。また、どの結果にも、どの機械から得たものかが明記されます。

機械
machine_status状態、アラームとその意味、原点復帰の状態、位置、工具、素材/他の機械
machine_control原点復帰、ロック解除、リセット、フィードホールド、再開、停止、移動、電源、非常停止
machine_mdiMDI を1ブロックずつ送信、ブロックごとに応答、最初の拒否で停止
licence_statusエディション、その有効期限、含まれる機能
machine_libraryウィンドウの機械ライブラリ
段取り
setup_workpiece素材をバイス、クランプ、テープで取り付け、または取り外し(お手持ちの STL も可)
setup_tool主軸の工具と、M6用の工具テーブル
setup_work_zeroG54 を素材の角または中心に設定
setup_part比較に使う設計形状(STL)
setup_copy · setup_example段取りを加工済みの状態ごと別のツインへコピー/サンプルのいずれかを段取り
CAM
geometry_import形状(SVG、DXF、テキスト、数式、基本図形、点列)を、名前・バージョン・概要・プレビュー付きで保存
program_generateCAM:形状と加工工程からプログラムを作成(2.5軸または3軸)。すべての切削条件に理由を付け、試運転で検証
geometry_nest部品を板材に配置(小さな部品は大きな部品の穴の中へ)、タブ付き(Pro)
job_get · job_editプログラムの CAM ジョブを読み取り、値の変更や工程の追加・削除・並べ替えをして、プログラムの次のバージョンにする
プローブと検査
probe_cycleエッジ、コーナー、穴、ボス、上面、リングゲージでの校正。まずツインで試し、ワーク原点はあなたの承認があるときだけ設定
inspect_part完成した部品を設計と照合して測定:ポケット、輪郭、穴、ボス、面取り、V溝。ISO 2768 または ISO 286 で判定(Pro)
inspect_report検査記録の CSV と PDF。バイト単位で同一に再生成でき、監査ログに連鎖して記録(Pro)
setup_sheet印刷できる段取りシート:素材、治具、工具、原点、素材上方の余裕、加工工程と時間(Pro)
プログラム
program_checkコントローラのチェックモード、段取りと照合するツールパスのプレビュー、15の静的ルール
program_simulate非表示のコピー上で最後まで実行(現在のワークから、または新しい素材から):所要時間、アラーム、衝突、素材に切り込む早送り、負荷、びびり、部品の偏差
program_run · program_load機械そのもので実行または読み込み(ウィンドウの機械では、先にあなたに確認します)
program_debug · program_restart指定ブロックまで実行、状態の確認、ステップ実行/途中再開用の開始ブロック
program_edit · program_optimize意図を指定してプログラムを変更し(送り、回転数、Zシフト、安全高さ)、新しいバージョンとして保存/オプティマイザ
program_versionsバージョンの一覧、取得、保存、比較
実行と結果
run_status · run_profile長時間の実行の完了待ちまたは停止/ブロックごとのプロファイル
result_compare設計形状からの偏差(数値)
result_image画像:ワーク、ツールパス、偏差マップ、最も遅いブロック、時系列グラフ、A/B比較
log_query監査ログの検索:いつ、誰が、どの機械に、何をしたか
result_export加工後の部品を STL ファイルまたは高さマップとして
部品ライブラリ
part_save · part_list · part_get加工した部品を、プログラムのバージョン、ワーク原点、素材、段取り、測定結果と一緒に保存。記録の一覧と 1 件の読み取り
part_load · part_exportもう一度作るために機械を段取り。記録の部品をエクスポート
part_update · part_delete名前、タグ、メモ。記録の削除と復元
ウィンドウとヘルプ
window_show説明しながら、ワークスペース、3D ビューの面、プログラムの経路、準備パネルの手順を見せる
settingsウィンドウの設定を読み取る。言語、地域、単位、通貨、機械の時間単価の変更は「許可」をクリックしてから
manual_searchStudio のマニュアルを検索して答える
report_draft · report_listあなたが読んで送るための問題レポートを下書き。送信したレポートの状態と当社の回答

実際のセッションの記録

2026年10月9日に MCP経由で Studio 1.0を実際に呼び出した記録です。AIクライアント役はスクリプトが務め、ツールの結果はツインが返したものを一部省略して掲載しています。

あなた
クランプで固定した60 × 40 × 10 mm の6061ブロック用の、ポケット加工プログラムです。削る前に、MC-1 で検査してください。
アシスタント
練習用ツインで、素材をクランプで固定し、主軸に6 mm のスクエアエンドミルを取り付け、G54 を素材の左手前・上面の角に設定してから、コントローラのチェックモードで検査します。
ツール
setup_workpiece → {"placed": true, "material": "6061-T6", "fixture": "clamps", "mass_g": 64.8} setup_tool → {"tool": "flat 6 n3 L20", "stick_out_offset_mm": 4.5} setup_work_zero → {"g54_mpos": [-130.002, -95.002, -65.501]} program_check → {"refused": [{"line": 14, "code": 2, "text": "G1 X42 F", "error": "A number is missing or is not a valid number."}]}
アシスタント
14行目の F に値がありません。これを直すとコントローラはすべてのブロックを受け付けますが、段取りと照合したプレビューでは、機械が動く前の段階で、まだ2つの問題が見つかります。
ツール
program_check → {"refused": [], "preview": {"issues": [ {"line": 9, "kind": "rapid_cut", "text": "Line 9: a rapid move (G0) cuts 1.00 mm into the workpiece"}, {"line": 58, "kind": "collision", "text": "Line 58: tool hit clamp 2 strap (X 80.966 Y 62.049 Z -60.501)"}]}, "static_rules": [{"line": 9, "rule": "S10", "severity": "warning"}]}
アシスタント
それらが実際にどうなるかを確かめるため、段取りの非表示のコピー上でプログラムを最後まで実行しました。
ツール
program_simulate → {"completed": false, "simulated_time_s": 85.64, "final_state": "Alarm", "issues": [ "1 collision(s): tool/clamp2_strap at machine position [80.97, 62.05, -60.50] mm", "5 rapid move(s) into material (28.215 mm3 cut at rapid rate)", "drive alarm(s): X following error", "lost steps X/Y/Z: 320 34 0 (1.25 um each): the drives fell behind", "chatter on 27 line(s) (10-18, 26-34, 42-50), worst at line 26: stability margin 1.88 > 1 - the cut there is 1.00 mm deep, 1.9 times the stable depth (about 0.53 mm) at S15300; cut at most 0.43 mm deep there …", "ALARM:17 - A motor drive reports a fault.", …], "run": "r1"}
アシスタント
実害のある問題が2つと、知っておくべきことが1つあります。1層目の突っ込みが早送りでブランクに入り、最後の G0 X0 Y0 で工具が左手前のクランプに衝突します。ドライバがエラーを出し、機械は停止します。突っ込みを G1 Z-1 F150 に変更し、最後は G53 G0 Z-2 で、クランプから離れた位置に退避するようにしました。ツインはびびりも検出しています。15,300 rpm のこの工具では、1 mm の層は安定切込みの約2倍です。
ツール
program_simulate → {"completed": true, "simulated_time_s": 88.51, "issues": [ "chatter on 27 line(s) (10-18, 26-34, 42-50), worst at line 42: stability margin 1.88 > 1 - … cut at most 0.43 mm deep there …"], "material_removed_mm3": 1776.79, "replay_hash": "964c15c53873b6b6", "run": "r2"}
アシスタント
衝突も早送りでの切削もありません。加工時間は1分29秒、除去量は1,777 mm³です。これは30 × 20 × 3 mm のポケットから、工具半径で隅に残る分を差し引いた量です。びびりは層を薄くしない限り残ります(最大 0.43 mm)。オプティマイザは送りだけを変えるので、少し時間を短縮し、切込みはあなたの判断に任せます。
ツール
program_optimize → {"optimized": true, "verdict": "3.22 s faster (3.6 %), no line cuts heavier than the original's heaviest", "plan": {"changes": [{"line": 19, "what": "F", "before": 600, "after": 750, "why": "a lighter cut: up to the spindle load limit"}, …], "notes": "Tool 0 still chatters (margin 1.88): … a shallower cut does."}, "saved": {"name": "pocket_v3.nc", "version": 1}}
アシスタント
両方のバージョンを保存しました。削る前に、ツインがびびりを検出しなくなるよう層を 0.4 mm にすることをお勧めします。変更しましょうか?

AI が見る画像

result_imageは、ツインの結果を画像として描き、その横に主要な数値を文章で添えます。以下の3枚は、上のセッションで得られたものです。

1回目の実行の時間推移 (kind timeline):12秒の時点の早送りでの突っ込みで、主軸負荷が153%、びびり指標が1.72に達し、86秒の時点で工具がクランプに当たります。
1回目の実行の時間推移 (kind timeline):12秒の時点の早送りでの突っ込みで、主軸負荷が153%、びびり指標が1.72に達し、86秒の時点で工具がクランプに当たります。
修正後の実行のワーク (kind workpiece)。2つのクランプの間にあり、高さで色分けしています。
修正後の実行のワーク (kind workpiece)。2つのクランプの間にあり、高さで色分けしています。
修正後の実行で最も遅い12ブロックと、それぞれの速度を制限した要因 (kind profile)。
修正後の実行で最も遅い12ブロックと、それぞれの速度を制限した要因 (kind profile)。

セットアップ

Studio では、AI をオンにしてから、AI ▾ →「AIクライアントを接続」を開き、お使いのクライアントを選びます。クライアントを手動で設定する場合は、TwinwrightStudio.exe(インストール先:%LOCALAPPDATA%\Programs\Twinwright Studio)を、引数 --mcp 付きで指定します:

Claude Desktop · claude_desktop_config.json
{
  "mcpServers": {
    "twinwright": {
      "command": "C:\\Users\\<you>\\AppData\\Local\\Programs\\Twinwright Studio\\TwinwrightStudio.exe",
      "args": ["--mcp"]
    }
  }
}
ChatGPTデスクトップ版 · %USERPROFILE%\.codex\config.toml
[mcp_servers.twinwright]
command = 'C:\Users\<you>\AppData\Local\Programs\Twinwright Studio\TwinwrightStudio.exe'
args = ["--mcp"]
VS Code · .vscode/mcp.json
{
  "servers": {
    "twinwright": {
      "type": "stdio",
      "command": "C:\\Users\\<you>\\AppData\\Local\\Programs\\Twinwright Studio\\TwinwrightStudio.exe",
      "args": ["--mcp"]
    }
  }
}
コマンドライン
# Claude Code
claude mcp add twinwright -- "C:\Users\<you>\AppData\Local\Programs\Twinwright Studio\TwinwrightStudio.exe" --mcp
# 任意のクライアントから HTTP で接続(このコンピューター内のみ)
"C:\Users\<you>\AppData\Local\Programs\Twinwright Studio\TwinwrightStudio.exe" --mcp-http 8766 --mcp-token <your token>
#   エンドポイント http://127.0.0.1:8766/mcp、ヘッダー Authorization: Bearer <your token>
監査ログ

いつ、誰が、どの機械に、何をしたか。

Studio は、お使いのコンピューター上に監査ログを記録します。対象は、ウィンドウでのオペレータの操作、AI によるすべてのツール呼び出し(クライアント名付き)、アラーム、衝突、プログラムの開始と終了です。各レコードには直前のレコードの SHA-256ハッシュが日をまたいで含まれるため、変更されたレコードや欠落したレコードがあれば分かります。

  • 詳細レベルは5段階で、カテゴリ(機械、操作、プログラム、段取り、AI、システム)ごとに設定できます
  • ハッシュチェーンは、ログウィンドウまたは TwinwrightStudio.exe --audit-verify で検証できます。CSV へのエクスポートにも対応しています
  • 既定では180日間、または最大2 GB まで保存します。APIキーとトークンはマスクされます
監査ログウィンドウ (Ctrl+L)。下部の表示:1ファイル、83レコード、ハッシュチェーンは最初から最後まで一致。
監査ログウィンドウ (Ctrl+L)。下部の表示:1ファイル、83レコード、ハッシュチェーンは最初から最後まで一致。

AI がツインの中にとどまる設計

ハードウェアへの経路なし

MCPサーバーとツインホストが起動・操作するのは、シミュレーション上の機械だけです。実機の MC-1 とのシリアル接続やネットワーク接続はありません。シャドーモードでは、AI は読み取りしかできません。

オンにするまではオフ

ウィンドウの AIスイッチは、既定ではオフです。オフの間、AIクライアントは画面に表示されない練習用ツイン(サンドボックス)で作業します。その結果にも練習用ツインであることが明記されるので、AI があなたの機械と取り違えないようになっています。

ウィンドウの機械は許可制

AI がウィンドウの機械を変更しようとすると、ウィンドウ上部のヘッダーに「許可」か「拒否」かの確認が表示されます。60秒以内に応答がなければ拒否とみなされます。確認を求めるかどうかは、あなたが決められます。

シミュレーションはコピー上で

program_simulateは、段取りの非表示のコピー上で実行されます(ワークの現在の状態から、または要求があれば新しい素材から)。そのため、プログラムを試しても、問い合わせの対象となった機械が変わることは決してありません。

機械を動かすのは人

AI が検証したプログラムは、1つのファイルにすぎません。それを実機に読み込み、ワーク原点を設定し、サイクルスタートを押すのは人です。

再現できる証拠

どの実行も、最後にリプレイハッシュを出力します。同じ段取りで同じプログラムを実行すれば、どのコンピューターでも同じハッシュになるため、AI の主張を検証できます。

今後の予定

予定

Twinwright Cloud

インターネット上のサーバーにしか接続できないクライアント(claude.ai、ウェブ版ChatGPT、Gemini、Microsoft Copilot)向けの、ホスト型MCPエンドポイント。サインインとユーザーごとのツインを備えます。

予定

インタラクティブな結果カード

MCP Apps に対応したクライアントで、チャットの中で回転させたりクリックしたりできる画像。

予定

AI向けの CNCベンチマーク

ツインが自動で採点する加工課題。各モデルの Gコードの作成・修正能力を比較できます。

FAQ

どの AIクライアントで使えますか?

ローカルのプログラムを起動できる MCPクライアントなら使えます。Claude Desktop、Claude Code、ChatGPTデスクトップ版(Codexモードと Workモード)、Cursor、VS Code、LM Studio、Cherry Studio、Trae などです。claude.ai やウェブ版ChatGPT といったウェブ版のクライアントは、インターネット上のサーバーにしか接続できません。そのためのサーバーは、計画中の Twinwright Cloud で提供する予定です。各リリースは、自動化された MCPクライアントを使い、stdio と HTTP でテストしています。ワンクリックでの登録は、各クライアントのドキュメントに記載された設定方法に沿っています。

AI は私のファイルを見ることができますか?

AI が見られるのは、あなたが渡したものと、ツールが返したものだけです。サーバーはお使いのコンピューター上で動作し、Twinwright が受け取るものは何もありません。クラウドのモデルを使う場合、プロンプトとツールの結果は、そのプロバイダーの規約に従ってプロバイダーに送信されます。

費用はかかりますか?

MCPサーバーと AIアシスタントは Studio の一部で、無料です。クラウドのモデルの利用料は、プロバイダーからあなたのキーに対して請求されます。ローカルモデルなら費用はかかりません。

シミュレーションにはどのくらい時間がかかりますか?

1回の呼び出しは40秒以内に応答します。それより長い実行では、まず実行ID を返し、結果は run_statusで受け取ります。クライアントによっては、1回のツール呼び出しに60秒しか待たないためです。材料除去を伴うシミュレーションは、通常、実時間の数倍の速さで実行されます(1.0 のサンプル:現行のデスクトップPC で8~28倍)。深いポケットへのヘリカル進入のような密度の高い区間では、一時的に実時間より遅くなることがあります(サンプル14:最も遅い5秒間で約0.6倍)。

これは Gコードを書く AI ですか?

いいえ。どの AI からでも(あるいはどのプログラムからでも)、Studio の CAM に形状から Gコードを書かせ、機械の物理モデルで Gコードをテストし、根拠に基づいて改善するための仕組みです。お使いの CAM、自作のコード、AIアシスタントと組み合わせて使えます。

AI が実機を動かすことはありますか?

AI は、ツインでは大胆に、実機では慎重に振る舞います。Studio では、AIアシスタントはツイン上で作業します。何でも試してよいのは、そのツインの中です。実機の MC-1 に接続しているとき(シャドーモード、1.0 ではプレビュー)、AI は読み取るだけです。機械が測定・記録したデータとその分析を読み、プログラムを開始することも、設定を変更することもありません。AI の呼び出しは、既定で有効な監査ログに記録されます。