
GenU の MCP チャットが応答しない!切り分けのはじめかた
はじめに
GenU(Generative AI Use Cases)の MCP チャット機能を利用時にレスポンスが返ってこないことないでしょうか。 「MCP サーバーと接続しています。時間がかかる場合があります。そのまま待機してください...」 というメッセージが表示されたままいつになっても応答がないことがありました。
AWS 初学者の方でも切り分けできるようにキャプチャ多めに紹介します。
GenU とは
GenU(Generative AI Use Cases)は、AWS 上で動作する生成 AI アプリケーションです。チャットボットをはじめ、様々なユースケースを試せます。本件のバージョンはv4.3.2
です。
GenU の MCP チャット機能
MCP(Model Context Protocol)は、生成 AI モデルが外部ツールやデータソースと連携するためのプロトコルです。GenU では MCP チャット機能を通じて、MCP サーバーを利用できる機能が実験的に提供されています。
お困りの背景
MCP チャットのトラブルシューティングが難しい
MCP サーバーの設定を行い MCP チャットを使ってみました。すると、、、「MCP サーバーと接続しています。時間がかかる場合があります。そのまま待機してください...」 と表示されたまま結果が返ってきません。エラーメッセージも表示されず、対応に困りました。
調べてみると、MCP チャットの実態は Lambda 関数でした。Lambda の実行ログを確認すれば切り分けできるので確認方法を紹介します。
MCP チャットの仕組みを理解する
MCP チャットの設定情報はどこで使われるのか
GenU の MCP サーバーの設定は、packages/cdk/mcp-api/mcp.json
という設定ファイルで定義されます。この設定ファイルに使用する MCP サーバーの設定を記述します。
{
"mcpServers": {
"paper_search_server": {
"command": "uvx",
"args": ["paper-search-mcp"]
}
}
}
記述内容は一般的な MCP サーバーの設定と同じです。ですが、現時点では GenU の MCP サーバー利用は制約事項が多いです。最新情報は以下のリンクを確認ください。
generative-ai-use-cases/docs/ja/DEPLOY_OPTION.md at main · aws-samples/generative-ai-use-cases
この設定ファイルは、コンテナイメージを使用した Lambda で実行される FastAPI ベースの Web アプリで利用されます。
そして、この Lambda は HTTPS のエンドポイント(Lambda Functions URL)を持っています。GenU の Web UI から MCP チャット利用時は Lambda のエンドポイントへリクエスト送り Lambda を実行する流れです。
というわけで、この Lambda の実行ログを確認できれば、MCP チャット利用時の状態がわかるということです。
MCP チャット利用時のエラー切り分け手順
1. AWS マネジメントコンソールにログイン
まず、AWS マネジメントコンソールにログインします。GenU をデプロイした AWS アカウントを使用してください。
2. Lambda 関数を探す
Lambda サービスのコンソールを開き、該当の関数を探します。検索ボックスに「McpApi」と入力すると見つかります。
3. Lambda 関数を確認
関数名をクリックして詳細画面を開きます。GenU では多くの Lambda 関数が作成されます。対象を間違えないよう、以下の点を確認してください。
- 関数名に McpApiMcpFunction が含まれている
- パッケージタイプが「イメージ」になっている
- 関数 URL が設定されている
4. CloudWatch Logs へアクセス
「モニタリング」タブをクリックし、「CloudWatch ログを表示」ボタンを押します。
5. ログストリームを確認
CloudWatch Logs の画面が開きます。チャットのやり取りごとに新しいログストリームが作成されます。最新のログストリームをクリックして内容を確認します。
6. 実行ログを確認
実行ログを確認できます。ここまでたどり着いて切り分けがはじめられます。
おまけ
CloudWatch Logs のログを CSV にしてエクスポートしました。
GenU の通常のチャットを利用し、エクスポートしたログを添付してログ解析を依頼しました。切り分け作業を生成 AI と進めていくのも良いのユースケースではないでしょうか。
今回は制限事項に引っかかる MCP サーバーの設定だったため、どうにか動かせないかと試していました。今のところ MCP サーバーの設定ファイルでは動作させるのはできませんでした。当然と言えば当然の結果でした。
まとめ
GenU の MCP チャットで応答がない場合の切り分け手順をまとめます。
- AWS コンソールにログイン
- Lambda 関数「McpApi」を検索
- モニタリングタブから CloudWatch Logs へ
- 最新のログストリームを確認
- 実行ログから原因を特定
おわりに
トラブルシュートのおかげで GenU に久しく触っていなかったので良い勉強の機会となりました。