CatoクラウドをAIで操作するMCPサーバの解説とユースケース

本記事は 夏休みクラウド自由研究2025 8/7付の記事です

2025年6月、Cato クラウドを AI を通じて操作するための MCP サーバの提供が開始されました!

Meet Cato’s MCP Server: A Smarter Way to Integrate AI Into Your IT & Security Processes 
Cato’s Model Context Protocol (MCP) is now available. It lets AI agents query your Cato environment using natural langua...

本ブログ記事では、Cato の MCP サーバが一体どういうものなのか、現時点で何ができるのかについて、詳しく見て行こうと思います。

そもそも MCP とは

生成 AI や LLM (大規模言語モデル) の技術開発の進展が非常に早い昨今、AI エージェントという文脈の中で MCP (Model Context Protocol) というものが賑わっています。

MCP は、2024年11月に Anthropic 社 (Claude という LLM の開発・提供を行っている会社) が発表したアプリケーションプロトコルです。

Model Context Protocol - Model Context Protocol
The open protocol that connects AI applications to the systems where context lives

様々なシステムや機能を AI に組み込むための標準的な仕組み、といった感じでイメージすると良いと思います。MCP について解説した記事は既に世の中で多く書かれていますので、本ブログ記事ではこの程度の説明に留めることとします。

以降では、本ブログ記事のテーマである Cato の MCP について解説していきます。

Cato MCP の利用イメージ

まず、Cato の MCP のイメージを掴むために次の画像をご覧ください。

Cato の MCP サーバ実装を LibreChat という AI チャットソフトウェアに組み込んで実際に利用してみた例です。

 

 

 

 

ご覧のように、AI との会話を通じて Cato のサイトの情報を確認したり、ネットワーク品質の状況を確認したりできます。他にも最後の画像で AI が言っている通り、リモート接続ユーザの情報を確認することもできます。

Cato に関する管理・運用は通常は CMA (Cato Management Application) の Web 画面を通じて行いますが、任意の AI と組み合わせて会話ベースで行えるようになったというのが Cato の MCP の登場による変化です。

Cato MCP の機能

Cato の MCP サーバは、ソースコードとして次の GitHub リポジトリで公開されています。

GitHub - catonetworks/cato-mcp-server: This repository provides a local mcp-server for Cato Network's public GraphQL API
This repository provides a local mcp-server for Cato Network's public GraphQL API - catonetworks/cato-mcp-server

本ブログ記事執筆時点の最新版である v0.9.0 では、以下の14個の機能 (Tool) が提供されています。(ソースコードも確認しました。)

機能 (Tool) 概要
entity_lookup サイト、VPN ユーザ、管理者ユーザなどの一覧を取得する。
取得できる対象は EntityType に記載されているもの。
sites_by_location サイトの地理情報や PoP 接続情報を取得する。
site_details サイトの詳細情報や各種ステータスを取得する。
site_types サイトの接続タイプ (Socket, IPsec, vSocket など) を取得する。
socket_versions 各サイトの Socket のバージョンを取得する。
wan_connectivity サイトの WAN 側のステータスや PoP との間のトンネルのステータスを取得する。
user_details リモート接続中のユーザの接続状態、デバイス名、OS名などを取得する。
user_connection_details リモート接続中のユーザの PoP との接続に関する詳細情報を取得する。
user_software_versions リモート接続中のユーザの Cato Client のバージョン情報を取得する。
site_network_health ネットワーク品質の悪いサイトを抽出し、その RTT、ジッタ、パケットロス率を取得する。
top_bandwidth_consumers トラフィックの多いサイトやリモート接続ユーザを抽出し、その通信量を取得する。
metrics_timeseries_query サイトやリモート接続ユーザのネットワークに関する時系列データを取得する。
取得できるメトリクスは TimeseriesMetricType に記載されているもの。
metrics_site_summary サイトのネットワークに関する全てのメトリクスの集計データを取得する。
annotation_event_counter サイトのネットワークインターフェースで発生した変更イベントの回数を取得する。
取得できるイベントは AnnotationType に記載されているもの

これら機能を、AI との会話の中で利用できます。

先ほどの画面スナップショットの場合、私が AI に依頼したチャットの内容をもとに site_details や site_network_health の機能 (Tool) が実行され、その実行結果に応じて AI がわかりやすく回答してくれていました。

少しだけ内部の仕組みの話をすると、次のような流れで AI は動作しています。

  1. AI チャットソフトは、ユーザが入力した内容と Cato の MCP で提供されている機能 (Tool) の情報を LLM に渡す
  2. LLM は、渡された情報を解釈し、どの機能 (Tool) をどのようなパラメータで実行するか決定し、AI チャットソフトに実行を指示する
  3. AI チャットソフトは、LLM の指示に従い Cato の MCP の機能 (Tool) を実行する
  4. Cato の MCP は、渡されたパラメータをもとに何らかの処理 (Cato の API の実行) を行い、結果を AI チャットソフトに返す
  5. AI チャットソフトは、MCP の実行結果を LLM に渡す
  6. LLM は、MCP の実行結果や初めに渡された情報をもとに文章を生成し、AI チャットソフトに返す

AI チャットソフト (MCP クライアントとして振る舞う) や Cato の MCP サーバを介して、Cato と LLM を連携できたということですね。

Cato MCP で何ができるか

