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']}")