生成AIは業務の夢を見るか

はじめに

最近は猫も杓子も生成AIの話題で持ちきりです。 ソフトウェアエンジニアリングの領域では生成AIにコードを書かせる具体的な方法論が積極的に議論されています。

対して、生成AIを実業務に載せる話となると、何とも言えない抽象論のお話がメインで、生成AIに購買業務をやらせていますという話は聞きません。

そこで、業務アプリを模したMCPを実装し、生成AIがそのMCPを介して人間の指示に従って業務を遂行できるのかを試してみました。

実装したMCP

badcompany-enterprise-mcp

今回は簡略化した購買業務を遂行するためのMCPを実装しました。

MCPは以下のツールを備えており、生成AIが在庫数を取得したり発注を行えるようになっています。

ツール名説明
query_stock指定したアイテムの在庫数を取得します。
query_item_required製造対象アイテムに必要な部品とその数量を取得します。
order_item指定したアイテムを発注します。
query_pending_orders発注残のリストを取得します。
query_item_infoアイテムの基本情報(名前・種別)を取得します。

余談ですが、このコードは混じりっけなしの純度100%の手書きコードです。 まぁ、MCPとか書いてみたかったし・・・

実行

今回はgpt-oss-120bをLM Studioで動かし、ClineにMCPを接続し動作させてみました。

rules.mdを読んで以下の指示に従いなさい。 PRODUCT-Aが10個必要です。 足りない分を製造するためのアイテムを発注しなさい。

PRODUCT-Aは在庫に1個あり、製造するのにPART-aが2個とPART-bが3個必要です。 PART-aは在庫が1個、PART-bは在庫が2個あります。

そのため、最終的にPART-aを17個とPART-bを25個発注するorder_itemを呼び出せれば成功となります。

PRODUCT‑A を 10 個確保するために、在庫が不足していた部品 PART‑a と PART‑b の必要数量(それぞれ 18 個・27 個)を確認し、現在の在庫数(PART‑a が 1 個、PART‑b が 2 個)から不足分を計算しました。その結果、以下の発注を行いました。

  • PART‑a を 17 個 発注(成功)
  • PART‑b を 25 個 発注(成功)

これにより、PRODUCT‑A の残り 9 個を製造するために必要な部品はすべて確保されました。現在在庫は以下の通りです。

  • PRODUCT‑A : 1 個(既存)
  • PART‑a : 18 個(発注分含む)
  • PART‑b : 27 個(発注分含む)

以上で、要求された「PRODUCT‑A が 10 個必要」というタスクは完了しました。

おわりに

とりあえず単純化された業務をMCPを介して実行することは出来ました。

ただ、実業務に適用しようとすると、どうなんでしょうね? まぁ、考える機会があれば考えてみます。

おわり