This example demonstrates how to use aws_iam_streamablehttp_client from mcp-proxy-for-aws to connect a Microsoft Agent Framework agent to an MCP server using AWS IAM authentication.
Note: Microsoft Agent Framework accepts a factory function that returns an MCP client. The aws_iam_streamablehttp_client is passed as a factory to the framework's MCPStreamableHTTPTool, which handles the connection lifecycle internally.
- Python 3.10+ and uv installed
- AWS credentials configured (via AWS CLI, environment variables, or IAM roles)
- An OpenAI API key for the language model
Create a .env file or set the following environment variables:
# MCP server details
MCP_SERVER_URL=https://example.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp
MCP_SERVER_AWS_SERVICE=bedrock-agentcore
MCP_SERVER_REGION=us-west-2
# OpenAI API key for the agent's LLM
OPENAI_API_KEY=sk-...All four environment variables are required.
Run the example:
uv run main.pyThe agent will connect to the MCP server and list its available tools.
- Loads configuration from environment variables or
.envfile - Creates an AWS IAM-authenticated MCP client using
aws_iam_streamablehttp_client() - Integrates with Agent Framework by configuring
MCPStreamableHTTPTool.get_mcp_client - Creates an agent with access to the MCP server tools
- Runs the agent to demonstrate tool discovery and usage
AgentCore Runtime URL:
https://bedrock-agentcore.[AWS_REGION].amazonaws.com/runtimes/[RUNTIME_ID]/invocations?qualifier=DEFAULT&accountId=[AWS_ACCOUNT_ID]
AgentCore Gateway URL:
https://[GATEWAY_ID].gateway.bedrock-agentcore.[AWS_REGION].amazonaws.com/mcp
- Verify AWS credentials are configured (AWS CLI, environment variables, or IAM roles)
- Test with
aws sts get-caller-identity
- Ensure all required variables are set:
MCP_SERVER_URL,MCP_SERVER_REGION,MCP_SERVER_AWS_SERVICE, andOPENAI_API_KEY - Check your
.envfile or environment variable configuration
- Verify your MCP server details are correct
- Ensure the MCP server is running and accessible
- Verify your AWS credentials have the necessary permissions to access the MCP server