2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CCoE AIチャット - ②MCPを使用してみる

Last updated at Posted at 2025-08-21

CCoE AIチャット構築

概要

CCoEへの問い合わせや申請に対応してくれるAIチャットを作成してみます。
主な機能は以下の通りです。

  • AWSに関連する質問に回答
  • AWSアカウントの発行

3回に分けて構築していきます。

1.基本的なAIチャットの構築
2.MCPを使用して、AWSドキュメントから情報を回答可能に ← 今回
3.AWSアカウントの発行機能を追加

今回はMCPを使って、AWSドキュメントから情報を取得できるようにします!

1.基本的なAIチャットの構築はこちら

MCPインストール

pythonのモジュール、mcpをインストールします。
requirements.txtに追記しましょう。

flask
flask-cors
Flask-Cognito
boto3
aws-wsgi
pillow
requests
python-jose
authlib
werkzeug
waitress
python-dotenv
strands
strands-agents-tools
mcp
uv

以下のコマンドでインストールします。

pip install -r requirements.txt

MCPの記述を追加する

app/routes/main.pyにmcpの記述を追加します。

# app/routes/main.py
from flask import Blueprint, render_template, session, jsonify, request
from app.auth.app import login_required
import logging
import uuid
import datetime
import boto3
import os
from strands import Agent
from strands.models import BedrockModel
from strands.tools.mcp import MCPClient
from mcp import StdioServerParameters, stdio_client
from mcp.client.streamable_http import streamablehttp_client
from mcp.server import FastMCP

省略

@main_bp.route('/chat', methods=['POST'])
@login_required
def chat():
    try:
        print("Chatting...")

        省略

        # strands agentsを定義
        model_id = MODEL_ID
        model = BedrockModel(model_id=model_id, max_tokens=1000, temperature=0.7)
        # Linux環境では以下をコメントアウトしてください
        stdio_mcp_client = MCPClient(lambda: stdio_client(
            StdioServerParameters(
                command="uvx", 
                args=[
                    "--from", 
                    "awslabs.aws-documentation-mcp-server@latest", 
                    "awslabs.aws-documentation-mcp-server.exe"
                ]
            )
        ))

        # Linux環境では以下のコメントアウトを外してください
        # stdio_mcp_client = MCPClient(lambda: stdio_client(
        #     StdioServerParameters(
        #         command="uvx", 
        #         args=["awslabs.aws-documentation-mcp-server@latest"]
        #     )
        # ))
        with stdio_mcp_client:
            tools = stdio_mcp_client.list_tools_sync()
            agent = Agent(
                model=model,
                messages=conversation_history,
                system_prompt=SYSTEM_PROMPT,
                tools=tools,
            )
            response = agent(user_message)
            response_text = response.message['content'][0]['text']

        省略

上記のような形です。
該当箇所だけ抜き出すと以下のコードになります。

from mcp import StdioServerParameters, stdio_client
from mcp.client.streamable_http import streamablehttp_client
from mcp.server import FastMCP
from strands.tools.mcp import MCPClient
from strands.models import BedrockModel
from strands import Agent

model_id = "apac.anthropic.claude-sonnet-4-20250514-v1:0"
model = BedrockModel(model_id=model_id, max_tokens=1000, temperature=0.7)
system_prompt = """
# AWS Cloud Center of Excellence (CCoE) アシスタント
## 役割
あなたはAWS Cloud Center of Excellence (CCoE) の専門アドバイザーです。組織のクラウド戦略、ガバナンス、ベストプラクティスの実装を支援します。
## 専門領域
- クラウド戦略策定と実行
- AWS Well-Architected Framework
- クラウドガバナンスとコンプライアンス
- コスト最適化とFinOps
- セキュリティとリスク管理
- 組織変革とスキル開発
- クラウド移行戦略
- 運用モデルの設計
## 対応方針
1. **戦略的視点**: ビジネス価値とROIを重視した提案
2. **実践的アプローチ**: 実装可能で段階的な解決策を提示
3. **ベストプラクティス**: AWS公式ガイダンスと業界標準に基づく助言
4. **リスク考慮**: セキュリティ、コンプライアンス、運用リスクを評価
5. **組織適応**: 企業規模や業界特性を考慮した提案
## 応答形式
- PoCなので回答は最小限に済ませてください
## 制約事項
- 具体的な設定値や機密情報は提供しない
- 組織固有の詳細情報が必要な場合は追加質問を行う
- 最新のAWSサービス情報については確認を推奨する
"""

