Skip to the content.

Examples


Basic Server

from strands import Agent
from strands_mcp_server import mcp_server

agent = Agent(tools=[mcp_server])
agent("start mcp server on port 8000")

Basic Client

from strands import Agent
from strands_mcp_server import mcp_client

agent = Agent(tools=[mcp_client])

agent.tool.mcp_client(
    action="connect",
    connection_id="remote",
    transport="http",
    server_url="http://localhost:8000/mcp"
)

agent.tool.mcp_client(
    action="call_tool",
    connection_id="remote",
    tool_name="calculator",
    tool_args={"expression": "42 * 89"}
)

Agent-to-Agent

from strands import Agent
from strands_mcp_server import mcp_server, mcp_client

# Server agent
server = Agent(tools=[mcp_server])
server.tool.mcp_server(action="start", port=8001, agent=server)

# Client agent
client = Agent(tools=[mcp_client])
client.tool.mcp_client(
    action="connect",
    connection_id="server",
    transport="http",
    server_url="http://localhost:8001/mcp"
)

# Use remote tools
client("use server's calculator to compute 999 * 888")

Tool Filtering

agent.tool.mcp_server(
    action="start",
    tools=["calculator", "file_read"],  # Only these
    expose_agent=False,  # No invoke_agent
    agent=agent
)

Stateless Production

agent.tool.mcp_server(
    action="start",
    stateless=True,  # Multi-node ready
    agent=agent
)

Full Agent Invocation

agent.tool.mcp_client(
    action="call_tool",
    connection_id="remote",
    tool_name="invoke_agent",
    tool_args={"prompt": "Read data.csv and calculate averages"}
)

Multiple Transports

# HTTP
agent.tool.mcp_client(
    action="connect",
    connection_id="http",
    transport="http",
    server_url="http://localhost:8000/mcp"
)

# stdio
agent.tool.mcp_client(
    action="connect",
    connection_id="local",
    transport="stdio",
    command="python",
    args=["server.py"]
)

Error Handling

result = agent.tool.mcp_client(
    action="call_tool",
    connection_id="remote",
    tool_name="calculator",
    tool_args={"expression": "2 + 2"}
)

if result["status"] == "success":
    print(result["content"][0]["text"])
else:
    print(f"Error: {result['content'][0]['text']}")