MATLAB の Model Context Protocol (MCP) Core Server を Claude Desktop で試してみた
※この投稿は 2025 年 11 月 3 日に The MATLAB Blog へ 投稿されたものの抄訳です。
—
MATLAB MCP Core Server は AI モデルから MATLAB を使えるようにする
ある意味では、MCP は本質的に新しいものを提供しているわけではありません。たとえば先月初め、私は Ollama を設定して MATLAB で定義されたツールを呼び出す方法を紹介しました。ChatGPT やその他の AI システムについても同様の記事を書くことは可能でしたが、それぞれのケースでコードを少し調整する必要がありました。MCP を使えば、ツールの定義方法を一度だけ示せば済むのです。
先週の金曜日、私たちは MATLAB 用の MCP サーバーをひとつリリースしましたが、Yann のブログ記事でも紹介されていたように、すでに VSCode、Claude Desktop、Gemini CLI など多くの MCP クライアントと連携しています。実際、少し設定を加えるだけで、どの MCP クライアントでも動作するはずです。
このことの実用的な意味は、今や MATLAB MCP Core Server を使えば、どんな AI システムにも MATLAB を接続できるということです。そこで私はまず、Claude Desktop に接続してみました。
Claude Desktop での第一歩と、最初の「ハルシネーション」
インストールの詳細はプロジェクトの README.md に記載されています。すべてがうまくいけば、Claude Desktop を起動すると MATLAB も同時に起動されます。また、Claude Desktop の「Search and Tools」ボタンから利用可能なツールを確認することもできます。

ご覧のとおり、このサーバーは AI に対して 5 つのツールを提供しています。それらは以下の通りです:
- Detect MATLAB Toolboxes:インストールされている MATLAB ツールボックスを確認します
- Check MATLAB Code:MATLAB の checkcode 関数を使用して、コードに潜在的な問題がないかをチェックします
- Evaluate MATLAB Code:文字列として送信された MATLAB コードを実行します
- Run MATLAB File:.m ファイルを実行します
- Run MATLAB Test file:MATLAB のテストファイルを実行します
すべてが正常に動作しているかを確認するための簡単なテストとして、 detect_matlab_toolboxes ツールを使っています。これは AI と MATLAB の間で最もシンプルな接続なので、このツールが動作しない場合、他のツールも動作しない可能性が高いのです。
私は Claude に「インストールされている MATLAB ツールボックスは何ですか?」と尋ねます。
AI は detect_matlab_toolboxes ツールを呼び出します。このツールはローカルの MATLAB で ver コマンドを実行し、その結果を AI に返します。
すると AI は、ツールボックスを自ら考えたカテゴリにグループ化して、きれいに整形された結果を返してくれます。私はその分類には完全には同意していませんが、それはまた別の話です。


detect_matlab_toolboxes 自体は完璧に動作しました。少し幻覚を起こしたのは Claude 本体であり、こうしたことは時々起こると考えておくべきです。実際、現在の Claude Desktop のチャットの最後には、免責事項が表示されるようになっています。



