Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なんだか流行ってるらしいMCPを Bedrockで使ってみよ〜

moritalous
April 23, 2025
76

なんだか流行ってるらしいMCPを Bedrockで使ってみよ〜

こちらのイベントで登壇した資料です。

春のBedrockアプデおさらい & Bedrock Engineer開発秘話スペシャル
https://jawsug.connpass.com/event/351485/

moritalous

April 23, 2025
Tweet

Transcript

  1. 自己紹介 森田 和明 富士ソフト株式会社 主任 / フェロー(アーキテクト・エバンジェリスト) AWS Ambassador(2023~) AWS Top

    Engineer(2020~) AWS All Certifications Engineer(2024) AWS Community Builder(2024) 2025更新待ち 生成AIに限らず、AWS関係のアーキテクトとエバンジェリストを やってます。Java Webアプリ開発出身->新しいもの好き X / Qiita / GitHub : @moritalous 2 Nova Canvas & Nova Reelで作成
  2. MCPではどんなものが扱えるの? 6 MCPで扱えるもの 1. Resources ファイルのイメージ(RAGで扱うドキュメントみたいな感じ) 2. Prompts プロンプト 3.

    Tools 外部ツール 4. Sampling サーバー側からクライアントに要求を出す(Human-in-the-Loop的な使い方と想像) 5. Roots サーバーが処理していい場所を指定(ルートディレクトリなど) いろいろありますが、MCP = Toolsで語られていることが多い気がします。
  3. MCP が重要な理由 8 FAQs(https://modelcontextprotocol.io/faqs)を日本語化して抜粋 AI アプリケーションユーザー向け 開発者向け MCPにより、AIアプリケーションは日常的 に使用する情報やツールにアクセスできる ようになり、より役立つものになります。

    AIが既に知っていることだけに限定され るのではなく、特定の文書、データ、作業コ ンテキストを理解できるようになります。 例えば、MCPサーバーを使用することで、 アプリケーションはGoogle Driveからの 個人文書やGitHubからのコードベースに 関するデータにアクセスし、よりパーソナラ イズされた文脈に関連したサポートを提供 できます。 MCPは、様々なデータソースにアクセスする必要があるAIアプリケーショ ンを構築する際の開発時間と複雑さを軽減します。MCPを使用すること で、開発者はカスタムコネクタを繰り返し作成するのではなく、優れたAIエ クスペリエンスの構築に集中できます。 従来、アプリケーションとデータソースを接続するには、各データソースと各 アプリケーションごとにカスタムの一回限りの接続を構築する必要がありま した。これにより、AIアプリケーションをGoogle DriveやSlackに接続し たい開発者はそれぞれ独自の接続を構築する必要があり、大量の重複作業 が発生していました。 MCPはこれを簡素化し、開発者がデータソース用のMCPサーバーを構築 することで、様々なアプリケーションで再利用できるようにします。例えば、 オープンソースのGoogle Drive MCPサーバーを使用することで、各開 発者がカスタム接続を構築する必要なく、多くの異なるアプリケーションが Google Driveからデータにアクセスできます。 とはいえ、現状はある程度ITがわかる人向けかな?
  4. AWSがMCPサーバーを公開しています 10 GitHubのawslabsにいろいろあります。 1. AWS MCP Servers https://github.com/awslabs/mcp a. AWS

    Documentation MCP Server b. Amazon Bedrock Knowledge Bases Retrieval MCP Server c. AWS CDK MCP Server d. Cost Analysis MCP Server e. Amazon Nova Canvas MCP Server f. AWS Diagram MCP Server g. AWS Lambda MCP Server h. AWS Terraform MCP Server 2. Log Analyzer with MCP https://github.com/awslabs/Log-Analyzer-with-MCP 3. Run Model Context Protocol (MCP) servers with AWS Lambda https://github.com/awslabs/run-model-context-protocol-servers-with-aws-lambda
  5. 13

  6. 14

  7. 15

  8. 16

  9. 17

  10. 18

  11. 19

  12. 20

  13. 21

  14. 呼び出しフロー(Bedrock Converse API) 24 mcp_tools = await session.list_tools () bedrock_tools

    = to_bedrock_tool (mcp_tools .tools) response = bedrock_client.converse( modelId="us.amazon.nova-pro-v1:0" , messages =messages, toolConfig ={"tools": bedrock_tools}, ) if "toolUse" in content: # ツール実行( MCPサーバーで実行される) tool_result = await session.call_tool ( name=content["toolUse" ]["name"], arguments =content["toolUse" ]["input"], ) messages .append( to_bedrock_tool_result ( tool_use_id =content["toolUse" ]["toolUseId" ], tool_result =tool_result , ) ) ①ツール一覧情報取得 ②Bedrock呼び出し(Tool Use) ③ツール実行 ④ツール実行結果
  15. Bedrockエージェントの場合 Amazon Bedrock Inline Agent SDKをインストール ※PyPIに公開されておらず、また、GitHub上もリポジトリの一部なので、インストールコマンドが特殊 26 uv add

    git+https://github.com/awslabs/amazon-bedrock-agent-samples#subdirectory=src/InlineAgent server_params = StdioServerParameters (command="docker", args=["run", "-i", "--rm", "mcp/time" ]) async def main(input_text : str): # MCPクライアントを作成 time_mcp_client = await MCPStdio.create(server_params =server_params ) try: time_action_group = ActionGroup ( name="TimeActionGroup" , description ="ユーザーが現在の時刻を取得し、時間を変換するのに役立ちます。 ", mcp_clients =[time_mcp_client ], ) await InlineAgent ( foundation_model ="us.amazon.nova-pro-v1:0" , instruction ="""あなたは、ユーザーからの問い合わせを解決する責任を負うフレンドリーなアシスタントです。 """, agent_name ="time_agent" , action_groups =[time_action_group ], ). invoke(input_text =input_text ) finally: await time_mcp_client .cleanup() if __name__ == "__main__" : asyncio.run(main(input_text ="今、東京は、何時ですか? ")) 最小限のコードで呼び出し可能