NigelからHTMLファイルを出力する

Tips

スポンサーリンク

この記事で扱っていること

  • NigelからHTMLファイルを出力する方法

を紹介しています。

LabVIEW 2026Q3のNigelから、LabVIEW+のライセンスが必要という条件付きではありますが、MCPサーバーを構成することができるようになりました。

これにより、Nigel単体では機能を持たないような処理も、外部のアプリケーションをMCPサーバーとして登録することで行えるようになります。

今回はそんな例として、NigelからHTMLファイルを生成させるという例を紹介します。

スポンサーリンク

どんな結果になるか

Nigelに対して何か質問等行って結果が返ってきたとします。

結果の内容はなんでもよく、例えばVIファイル同士を比較させた結果が得られているとします。

このままではNigel上でしか情報が残らないので、これをNigel外でも参照できるように、HTMLファイルを生成して、とお願いしたとします。

すると、HTMLファイルを、指定したパスに生成してくれます。

生成されるHTMLファイルの見た目などは特に指示しなくてもそれなりに見やすいように作ってくれますが、何か特定のフォーマットがある場合には、プロンプトの中にそれを書いたり、MCPサーバー用プログラムの中で指示しておきます。

プログラムの構造

MCPサーバーをNigelに構成すること自体は別の記事でやり方を紹介しているのでそちらをご覧ください。

以下では、MCPサーバーとして構成した、Pythonスクリプトの中身を紹介します。

from pathlib import Path

from mcp.server.mcpserver import MCPServer


mcp = MCPServer("html-writer-mcp")


@mcp.tool()
def write_html_file(
    html_content: str,
    output_path: str,
    overwrite: bool = False,
) -> str:
    """
    Write HTML source code to a specified HTML file.

    Args:
        html_content:
            Complete HTML source code.

        output_path:
            Full output path including the file name.
            Example:
            C:\\Users\\CE\\Desktop\\mcptest\\output\\report.html

        overwrite:
            If True, overwrite an existing file.
            The default value is False.

    Returns:
        Information about the generated HTML file.
    """

    if not html_content.strip():
        raise ValueError("html_content must not be empty.")

    if not output_path.strip():
        raise ValueError("output_path must not be empty.")

    path = Path(output_path).expanduser()

    if path.suffix.lower() not in (".html", ".htm"):
        raise ValueError(
            "The output file must have an .html or .htm extension."
        )

    if path.exists() and path.is_dir():
        raise ValueError(
            f"The specified output path is a directory: {path}"
        )

    if path.exists() and not overwrite:
        raise FileExistsError(
            f"The file already exists: {path}. "
            "Set overwrite to true to replace it."
        )

    path.parent.mkdir(
        parents=True,
        exist_ok=True,
    )

    path.write_text(
        html_content,
        encoding="utf-8",
    )

    resolved_path = path.resolve()
    file_size = resolved_path.stat().st_size

    return (
        "HTML file created successfully.\n"
        f"Output path: {resolved_path}\n"
        "Encoding: UTF-8\n"
        f"Characters written: {len(html_content)}\n"
        f"File size: {file_size} bytes"
    )


if __name__ == "__main__":
    mcp.run(transport="stdio")

ファイルの生成はそもそもできない?

この記事を書いている時点でのLabVIEWの最新バージョンは2026Q3で、Nigelについての機能もこの時点での機能を前提に書いています。

そもそもNigelがHTMLに限らずファイルを生成できないのかというとそうではなく、例えばコード生成の形でviファイルを生成することはできますし、別の機能を使うことで、csvファイルを生成することはできるようです。

そのため、今回のようなMCPサーバーが無くてもHTMLファイルをNigelが生成することができるようになる可能性はあります。

なお、HTMLファイルの直接の生成はMCPサーバー経由になっても、「HTMLのソースコード」はMCPサーバーを経由しなくても生成してくれます。

なので、そのソースコードをテキストファイルに貼り付けて、ファイルの拡張子をhtmlにすれば、HTMLファイルを用意すること自体はできます。

本記事ではNigelからHTMLファイルを生成させる方法を紹介しました。

MCPサーバーの構成が必要とはなりますが、これを応用すれば、HTMLファイル以外の形式のファイルの生成も可能になります。

そうした、MCPサーバー用のPythonスクリプトもNigelに書かせることはできるので、試してみてください。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました