The Strands MCP Server provides bidirectional Model Context Protocol (MCP) integration, enabling a Strands Agent to both expose its capabilities as an MCP server and connect to remote MCP servers as a client.
Server Mode: Expose your Strands Agent's tools via HTTP or stdio transport for use with Claude Desktop, other agents, or custom clients. External clients can invoke the full agent functionality through the invoke_agent tool using natural language prompts, or call individual exposed tools like the demo greet tool.
Client Mode ( Connect to and interact with remote MCP servers using HTTP, stdio, or SSE transports. This allows you to list available tools from connected servers, call remote tools with arguments, manage multiple simultaneous connections with unique IDs, and disconnect when done.
Key Features:
Agent Invocation: Execute complex queries requiring reasoning across multiple tools using natural language
Connection Management: Maintain and track multiple server connections simultaneously
Multi-transport Support: HTTP, stdio, and Server-Sent Events (SSE) protocols
CLI Interface: Run in Local Mode (standalone server) or Proxy Mode (connecting to upstream servers)
Stateless Operation: Support for multi-node deployments when stateless mode is enabled
Server Lifecycle Management: Start, stop, check status, and list server configurations
Use Cases: Bridge multiple MCP servers together, test MCP implementations, proxy connections for Claude Desktop, build complex agent workflows leveraging remote tools, and enable bidirectional agent-to-agent communication.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Strands MCP Serverconnect to the weather server at http://localhost:8080/mcp"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
strands-mcp-server
Bidirectional MCP integration for Strands Agents.
pip install strands-mcp-serverOverview
mcp_server - Expose agent as MCP server
mcp_client - Connect to MCP servers
CLI - stdio for Claude Desktop
graph LR
subgraph "Your Strands Agent"
A[Tools: calculator, shell, etc.]
B[mcp_server tool]
C[mcp_client tool]
A --> B
C --> A
end
subgraph "Server Mode"
B -->|HTTP/stdio| D[MCP Protocol]
D --> E[Claude Desktop]
D --> F[Other Agents]
D --> G[Custom Clients]
end
subgraph "Client Mode"
H[Remote MCP Servers] -->|HTTP/stdio/SSE| I[MCP Protocol]
I --> C
end
subgraph "CLI"
J[uvx strands-mcp-server] -->|Local Mode| D
J -->|Proxy Mode| I
end
style A fill:#2d3748,stroke:#4a5568,color:#fff
style B fill:#2b6cb0,stroke:#2c5282,color:#fff
style C fill:#38a169,stroke:#2f855a,color:#fff
style D fill:#805ad5,stroke:#6b46c1,color:#fff
style I fill:#805ad5,stroke:#6b46c1,color:#fff
style E fill:#d69e2e,stroke:#b7791f,color:#fff
style F fill:#d69e2e,stroke:#b7791f,color:#fff
style G fill:#d69e2e,stroke:#b7791f,color:#fff
style H fill:#e53e3e,stroke:#c53030,color:#fff
style J fill:#48bb78,stroke:#38a169,color:#fffQuick Start
Server:
from strands import Agent
from strands_mcp_server import mcp_server
agent = Agent(tools=[..., mcp_server])
agent("start mcp server on port 8000")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"}
)For Agents like Claude Desktop/Kiro/...:
{
"mcpServers": {
"my-agent": {
"command": "uvx",
"args": ["strands-mcp-server", "--cwd", "/path/to/project"]
}
}
}API
mcp_server
Parameter | Default | Description |
| required |
|
|
|
|
| 8000 | Port |
| None | Tools to expose (None = all) |
| True | Include |
| False | Multi-node ready |
mcp_client
Parameter | Description |
|
|
| Connection ID |
|
|
| Server URL |
| Tool to call |
| Tool arguments |
invoke_agent
Full agent access when expose_agent=True:
agent.tool.mcp_client(
action="call_tool",
connection_id="remote",
tool_name="invoke_agent",
tool_args={"prompt": "Calculate 2 + 2"}
)CLI
uvx strands-mcp-server [OPTIONS]Option | Description |
| Working directory |
| Upstream server (proxy) |
| System prompt |
| Disable invoke_agent |
| Debug mode |
Examples:
# Local
uvx strands-mcp-server --cwd /path/to/project
# Proxy
uvx strands-mcp-server --upstream-url http://localhost:8000/mcpTroubleshooting
# Debug
uvx strands-mcp-server --cwd /path --debug
# Check connection
curl http://localhost:8000/mcp
# Port in use
lsof -i :8000 && kill -9 <PID>
# Claude logs
tail -f ~/Library/Logs/Claude/mcp*.logLinks
License: Apache 2.0