残念ながら現時点ではサイトやユーザに関する限られた情報の取得しか行えませんが、次のようなことであれば AI との会話を通じて行えるのではないでしょうか。

  • 日常的な健全性チェックに関する運用
    • 例)毎朝9時に、全サイトのステータス、接続先 PoP 変更イベントの発生有無、品質の悪いサイトの有無などを確認する。
  • 障害・異常発生時のトラブルシューティング
    • 例)特定のサイトで通信が遅いという報告があったとき、そのサイトの直近のステータス、トラフィック、RTTやパケットロスなどの指標を取得し、どのような状況がいつから発生しているか確認する。
  • リモート接続ユーザのサポート
    • 例)リモート接続中のユーザからネットワークの不調に関する問い合わせがあったとき、ユーザのOS、クライアントバージョン、トラフィックの各種指標を取得して状況を把握する。
  • ソフトウェアバージョンアップに関する運用
    • 例)新しいバージョンの Cato クライアントが提供されたとき、古いバージョンを利用しているユーザを抽出する。

さらに、インシデント管理システムや各種コミュニケーションツールなどが提供する MCP サーバも AI に統合すれば、AI との会話ベースで Cato の管理情報と様々なシステムを連携させることも可能になるはずです。

従来こういったことを行おうとすると、各システムの API を活用して連携させる仕組みを頑張って開発する必要がありましたが、MCP という標準化されたインターフェースが登場したことで AI を通じて容易にファジーに連携できるようになってきました。Cato の MCP により連携できるようになったのは、非常に喜ばしいことです。

 

今はまだサイトやユーザの設定変更を行えず、セキュリティ設定や各種イベント情報の取得もできませんが、将来的に MCP サーバの機能が追加されて様々な操作が行えるようになっていくことを期待しています。

特に、各種イベント情報の取得ができるようになれば、AI を SOC (Security Operation Center) チームの専門家と見立てて、会話ベースでのセキュリティ運用といったことも実現できるようになるのではと妄想しています。

参考:LibreChat を用いた Cato MCP 利用環境の構築

Cato の MCP サーバは任意の MCP クライアント環境で利用でき、公式のドキュメントには Claude Desktop を利用する方法が記載されています。ただ、今回は MCP クライアントとして LibreChat という AI チャットソフトウェアを利用しましたので、参考としてその環境構築方法について記載します。

今回の環境は、Amazon EC2 で起動した Amazon Linux 2023 のインスタンス上に構築し、LLM として Amazon Bedrock で提供される Claude を利用しました。

自マシンからのみアクセスすることを想定した最小限の構成であり、この環境を他の人に公開する際は他にも考慮すべきことが多々あるという点はご了承ください。

Bedrock の基盤モデルの有効化

Amazon Bedrock にて LLM の基盤モデルを利用できるようにする必要があり、その手順は こちらのページ に記載されています。

今回は Anthropic 社の Claude 3.7 Sonnet を利用しました。

EC2 インスタンスの作成

Amazon EC2 で Amazon Linux 2023 のインスタンスを作成しました。

メモリは最低でも4GB以上のものにする必要がありました。(メモリが2GBだと、後述の LibreChat のセットアップの中でメモリ不足が発生しました…。)

この EC2 インスタンスの中から Bedrock のモデルを実行することになるので、インスタンスのロールにて “AmazonBedrockLimitedAccess” ポリシーをアタッチする必要もあります。

以降、EC2 インスタンスに SSH 接続して作業していきます。

MongoDB のセットアップ

LibreChat で必要となる MongoDB をセットアップします。

MongoDB のセットアップ手順は こちらのページ に記載されており、概ねその手順に従いました。

sudo vim /etc/yum.repos.d/mongodb-org-8.0.repo
(※以下の内容でファイルを作成する)
---
[mongodb-org-8.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2023/mongodb-org/8.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-8.0.asc
---

sudo dnf install -y mongodb-org
sudo systemctl start mongod

LibreChat のセットアップ

LibreChat のセットアップまで行います。

セットアップ手順は こちらのページ に記載されており、概ねその手順に従ってセットアップしました。

sudo dnf install git
git clone https://github.com/danny-avila/LibreChat.git -b v0.7.8
cd LibreChat
cp .env.example .env

sudo dnf install nodejs npm
npm ci
npm run frontend

上記により、LibreChat のビルドまで完了します。

手順のページでは npm run backend というコマンドの実行が書かれていますが、これを実行すると LibreChat のサーバアプリケーションが起動します。ただ、Cato の MCP を利用するための設定がまだなので、起動はその設定後に行います。

Cato MCP サーバのセットアップ

Cato MCP サーバの実装はローカルで実行する形式で用意されていますので、これをセットアップします。

sudo dnf install git

git clone https://github.com/catonetworks/cato-mcp-server.git -b v0.9.0
cd cato-mcp-server
npm install
npm run build

この MCP サーバは何かが常時起動しているわけではありませんので、ビルドまで完了すればOKです。

LibreChat の設定と起動

LibreChat のディレクトリにて、設定ファイルの変更・作成を行います。

vim .env
(※以下の設定を追加・変更する)
---
HOST=0.0.0.0
ENDPOINTS=bedrock,agents
BEDROCK_AWS_DEFAULT_REGION=ap-northeast-1
BEDROCK_AWS_MODELS=apac.anthropic.claude-3-7-sonnet-20250219-v1:0
SEARCH=false
---

vim librechat.yaml
(※以下の内容でファイルを作成する)
---
version: 1.2.1

mcpServers:
  cato:
    type: stdio
      command: node
      args: ["/home/ec2-user/cato-mcp-server/build/index.js"]
      env:
        CATO_API_HOST: api.catonetworks.com
        CATO_ACCOUNT_ID: "アカウントID(4桁または5桁の数字)"
        CATO_API_KEY: "APIキー"
---

設定したら、次のコマンドを実行して LibreChat の Web アプリケーションを起動します。

npm run backend

3080 番ポートで Web アプリケーションが起動しますので、あとはブラウザからアクセスしてユーザを作成すれば、AI チャットで Cato MCP を利用できるようになります。

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