ファイルシステムの問題とその回避策
Claude Desktop で MATLAB MCP Core Server を使い始めた当初、ファイルシステムに関するトラブルが多く発生しました。簡単に言えば、Claude は /home/claude/ のような内部ファイルシステムに .m ファイルを書き込もうとし、それを MATLAB に実行させようとしていました。当然ながら、MATLAB は私のローカルマシン上にあるため、Claude のファイルシステムを見ることができません。その結果、Claude は異なる場所で何度も試したり、MATLAB を別の方法で起動しようとしたりしましたが、結局うまくいきませんでした。
MathWorks の他の Claude Desktop ユーザーと話したところ、私と同じような問題を経験した人もいれば、まったく問題がなかった人もいました。つまり、状況は人によって異なるようです。
最終的に私は、Connect to local MCP servers (MCP) の手順に従って Node.js と Filesystem MCP Server をインストールすることでこの問題を解決しました。現在、私の Claude Desktop の設定ファイル claude_desktop_config.json には、MATLAB MCP Core Server と Claude Filesystem Server の両方の設定が含まれており、以下のようになっています:
Claude Desktop を使うために、ローカルマシン上に C:\Users\walki\Downloads\work というフォルダーを作成しました。プロンプトを入力する際には、このフォルダーを明示的に指定するようにしたところ、動作がかなり改善されました。
さて、準備作業はここまでにして、このセットアップを使ってもっと面白いことをやってみましょう。
データセットに最適な多項式を見つける
5 次の多項式にランダムなノイズを加えてデータセットを作成しました。参考までに、これがその生成方法です。
プロンプト内容:
ローカルマシンの C:\Users\walki\Downloads\work フォルダー内に polynomial_data.csv というファイルがあります。
そのフォルダー内で、以下を満たす MATLAB スクリプトを作成し、実行してください。
- このデータを MATLAB に読み込み、プロットする。ただし、点を線で結ばないこと。
- データはノイズを加えた多項式から生成されています。どの次数の多項式が最もよくフィットするかを見つける処理を作成してください。
複数の異なる手法を使って最適なものを判断してください。 - 複数のプロットを作成する際は、subplot ではなく tiledlayout を使用してください。
- 最後に、元のデータと最適なフィット多項式を組み合わせたプロットを作成してください。
このプロンプトはかなり具体的です。たとえば、subplot よりも tiledlayout を優先するという指示や、データ点を結ばないように明示的に求めている点です。これは、今回が初めてではないからです!最初のプロンプトはもっとシンプルでしたが、結果はあまり良くありませんでした。その後、より良い結果を示すために何度も試行を重ねてきました。
次の動画で、その結果を見てみましょう。
動画の中で Claude がコードを書いている部分は、見どころが少ないので早送りしました。早送り部分は明確にマークされています。それ以外の部分はすべてリアルタイムです。全体の処理にかかった実際の時間は約 3 分でした。その間、私が追加の入力をすることなく、
- Claude はローカルマシン上のデータファイルを確認し、指定に従って MATLAB コードを書き、マシンに保存しました。
- そのコードをローカルの MATLAB で実行しました。コードは失敗し、Claude はエラーメッセージを解析しました。
- Claude は crossvalind 関数を使用していましたが、これは Bioinformatics Toolbox に含まれる関数で、私の環境にはインストールされていなかったためエラーが発生しました。
- Claude は crossvalind を使わないように MATLAB スクリプトを書き直しました。
- 新しいスクリプトは正常に実行され、結果と複数のプロットを含む Markdown レポートが生成されました。
スクリプトは、5次の多項式が最適なフィットであることを正しく判断し、私が手動で実行した際には次のように報告しました。
MATLAB の Curve Fitting Toolbox を使ってこれらのパラメータを確認しましたが、正しいことがわかりました。
Claude に対して、クロスバリデーションやベイズ情報量規準(BIC)などの指標を使うように指示したわけではありません。これらは Claude が自分で考えて取り入れたものです。BIC については名前を聞いたことがある程度で、ここで本当に関連があるのかはわかりません ― これは私の ToDo リストに追加です。また、クロスバリデーションが正しく実装されているかどうかも、まだ詳しく確認していません。
次のステップ
次はコードを GitHub にアップロードして手作業で編集を始めることもできます。ある時点で、他の人とコードレビューを共有できる状態になるでしょう。あるいは、さらに調査を行ったうえで、プロンプトをもう少し改善することもできます。たとえば、Bioinformatics Toolbox をインストールして crossvalind を必ず使うようにするのか、それとも使わないようにするのかを決める必要があります。
プロンプトに追加できることとして、
- Markdown レポートファイルを生成してくれたのは良かったです ― これは私が頼んだわけではありません。しかし、プロットは含まれていませんでした。これについてもプロンプトに明記すべきかもしれません。
- Claude が使用した手法の中に、良くないものがあるかどうかを専門家に相談するつもりです(あるいはブログ読者に尋ねるかもしれません)。もしそうなら、それらを除外するようにします。
- また、Claude に MATLAB コーディングガイドラインを参照させ、それに従うよう指示することも考えています。
- 動画を見ればわかりますが、プロットの凡例は見た目がひどいです。これをプロンプトで改善できるでしょうか?
- さらに、「Original Data」の色選択も、ダークモードを使っていることを考えると、もう少し良くできるはずです。プロットの見た目について、もっと具体的に指示する必要があります。

次のステップ(読者のみなさんに向けて)
MATLAB MCP Core Server をダウンロードし、あなたが選んだ MCP 対応 AI ツールと統合してください。問題や提案があれば、プロジェクトの GitHub リポジトリに issue を投稿してください。
この新しい技術を使って、皆さんがどんなことをするのか楽しみにしています。


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