見出し画像

Strands Agents SDK × OllamaでMCP。

MCP(Model Control Protocol)は、Function calling(tool use)の標準規格です。
今回はMCPサーバを起動し、技術ドキュメントの検索とLLMによる検索結果の要約をしてみます。技術ドキュメントの検索は、以下リンクの「AWS Documentation MCP Server」を利用しました。

MCPの設定(stdio 経由)

stdio_mcp_client = MCPClient(lambda: stdio_client(
    StdioServerParameters(
        command="uvx",
        args=["awslabs.aws-documentation-mcp-server@latest"]
    )
))

uvx を使用して aws-documentation-mcp-server を起動し、MCP ServerとMCP Clientの設定をしています。

MCPの利用

# Create an agent with MCP tools
with stdio_mcp_client:
    # Get the tools from the MCP server
    tools = stdio_mcp_client.list_tools_sync()
    
    # Create an agent using the Ollama model
    agent = Agent(model=ollama_model, tools=tools)
    tool_response = agent("What is AWS Lambda?")

MCPサーバを起動して、toolを読み込み、Agentに設定した上で、
「What is AWS Lambda?」という質問をしています。
MCP経由でtoolを利用した結果はtool_responseへ返ってきます。

LLMによる検索結果の要約

summary = agent(
    f"ツールのレスポンスをもとに、説明してください。: {tool_response}"
)

取得したツールのレスポンスに基づいて、LLM による日本語での自然な要約を生成しています。

実行結果(抜粋)

AWS Lambda は、サードパーティのコードを実行するためにデプロイできるサービスです。ここではツールが使用された結果からLambdaについて説明しています:

1. **概要ページへの案内**: ツールはまず AWS Lambda の公式ドキュメントホーム ページ (https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) にリンクを提供しました。
この ページには、AWS Lambda でのベーシックなトピックについて説明する簡単な紹介と利用方法が含まれています。

2. **Amazon S3 と AWS Management Console を使用した Amazon Lambda の利用**: 次に、ツールは (https://docs.aws.amazon.com/lambda/latest/dg/using-lambda-with-aws.html) で
 Lambda が Amazon Simple Storage Service(S3)とともにAWS Management Consoleを通じてどのように使用されるかについて紹介しています。
このドキュメントでは、Lambda を S3 と連携させてアプリケーションからストレージや処理されたデータへの反復的な応答を作成する方法が説明されています。

3. **ベーシックとしての Lambda で学ぶ**: 最後に (https://docs.aws.amazon.com/lambda/latest/dg/welcome-to-lambda.html#welcome-to-lambda-buckets) ドキュメントでは、
Lambda を理解し始めるために重要な基本事項を網羅したセクションが紹介されています。ここには Lambda 関連のさまざまな要素についての学習ガイドが含まれています。

全体コード

from mcp import stdio_client, StdioServerParameters
from strands import Agent
from strands.tools.mcp import MCPClient
from strands.models.ollama import OllamaModel

# Create an Ollama model instance
ollama_model = OllamaModel(
    host="http://localhost:11434",
    model_id="phi4-mini"
)

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

# Create an agent with MCP tools
with stdio_mcp_client:
    # Get the tools from the MCP server
    tools = stdio_mcp_client.list_tools_sync()
    
    # Create an agent using the Ollama model
    agent = Agent(model=ollama_model, tools=tools)
    tool_response = agent("What is AWS Lambda?")
    print(tool_response)

# Ollamaモデルを使ってツールのレスポンスを要約する
summary = agent(
        f"ツールのレスポンスをもとに、説明してください。: {tool_response}"
    )
print(summary)

まとめ

Strands Agents SDKを用いたMCPの利用を試してみました。
今回はstdio方式を利用しましたが、Strands AgentsはStreamableHTTP方式のMCP通信にも対応しています。
エンジョイ!


いいなと思ったら応援しよう!