2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Copilot + MCP で Cisco Support APIs を叩いて、Cisco の Bug 情報検索を効率化する

2
Last updated at Posted at 2026-08-14

はじめに

先日同僚がClaude + MCPでCisco Support APIsを使用する手順を記事にまとめていました。

私もこれを試してみたところ、かなり便利に使える事が分かりました。
特にBug Searchは不具合を探す時にどのようなキーワードで探すと良いかいつも悩ましかったのが、LLMに任せると自然言語で質問すればLLMが色々とキーワードを考えて調べてくれるのでとても楽です。
沢山出てくる候補の中から影響しそうなものを見つけ出すのも、数百件の不具合が並んだExcelと睨めっこしなくてもLLMが一瞬で候補を絞り込んでくれます。

しかし私はM365 Copilotアプリをメインに使っており、できればここから使えるようにしたい。
というわけで、今回はM365 Copilotアプリ + MCPでCisco Support APIsを使用できるようにしてみたので、手順などを共有したいと思います!

想定構成

まずM365 Copilotアプリは直接MCPを使用する事はできず、Copilot Studioによるエージェントの作成が必要です。
また、このエージェントはクラウド上で動作するので、MCPサーバーもそこから触れる形に作る必要があります。

そこで今回はAzure上でApp Serviceを使ってMCPサーバーを作ることにしました。
Cisco Support MCP ServerDocker Deployment Guideの手順が提供されているので、これを利用すれば容易に構築が可能です。
通常Azure上でのMCP Server構築はContainer Appsを使う事が多いとは思いますが、App Serviceならリソースプロバイダの登録が不要で共同作成者(Contributor)ロールの一般ユーザーでも作りやすいので、今回はこちらを選択しました。
App Serviceを使うにあたり、Container Appsは使用量に応じて費用が発生しますが、App Serviceは使用状況にかかわらず一定の費用が発生するという点に注意が必要です。

なおCisco Support APIsを使用するには事前にAPIの利用登録が必要で、これはCiscoアカウントに紐づきます。
今回は私個人のCiscoアカウントでAPIの利用登録を実施しているので、作成したMCPサーバーも私だけが使うことを想定しています。
APIの利用登録方法については上記Claudeの記事と全く同じ内容になるので省略し、本記事ではAzureでの作業から記載していきます。

Azure CLIの操作

Azureでの作業は再現しやすいようCloud ShellのBashでAzure CLIを使って実施します。

1. 変数の設定

作業をシンプルにするため、まずは以降の作業で使用するパラメータを変数として定義しておきます。

RG="<リソースグループ名>"
LOCATION="japaneast"

# 任意の名前(グローバルユニーク)
PLAN="plan-mcp-cisco"
APP="app-mcp-cisco-$RANDOM"
# MCPサーバーのFQDNは次のようになる: <APP>.azurewebsites.net
URL="https://${APP}.azurewebsites.net"
# Docker Deployment Guideに書かれているコンテナの場所
IMAGE="ghcr.io/sieteunoseis/mcp-cisco-support:latest"

# Cisco API クレデンシャル
CISCO_CLIENT_ID="<Cisco API Consoleで取得したKEY>"
CISCO_CLIENT_SECRET="<Cisco API Consoleで取得したClient Secret>"

# Bearer Token(Copilot Studio からの認証に使用)
# 今回アクセス制御にはBearer Tokenを利用する事にします。
# 64文字のランダム値を生成
MCP_BEARER_TOKEN=$(openssl rand -hex 32)
echo "$MCP_BEARER_TOKEN"   # ↓ 出力を控えておく

# 有効化する Cisco API(必要に応じて変更)
SUPPORT_API="bug,case,eox,psirt,product,software"

※ $MCP_BEARER_TOKENの値は後でCopilot Studioでの設定時に必要となるので控えておいてください

2. リソースグループの作成

リソースグループの用意が無い場合、新規に作成します。
※ 今回は作成済のリソースグループを使用したのでこの手順は実施していません。

az group create \
  --name "$RG" \
  --location "$LOCATION"

3. App Service Plan (Linux) を作成

App Service Planを作成し、料金プランを決めます。
SKUの選択は Free/Shared だと後述の Always On が有効にできないので、今回はAlways Onが有効化できる最低ラインのB1を選択します(B1は東日本リージョンLinuxで概ね3円/時程度(執筆時点))。

az appservice plan create \
  --name "$PLAN" \
  --resource-group "$RG" \
  --location "$LOCATION" \
  --is-linux \
  --sku B1  #always onにしたいのでB1を選択

お試しでの検証用途であれば一旦Freeでも構いません(その場合は後述のAlways Onの有効化はスキップ)。
お試し環境をB1で作る場合、試し終わったら忘れずApp Service Planを削除しておきましょう。
Web Appを停止しただけでは課金は止まらないのでご注意ください。

4. Web App for Containers を作成

先ほど作成したApp Service Plan上に、Web Appを作成します。
コンテナイメージは常にlatestを使うよう$IMAGEで指定しているので、Web Appをリスタートするとコンテナとして都度最新のイメージがpullされて起動できるようになります。

az webapp create \
  --resource-group "$RG" \
  --plan "$PLAN" \
  --name "$APP" \
  --container-image-name "$IMAGE"

5. アプリケーション設定(環境変数)

APIのクレデンシャル、有効化するAPI、Bearerトークン等を設定します。
コンテナは3000番ポートでリッスンしているので、WEBリクエストは3000番ポートに転送します。

az webapp config appsettings set \
  --resource-group "$RG" \
  --name "$APP" \
  --settings \
    WEBSITES_PORT=3000 \
    CISCO_CLIENT_ID="$CISCO_CLIENT_ID" \
    CISCO_CLIENT_SECRET="$CISCO_CLIENT_SECRET" \
    SUPPORT_API="$SUPPORT_API" \
    MCP_BEARER_TOKEN="$MCP_BEARER_TOKEN" \
    NODE_ENV=production

