bio_img_japan-community

MATLAB ユーザーコミュニティー

MATLAB & Simulink ユーザーコミュニティー向け日本語ブログ

MATLAB MCP クライアントがリリースされました

※この投稿は 2025 年 12 月 10 日に Artificial Intelligence へ 投稿されたものの抄訳です。

ゲストライター: Shweta Pujari

Shweta Pujari は AI と生成 AI のプロダクトマネージャーです。このブログ記事では、Shweta が私と一緒に、新しい MATLAB MCP クライアントを使って MATLAB 言語でエージェント型ワークフローを構築する方法を紹介します。

 

MathWorks は GitHub 上で新しい機能「MATLAB MCP クライアント」を公開しました。これにより、ユーザーは MATLAB ベースの AI ワークフローを HTTP 経由で外部サービスやサードパーティツールに簡単に接続できるようになります。

https://github.com/matlab-deep-learning/mcpHTTPClient

Note: およそ1か月前、MathWorks は GitHub 上で MATLAB MCP コアサーバーも公開しました。これは、サードパーティの AI チャットやエージェントから MATLAB を呼び出すための MCP 実装のリファレンスを提供します。

この投稿では、MCP クライアントとは何か、どのように動作するのか、そして MATLAB で AI ソリューションを構築するエンジニアにとってなぜ重要なのかを解説します。

MATLAB MCP クライアントとは?

Model Context Protocol(MCP)は、AI モデルが外部ツールやサービスと通信する方法を定義する新しい標準です。MCP は、AI モデルとツールサーバーの両方が理解できる「言語」のようなもので、利用可能なツールの一覧取得や、特定の入力でツールを呼び出し、構造化された結果を返す方法を提供します。現在、多くの高度な LLM アプリケーションは、外部関数を呼び出せるエージェントを使用しています(例:天気 API やデータベースクエリを呼び出す AI アシスタント)。MCP は、このようなツール呼び出しを正式な枠組みで提供し、MCP に対応するツールサーバーと AI クライアントが相互に通信できるようにします。

この機能により、MCP クライアントを完全に MATLAB コードで実装できます。実際には、このアドオンを使うことで、MATLAB は HTTP 経由で MCP 互換サーバーに接続し、そのサーバーが提供するツールを利用できます。接続後、MATLABはサーバー上の利用可能なツールを一覧表示し、必要に応じてそれらを呼び出せます。重要なのは、この統合が「Large Language Models (LLMs) with MATLAB」アドオンと連携するよう設計されており、言語モデルが必要に応じて自動的にこれらのツールを使用できる点です。

MATLAB MCP クライアントの主な機能

  • MCP サーバー経由でツールに接続:MATLAB で MCP クライアントを作成し、URL(エンドポイント)を指定することで、任意のストリーミング対応 HTTP MCP サーバーに接続できます。接続すると、クライアントはサーバーから利用可能なツール一覧を自動的に取得します。つまり、MATLAB はサーバーが実行できる機能(例:get_weather, run_simulation, query_database など)と、それぞれのツールの入力・出力の詳細を即座に把握できます。
  • 外部ツールの呼び出し:MCP クライアントを使えば、外部ツールの呼び出しはローカルの MATLAB 関数を呼び出すのと同じくらい簡単です。このアドオンには、高レベル関数 callTool が用意されています。ツール名と必要なパラメータを渡すだけで、callTool がサーバーとの通信を処理し、結果を MATLAB に返します。HTTP リクエストを手動で作成したり JSON を解析する必要はありません。クライアントが裏で処理してくれるので、外部 API やサービスとの統合が劇的に簡単になります。
  • LLM ワークフローとの統合:最も注目すべき機能は、エージェント型 AI ワークフローを実現できることです。このMCP クライアントと LLMs with MATLAB アドオンを組み合わせることで、MATLAB 内の大規模言語モデルが、ユーザーの要求を満たすために外部ツールを呼び出すべきかどうかを自律的に判断できます。MCP クライアントはサーバーのツールを LLM に公開します。ツール一覧をモデルが理解できる形式(OpenAI の function-calling インターフェース用の openAIFunction オブジェクト)に変換し、LLM セッションに渡します。その後、LLM にプロンプトを与えると、必要と判断した場合、ツール名と引数を含むツール呼び出しを出力できます。MATLAB はこの関数呼び出しの意図をキャプチャし、callTool(client, toolRequest) を使って実行し、結果を取得できます。要するに、MCP クライアントによって、MATLAB の AI アシスタントは外部データやアクションについて話すだけでなく、実際にサービスを呼び出してアクションを実行できるようになります。

