前回、LabVIEW側でMCPサーバーを立てて、クライアントとなるClaude Desktopからアクセスし、LabVIEWのviを動かすための環境構築について紹介しました。
中心となるツールキット、LabVIEW MCP Server Toolkitには、他にもいくつか機能があるので、今回はこれらについて紹介していこうと思います。
なお、AIチャットサービスとLabVIEWとのやりとりの様子は具体的に動画としてみた方がその面白さがわかりやすいと思います。
本記事は、この動画のエッセンスを抜き出して紹介していますが、実際の様子はぜひ動画で確認してみてください。
MCP Server Toolkitの関数
公式のGitHubページで紹介されているのは、
- Tool
- Prompt
- Resource
の3つで、それぞれ役割があります。
これらすべてを使う必要はないですが、それぞれの機能を使う場合には、サーバーを開始する関数と、サーバーを閉じる関数の間で使用していきます。

Toolについて
こちらについては前回の記事で紹介した通り、「クライアント(Claude Desktop)が実際に値を渡して実行して結果を受け取れるvi」になります。
チャット形式の対話で命令を与える対象となる、操作したいviはどれもTool扱いにします。
Toolにするためのプログラムは簡単で、Add Toolの関数で、対象とするviを選ぶだけです。
複数の機能を持たせ、かつviの入れ替えを頻繁に行うような状態ではいちいちviのファイルパスで指定するのは面倒なので、特定のフォルダ(下の図ではToolsというフォルダ)にTool用のviをまとめていれ、その中身をフォルダをリスト関数で読み出すようにすれば、メインのviを変更せずともToolとしてのviを自由に増減できます。

viについては、記事後半で紹介している、使えるデータタイプの入力および出力を用意し、コネクタペーンを介して値をクライアントから受け取ったり返したりします。
特に出力側のコネクタペーンは1つ以上ないとクライアントからアクセスできなくなるようなので(サーバー自体にアクセスできなくなる)、Toolとするviには出力側のコネクタペーンがあることを意識して使用する必要があります。
Promptについて
こちらは、AIチャットに渡す文言としてのプロンプトのテンプレートを作成することで、毎回同じような文字を手入力しなくても手軽に決まったパターンのプロンプトを渡す機能です。
これもLabVIEW viとして用意することができます。
便利なのは、プロンプトの中に変数として文字列を使えることで、これにより、与えるテンプレート文字の一部をユーザーが毎回変更できる点です。
例えばファイルを開いて欲しい場合に「test.txtのファイルを開いて」と「result.txtのファイルを開いて」といった具合に異なるファイル名を指定するときに役立ちます。
Promptについては、Add Promptという関数を用いて、プロンプトとして定型文にしたい文字列を生成するようなviを指定します。

この状態でサーバーを実行、クライアントからアクセスすると、クライアント側のチャット入力画面にある「+」ボタンからプロンプトを呼び出して、特定の定型文の一部をユーザーが書き換えられるような形でダイアログが表れます。
こうすることで、毎回似たようなプロンプトをAIモデルに渡すけれど一部の文字列が少し異なる、といった反復的なプロンプトづくりも容易になります。

注意点としては、指定するviは文字列入力を複数持ち、文字列出力を一つ持つ形式にする、という使い方である必要がある点です。
こちらもコネクタペーンに入出力を設定しておくようにします。
Resourceについて
こちらはPromptと似ていて、チャットに特定の文言を与える機能ですが、Promptと違って変数を持ちません。
また、Add Resourceという関数を使うことになりますが、この関数に入力するのはtxtファイルです。このtxtファイルがそのままプロンプトとしてAIチャットに渡される、といったイメージです。
これは、AIチャットに、どのように返答してほしいか、といった、ユーザーとのやり取りを進めるうえでの文脈を指定するのに使用されるようです。

ただ、特別指定がない場合には別に使わなくてはいけない機能というわけでもなく、必要に応じて正しく文脈を理解させたうえで回答が欲しい時に利用できます。
MCP Server Toolkitで扱えるデータタイプ
Claude Desktopのようなクライアントからの指示を受けて、実際に特定の処理を実行するのはToolとして登録したviになります。
これらTool下のviに対して、入力、つまり制御器にクライアントから値を渡したり、出力、つまり表示器から値を読み取ってクライアントに返すことができるのですが、なんでもかんでも入出力ができるわけではないようです。
今後のバージョンによってまた変化はあるかもしれませんが、現在のところはそれぞれ次のようになっています。
入力側
クライアントからviに対して値を渡す場合に対象となるデータタイプは、
- 数値
- 文字列
- ブール
であり、これらの配列は扱えません。
コネクタペーンに定義できてしまえば複数の入力値をクライアントからviに渡すことができます。
もし配列データとして渡したいデータがある場合には、文字列で渡し、その際に配列データとわかるような形、例えば角括弧で[1,3,6]などとして、受け取ったvi側でこれを数値に変換する(例えばスプレッドシート文字列を配列に変換関数を使うなど)処理とすれば、間接的には配列を扱えるようになります。

出力側
クライアントに対してviから値を返す場合に対象となるデータタイプは
- 数値
- 文字列
- ブール
- ピクチャ
です。
出力側については、これらデータタイプのスカラー値だけでなく、例えば数値の配列なんかも扱うことができます。

面白いのはピクチャで、これをクライアントに渡すことで、画像の解析を行わせることができます。

データの量が多いとその分、クライアントから何か指示を出して結果を受け取るまでの時間が長くなります(厳密に確認してはいないですが、例えばクライアントとなるAIサービスで消費する「トークン」も多くなると思います)。
そのため、便利だからと言って巨大なデータを扱わせることはオススメしません。
本記事では、LabVIEW MCP Server Toolkitについて、以前の導入のための記事から少し踏み込んで、どういった機能があるかについてやどういうデータを扱えるかを紹介しました。
簡単なviから試してどこまでの命令でどういったことができるのかを確かめつつ、慣れていってもらえればと思います。
ここまで読んでいただきありがとうございました。


コメント