6. Always Onを有効化

App Serviceはデフォルトだと20分間リクエストが無ければ自動的にアンロードされてしまいます。
お試しであればそれでも良いのですが、日々の業務利用で使うたびにApp Serviceのロードを待つのは煩わしいのでAlways Onを有効化し、いつでもすぐ使えるようにしておきます。
App Service PlanのB1は固定料金なので、B1を選択している状態ではAlways Onを有効化してもコスト的なデメリットはありません。

az webapp config set \
  --resource-group "$RG" \
  --name "$APP" \
  --always-on true

7. コンテナの起動確認

# ログをストリーミング
az webapp log tail --resource-group "$RG" --name "$APP"

上記コマンドを実行してしばらくするとコンテナ起動時のログ出力が得られるので、State: Startedの出力が確認出来たらCtrl+Cで抜けます。以下が実行例です。

実行例
satoshi_osuga [ ~ ]$ az webapp log tail --resource-group "$RG" --name "$APP"
2026-08-10T01:08:15  Welcome, you are now connected to log-streaming service.
Starting Log Tail -n 10 of existing logs ----
(中略)
2026-08-10T01:07:36.0134312Z Site started.
2026-08-10T01:07:36.0140287Z State: Started, Action: None, LastError: , LastErrorTimestamp: 01/01/0001 00:00:00, LastErrorDetails: , Details: Site started at 08/10/2026 01:07:36 (UTC), DetailsLevel: INFO
^C
satoshi_osuga [ ~ ]$ 

次にcurlで/healthにアクセスし、statusがhealthy、HTTPステータスコードが200である事を確認します。

実行例
satoshi_osuga [ ~ ]$ curl -w '\nHTTP status: %{http_code}\n' "$URL/health"
{"status":"healthy","timestamp":"2026-08-10T01:09:01.061Z","activeTransports":0,"server":"mcp-cisco-support-sse"}
HTTP status: 200

※ 応答で"server":"mcp-cisco-support-sse"となっていますが、Copilot Studioは2025年8月以降MCPでSSEトランスポートをサポートしなくなったので、Copilotとの連携には Streamable HTTP エンドポイント(/mcp)を使用します

8. MCP Inspectorでツール一覧が取得できるか確認

これでツールの一覧が得られれば、MCPサーバーは問題なく動作していると判断できます。

npx @modelcontextprotocol/inspector --cli \
  ${URL}/mcp \
  --transport http \
  --header "Authorization: Bearer $MCP_BEARER_TOKEN" \
  --method tools/list

Copilot Studioでのエージェント作成

ここまでの作業でMCPサーバーの構築は完了です。
次はCopilot Studioでエージェントを作成し、このMCPサーバーと接続します。

1. エージェントの作成とMCPサーバーの接続

エージェント作成画面で任意の名前を付け、ツールの追加で『モデル コンテキスト プロトコル』を追加します。
エージェントへのツール追加

MCPサーバーの名前や記述は任意で、サーバーURLは先ほど作ったMCPサーバーのエンドポイントを入力します。
MCPサーバーの定義
認証は今回Bearerトークンなので『APIキー』を選択し、『ヘッダー名』を『Authorization』とします。

最初は未接続になっているので、新しい接続を作成します。
MCPサーバー定義直後

下の入力欄にメモしてあったBearerトークンを入れるのですが、入力方法に注意してください。
『Bearer XXXXXXXXXXXX』のような形で、先頭にBearer を付ける必要があります。
Bearerトークンの入力
接続された事を確認出来たら、『追加と構成』を実行します。
接続が完了している状態

2. エージェントのモデル選択

私の環境ではデフォルトだとエージェントのモデルがClaude Sonnetになっていたのですが、あまり期待する結果が得られなかったのでOpusに変更します。
エージェントのモデルを選択

3. 使用する資格情報の選択

M365 Copilotアプリから呼び出す際に毎回接続を求められるのを避けるため、『ツール』の設定で『使用する資格情報』は『作成者提供の資格情報』にしておきます。
使用する資格情報の選択

4. チャネルの追加

M365 Copilotアプリから使うため、『チャネル』で『Microsoft 365 と Microsoft Teams』を追加し、『公開』を実行します。
チャネルの追加

一旦チャネルの詳細を閉じて、改めて『Microsoft 365 と Microsoft Teams』を開くと『Microsoft 365 でエージェントを表示する』が有効になっているので実行します。
Microsoft 365 でエージェントを表示する

ここで『追加』を実行する事で、M365 Copilotアプリからも利用可能になります。
M365へのエージェントの追加

M365 Copilotアプリで実行

以上で構築作業は完了です。
M365 Copilotアプリを起動してみると、エージェントの選択肢に今回作成したエージェントが追加されているはずです。
エージェントとの対話
もし追加されていない場合は『その他のエージェント』で検索してみてください。

試しに不具合を調べてみると、以下のようにBug Searchで調べて回答してくれました。
不具合調査の実行例

このCisco Support MCP ServerはEOL情報の検索など他にも幾つかの機能を持っているので、このエージェント一つで様々な事を調べる事が出来ます。
EOL調査の実行例

まとめ

本記事ではCisco Support MCP ServerがM365 Copilotアプリでも利用可能な事を具体的な手法と併せて紹介させていただきました。
多くのメーカーで、必要な情報はサイトにログインしないと得られない仕組みになっている事が多いので、このようにAPIで情報が取得可能になっておりMCP化できているのは大変助かります。
AI連携が当たり前になっている昨今、サポート関連だけでなくより多くのコンテンツがAPI対応していっていただけることを期待しています!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?