OpenCode と Ollama で実現する、Mac 上の MATLAB によるローカル LLM 実行
※この投稿は 2026 年 8 月 20 日に The MATLAB Blog へ 投稿されたものの抄訳です。
—
Bio: オンラインコミュニティで活動する Toshi Takeuchi さんによるゲスト投稿です。Toshi はこの20年間、MathWorks で多くのマーケティング職を歴任してきました。
最新の M シリーズ Mac をお持ちで、MATLAB による完全ローカルなエージェント型ワークフローに興味はありますか?
- API キー不要
- トークン費用なし
- すべてローカルで完結
以前、Mike Croucher が LM Studio とローカルモデルを使って MATLAB でローカル Agentic AI ワークフローを動かす: 16GB MacBook Pro、LM Studio、gemma 4 を使った方法を紹介してくれました。
私はたまたま Ollama のほうにより慣れていたので、Ollama と OpenCode で同じ考え方を試してみたくなりました。Ollama は Apple の MLX フレームワークもサポートしており、Apple Silicon のユニファイドメモリアーキテクチャを活用できる点が魅力です。要するに、Apple Silicon では CPU と GPU が同じメモリを共有するため両者の間で追加のデータ移動が不要になり、その結果として非常に良い推論速度が得られます。
OpenCode は人気のあるオープンソースの AI コーディングエージェントで、私がよく知っている Claude Code や Codex ととてもよく似ています。特に問題なく OpenCode で MATLAB MCP Server を有効化することができました。
構成
セットアップは次のとおりです:
macOS Tahoe
Ollama
qwen3-coder:30b
OpenCode
MATLAB MCP Server
MATLAB Agentic Toolkit skills
VS Code integrated terminal
アーキテクチャには 3 つの独立したローカル接続があります:

Ollama はローカル LLM へのアクセスを提供します。この例では、私の MacBook Pro に 48 GB の RAM があるので Qwen3-Coder-30B を使っています。16 GB モデルなら、代わりに Qwen-3-8b がよいかもしれません。次に OpenCode が Ollama と通信し、さらに MATLAB MCP Server 経由で MATLAB と、MATLAB Agentic Toolkit のスキルにもアクセスを提供します。
Ollama のセットアップ
Mac に最初にインストールするのは Ollama です。ローカル LLM を管理し提供するためのプラットフォームです。
インストーラをダウンロードし、開いて、Ollama を Applications フォルダへ移動します。その後、コマンドラインツールのインストールとローカルのバックグラウンドサービス起動のために、一度 Ollama を起動してください。
インストールを確認します:
ollama –version
Mac アプリは通常、バックグラウンドでローカル Ollama サーバーを起動します。動いていない場合は手動で起動できます:
ollama serve
もしポートがすでに使用中と表示された場合は、通常は Mac アプリがすでにサーバーを起動している状態です。
ローカルモデルの取得
コーディングエージェントのワークフローでは、構造化されたツール呼び出しをサポートするモデルを使ってください。48 GB のユニファイドメモリを搭載した Mac では、qwen3-coder:30b 、16 GB の Mac では qwen3:8b が選択肢となります。モデルが構造化ツール呼び出しをサポートしていないと、ツール呼び出しを実行せず、通常のテキストとして画面に表示してしまいます。
モデルを取得します。大きなローカルのコーディングモデルは、ダウンロードとロードに時間がかかることがあります:
ollama pull qwen3-coder:30b
これは通常の Ollama のモデル管理手順です。モデルがインストールされていることは次で確認できます:
ollama list
OpenCode をインストールする前に、まずモデルと直接会話して動作確認しましょう:
ollama run qwen3-coder:30b “Hello, who are you?”
チャットを終了するには、次を入力します:
/bye
OpenCode のインストール
Ollama の準備ができたので、 CLI 版の OpenCode をインストールしましょう。
インストールするには:
curl -fsSL https://opencode.ai/install | bash
その後シェルを再起動し、正しく動作することを確認します。
opencode –version
Ollama で OpenCode を起動する
Ollama v0.15 以降では、Ollama から OpenCode を起動し、ローカルモデル接続を自動設定できます。
OpenCode を使いたいフォルダで起動します:
cd /path/to/your/project
ollama launch opencode –model qwen3-coder:30b
注: OpenCode は起動したディレクトリを基準に動作します。もし~/ から起動すると、ファイルを~/. に作成してしまうことがあります。
モデルのツール呼び出し対応を確認する
MATLAB MCP Server を OpenCode に追加する前に、選んだモデルが本当に構造化されたツール呼び出しをサポートしているか確認しておくとよいでしょう。ここでは、前の手順で OpenCode がターミナル上で動いている前提です。
別のターミナルを開き、次をコピー&ペーストして(別のモデルを使っている場合はモデル名を調整し)、Enter キーを押します:
curl http://127.0.0.1:11434/v1/chat/completions \
-H “Content-Type: application/json” \
-d ‘{
“model”: “qwen3-coder:30b”,
“messages”: [
{
“role”: “user”,
“content”: “Use the tool to add 2 and 3.”
}
],
“tools”: [
{
“type”: “function”,
“function”: {
“name”: “add_numbers”,
“description”: “Add two numbers.”,
“parameters”: {
“type”: “object”,
“properties”: {
“a”: { “type”: “number” },
“b”: { “type”: “number” }
},
“required”: [“a”, “b”]
}
}
}
],
“tool_choice”: “auto”
}’
これは最小限のツール呼び出しリクエストを Ollama に直接送るものです。選んだモデルが構造化ツール呼び出しをサポートしていれば、JSON レスポンスにtool_calls フィールドが返るはずです。私のテストでは、qwen3-coder:30b が finish_reason: “tool_calls” と構造化されたエントリが含まれていました。
これで OpenCode を閉じることができます:
/exit
MATLAB MCP Server の追加
この時点で OpenCode はローカルモデルと会話できますが、まだ MATLAB のツールは使えません。私は MATLAB Agentic toolkit を使ってこれをインストールしました。この方法なら、実行ファイルは次の場所にインストールされます:
/Users/<username>/.matlab/agentic-toolkits/bin/matlab-mcp-server
OpenCode に追加する前に、パスが正しいことを確認してください:
ls -l /Users/<username>/.matlab/agentic-toolkits/bin/matlab-mcp-server
/Users/<username>/.matlab/agentic-toolkits/bin/matlab-mcp-server –help
この確認は重要です。このパスのタイプミスだけで MCP の設定が失敗することがありました。
OpenCode のユーザー設定ファイルはこちらです:
~/.config/opencode/opencode.json
OpenCode の設定ファイルに MATLAB MCP Server を追加するため、これを編集する必要があります。もし opencode.json がまだ存在しない場合は作成してください。すでに存在する場合は、mcp ブロックをトップレベルのプロパティとして追加します。
MATLAB MCP Server 用の最小構成は次のとおりです。
{
“$schema”: “https://opencode.ai/config.json”,
“mcp”: {
“matlab”: {
“enabled”: true,
“type”: “local”,
“command”: [
“/Users/<username>/.matlab/agentic-toolkits/bin/matlab-mcp-server”,
“–matlab-root”,
“/Applications/MATLAB_R2026a.app”
]
}
}
}
opencode.json を編集した後は、OpenCode を再起動する前に JSON として検証してください:
python3 -m json.tool ~/.config/opencode/opencode.json
OpenCode を再起動します:
cd /path/to/your/project
ollama launch opencode –model qwen3-coder:30b
次のプロンプトで接続をテストします:
Use MATLAB to report the MATLAB version, then stop.
MATLAB Agentic Toolkit スキルの追加
MATLAB MCP Server によって OpenCode は MATLAB にアクセスできるようになりますが、MATLAB Agentic Toolkit は、素の LLM が苦手な再利用可能な MATLAB 特有のワークフローを実現するスキルを提供します。MATLAB ユーザーなら、作業の中で同じ手順を繰り返していると気づいたときに、スクリプトを関数にしたことがあるはずです。スキルもそれに似ています。同じ一連のプロンプトを何度も打つ代わりに、それをスキルとしてパッケージ化します。MATLAB Agentic Toolkit には、一般的な MATLAB タスク向けの事前構築済みスキルがあります。
MATLAB Agentic Toolkit のスキルは次の配下にあります:
~/.matlab/agentic-toolkits/matlab/skills-catalog
ローカルモデルのコンテキストウィンドウが限られていたので、最初からすべてのスキルを使用しませんでした。まずは厳選したセットだけを OpenCode のグローバルスキルディレクトリへリンクしました:
mkdir -p ~/.config/opencode/skills
ln -sfn ~/.matlab/agentic-toolkits/matlab/skills-catalog/matlab-core/matlab-testing \
~/.config/opencode/skills/matlab-testing
ln -sfn ~/.matlab/agentic-toolkits/matlab/skills-catalog/matlab-core/matlab-debugging \
~/.config/opencode/skills/matlab-debugging
ln -sfn ~/.matlab/agentic-toolkits/matlab/skills-catalog/matlab-core/matlab-review-code \
~/.config/opencode/skills/matlab-review-code
ln -sfn ~/.matlab/agentic-toolkits/matlab/skills-catalog/matlab-data-import-and-analysis/matlab-analyze-data \
~/.config/opencode/skills/matlab-analyze-data
ln -sfn ~/.matlab/agentic-toolkits/matlab/skills-catalog/matlab-programming/matlab-validate-function-arguments \
~/.config/opencode/skills/matlab-validate-function-arguments
ln -sfn ~/.matlab/agentic-toolkits/matlab/skills-catalog/matlab-software-development/matlab-modernize-code \
~/.config/opencode/skills/matlab-modernize-code
その後、opencode.json で MATLAB スキルを許可しました:
“permission”: {
“skill”: {
“matlab-*”: “allow”
}
}
OpenCode を再起動したあと、スキル検出をテストします:
MATLAB に関連する利用可能なスキルを列挙してください。まだ読み込まないでください。
テスト用プロンプトの実行
最初のエンドツーエンドテストでは、プロンプトを小さく明確に保ちます:
Use MATLAB to create a script named sine_demo.m in the current working directory.
The script should generate a sine wave and plot it.
Run the script in MATLAB and report whether it completed successfully.
ローカルモデルでは、Claude Code や Codex のような最先端クラウドモデルを使うとき以上に、私は明示的に指示するようにしています。
コンテキストウィンドウの拡張
Ollama は、モデルが本来扱えるよりもかなり小さいコンテキストウィンドウをデフォルトに設定します。Qwen3.6-27B の場合、デフォルトは 4,096 トークンしかありませんが、モデル自体は最大 262k まで扱えます。4,096 トークンではエージェント型ワークフローには不十分です。コンテキストウィンドウは次のように変更できます。
1. ターミナルでベースモデル(私は MLX 向けに最適化されたモデルを使っています)を実行します:
ollama run qwen3.6:27b-mlx
2. Ollama のプロンプトで新しいコンテキストウィンドウを設定し、新しい名前でモデルを保存してから終了します。
>>> /set parameter num_ctx 32768
Set parameter ‘num_ctx’ to ‘32768’
>>> /save qwen3.6:27b-mlx-32k
Created a new model ‘qwen3.6:27b-mlx-32k’
>>> /bye
3. ターミナルで OpenCode とともにそのモデルを起動します
ollama launch opencode –model qwen3.6:27b-mlx-32k
なぜ 262k まで上げられるのにコンテキストウィンドウに 32K を選んだのか。最初は 65k(65,536)に設定しましたが、長時間のセッションを実行した際に Mac が 2 回クラッシュしました。クラウドベースのモデルと違って、コンテキストも物理メモリに収める必要があります。コンテキストウィンドウを大きくしすぎると、長時間のセッションでカーネルパニックが起き、Mac がクラッシュする可能性があります。
まとめ
私は、LM Studio よりも Ollama のほうがセットアップと設定が簡単だと感じました。これは慣れていたおかげでもあります。
注意すべき点:
- 自分のハードウェア仕様にあったモデル選びです。まずはここで勧めたモデルから始めてください。
- MATLAB MCP Server を設定するために OpenCode の設定ファイルを手動編集するときのタイプミス
- コンテキストウィンドウには注意してください。私の Mac はコンテキストウィンドウの使用量がある程度を超えるとクラッシュしました。
Mac で 3 つのモデルを試しましたが、総合的には Qwen3-Coder:30B が最良の結果を出しました。
- Qwen3-8B は高速でしたが、他のモデルほど高性能ではありませんでした。
- Qwen3.6-27B は遅すぎ、その出力も Qwen3-Coder より目に見えて良いわけではありませんでした。しかも Mac もクラッシュしました。
Opus 4.6 以降や GPT-5.5 以降のような最先端モデルに慣れているなら、期待値を調整する必要があります。ローカルモデルはコンテキストウィンドウが小さく、クラウドベースの最先端モデルと比べて他の面でも制約があります。Qwen3-Coder を意識的に使えば、私の Mac では一般的なタスクをかなりうまくこなせると感じています。


댓글
댓글을 남기려면 링크 를 클릭하여 MathWorks 계정에 로그인하거나 계정을 새로 만드십시오.