# Connect to an MCP server using stdio transport
stdio_mcp_client = MCPClient(lambda: stdio_client(
    StdioServerParameters(
        command="uvx", 
        args=[
            "--from", 
            "awslabs.aws-documentation-mcp-server@latest", 
            "awslabs.aws-documentation-mcp-server.exe"
        ]
    )
))
try:
    with stdio_mcp_client:
        tools = stdio_mcp_client.list_tools_sync()

        agent = Agent(
            model=model,
            system_prompt=system_prompt,
            tools=tools,
        )
except Exception as e:
    print(e)

WindowsとLinux/macでMCPクライアントの記述が変わるので注意が必要です。(Windowsでやっている方が少なく結構ハマってしまいました、、)
参考:https://strandsagents.com/latest/documentation/docs/user-guide/concepts/tools/mcp-tools/#mcpclientinitializationerror

結局はapprunnerなのでLinuxになるので、みなさんはDockerを使うか、WSLでLinuxで動かすことをお勧めします。

チャットをしてみる

では早速チャットをしてみます。
最新の情報がないと分からなそうなものでチャットをしてみましょう。

質問は「Bedrock AgentCoreとはなんですか?」にしてみました。

MCPありの回答は以下の通りです。

## Amazon Bedrock AgentCore とは

*Amazon Bedrock AgentCore は、プレビュー段階のAWSサービスで、エンタープライズグレードのセキュリティと信頼性を持つAIエージェントの構築・デプロイ・運用を支援するサービスです。

### 主な特徴
- フレームワーク非依存: LangGraph、CrewAI、Strands Agentsなど、あらゆるオープンソースフレームワークに対応
- モデル非依存: 任意のAIモデルを使用可能
- エンタープライズ対応: スケール、信頼性、セキュリティを重視した設計

### 構成サービス(モジュラー設計)

1. AgentCore Runtime
- サーバーレスでセキュアなエージェント実行環境
- 高速コールドスタート、セッション分離機能

2. AgentCore Identity
- エージェント用のアイデンティティ・アクセス管理
- 既存のIDプロバイダーとの統合

3. AgentCore Memory
- 短期・長期メモリ管理機能
- エージェント間でのメモリ共有

4. AgentCore Code Interpreter
- 分離されたサンドボックス環境でのコード実行

5. AgentCore Browser
- セキュアなブラウザ機能(詳細は切り捨てられています)

### CCoE観点での評価
- 戦略的価値: オープンソースの柔軟性とエンタープライズの要件を両立
- リスク: プレビュー段階のため、本番利用は慎重に検討が必要
- 推奨*: PoC段階での評価から開始し、GA後の本格導入を検討

せっかくなので比較してみましょう。
MCPなしの回答は以下の通りです。

*Amazon Bedrock AgentCoreは、Amazon Bedrockの一部として提供される、AIエージェントの中核機能を担うコンポーネントです。

## 主要機能
- エージェント実行エンジン: AIエージェントのワークフロー管理
- タスク分解: 複雑な要求を実行可能なタスクに分割
- ツール統合: 外部APIやAWSサービスとの連携
- コンテキスト管理: 会話履歴と状態の維持

## CCoE観点での価値
- 自動化推進: 運用タスクの自動化によるコスト削減
- ガバナンス強化: 標準化されたエージェント実行基盤
- スキル拡張*: 開発チームの生産性向上

## 推奨検討事項
1. 組織のユースケース特定
2. セキュリティ要件の確認
3. 既存ツールチェーンとの統合計画
4. コスト影響分析

最新の機能詳細については、AWS公式ドキュメントで確認することを推奨します。

全然違いますね!!
MCPを使うことで、最新の情報も回答してくれるようになりました!

まとめ

今回はMCPを使って、AWSドキュメントから情報を取得できるようにしました。
ほんと簡単にできちゃいますね!
次回は自作のツール(アカウント発行)を利用できるようにしてみます!

弊社では一緒に働く仲間を募集中です!

現在、様々な職種を募集しております。
カジュアル面談も可能ですので、ご連絡お待ちしております!

募集内容等詳細は、是非採用サイトをご確認ください。

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?