MATLAB MCP クライアントを使ってみる

 

この例では、MATLAB で MCP クライアントを簡単に構築し、MCP サーバーに接続して LLM を使ってサーバーツールを呼び出す方法を示します。ここでは、prime sequence MCP サーバーを使用します。

 

 

OpenAI LLM を呼び出すためのインターフェースをセットアップ

最新バージョンの LLM-with-MATLAB リポジトリを取得してください。

.env ファイルを作成し OPENAI_API_KEY を設定します。

OPENAI_API_KEY=sk-proj-xxxxx
gitclone("https://github.com/matlab-deep-learning/llms-with-matlab")
addpath("llms-with-matlab")
loadenv '.env'

 

MCP クライアントを構築する

MATLAB から MCP サーバーのエンドポイントに接続する方法は次のとおりです。

endpoint = "https://production-server-demo.mathworks-workshop.com/primeSequence/mcp";
client = mcpHTTPClient(endpoint)
client = 
  mcpHTTPClient with properties:

       Endpoint: "https://production-server-demo.mathworks-workshop.com/primeSequence/mcp"
    ServerTools: {[1×1 struct]}
最初のステップは、MCP サーバーで利用可能なツールの確認です。すべてのツールを一覧表示するにはループ処理を使いますが、ここでは設定しているツールは 1 つだけです。
serverTools = client.ServerTools;
for i = 1:length(serverTools)
    disp(serverTools{i}.name)
    disp(serverTools{i}.description)
    disp('---')
end
primeSequence
Return the first N primes of the given sequence type. Four sequence types supported: Eisenstein, Balanced, Isolated and Gaussian.
---
次のステップは、ツールを呼び出すために必要な引数の確認です。
tool1 = serverTools{1};
toolName = tool1.name;
client.ServerTools{1}.inputSchema
入力スキーマは、どの引数やプロパティが必要かを示します。
client.ServerTools{1}.inputSchema.properties
ans = struct with fields:
       n: [1×1 struct]
    type: [1×1 struct]
client.ServerTools{1}.inputSchema.properties.n
ans = struct with fields:
           type: 'number'
    description: 'Length of the generated sequence'
client.ServerTools{1}.inputSchema.properties.type
ans = struct with fields:
           type: 'string'
    description: 'Name of the sequence to generate'
client.ServerTools{1}.inputSchema.required
ans = 2×1 cell array
'n'       
'type'    

 

MCP クライアントをモデルに統合する

次の関数は LLMs with MATLAB リポジトリで提供されています。この例では、OpenAI サービスを使用して大規模言語モデル(LLM)を提供します。

f = openAIFunction(serverTools)
f = 
  openAIFunction with properties:

    FunctionName: "primeSequence"
     Description: "Return the first N primes of the given sequence type. Four sequence types supported: Eisenstein, Balanced, Isolated and Gaussian."
      Parameters: [1×1 struct]
model = openAIChat(Model="gpt-5-mini",Tools=f)
model = 
  openAIChat with properties:

           ModelName: "gpt-5-mini"
         Temperature: 1
                TopP: 1
       StopSequences: [0×0 string]
             TimeOut: 10
        SystemPrompt: []
      ResponseFormat: "text"
     PresencePenalty: 0
    FrequencyPenalty: 0
       FunctionNames: "primeSequence"

モデルにどのツールを呼び出すか選ばせてみましょう。ここでは、選択できるツールは1つだけです。

[~,completeOutput] = generate(model,"generate a sequence of 10 prime numbers")
completeOutput = struct with fields:
           role: 'assistant'
        content: []
     tool_calls: [1×1 struct]
        refusal: []
    annotations: []
completeOutput.tool_calls
ans = struct with fields:
          id: 'call_5TOPVJ5zftW3WWydHQ0fmpyR'
        type: 'function'
    function: [1×1 struct]
後はこのロジックをエージェント型ループに統合するだけです:
toolRequest = completeOutput.tool_calls(1).function
toolRequest = struct with fields:
         name: 'primeSequence'
    arguments: '{"n":10,"type":"Eisenstein"}'
output = callTool(client,toolRequest)
output = "[2,5,11,17,23,29,41,47,53,59]"

 

以上の流れを実行してみた動画をご覧ください。MATLAB で MCP クライアントを作成し、接続された MCP サーバーからツールを呼び出すために LLM を使用する方法を確認できます。

 

コードはこちらで確認できます: https://github.com/mathworks/MATLAB-AI-Blog/tree/main/matlab-mcp-client-on-github

 

|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.