メインコンテンツへスキップ
見出し画像
Photo bysoeji

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通信にも対応しています。
    エンジョイ!


     
     

    Taks

     
     
    ITエンジニア/AWS/Azure/Vue.js/Python/ネットワーク/コンテナ/K8s/機械学習/DeepLearning/生成AI

    あなたへのおすすめ