Transform Strands Agents into MCP servers, exposing agent tools to any MCP-compatible client
Project description
strands-mcp-server
Bidirectional MCP integration for Strands Agents.
pip install strands-mcp-server
Overview
- 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:#fff
Quick 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 |
|---|---|---|
action |
required | start, stop, status, list |
transport |
http |
http or stdio |
port |
8000 | Port |
tools |
None | Tools to expose (None = all) |
expose_agent |
True | Include invoke_agent |
stateless |
False | Multi-node ready |
mcp_client
| Parameter | Description |
|---|---|
action |
connect, disconnect, list_tools, call_tool |
connection_id |
Connection ID |
transport |
http, stdio, sse |
server_url |
Server URL |
tool_name |
Tool to call |
tool_args |
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 |
|---|---|
--cwd PATH |
Working directory |
--upstream-url URL |
Upstream server (proxy) |
--system-prompt TEXT |
System prompt |
--no-agent-invocation |
Disable invoke_agent |
--debug |
Debug mode |
Examples:
# Local
uvx strands-mcp-server --cwd /path/to/project
# Proxy
uvx strands-mcp-server --upstream-url http://localhost:8000/mcp
Troubleshooting
# 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*.log
Links
License: Apache 2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
strands_mcp_server-0.1.3.tar.gz
(29.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file strands_mcp_server-0.1.3.tar.gz.
File metadata
- Download URL: strands_mcp_server-0.1.3.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a7e119fa0d890f13ce49f249ec62bde4fd6b18b3974183835fa8d20ce2b3a8e
|
|
| MD5 |
569850d43f7e86cb6aff912c5aaff2b8
|
|
| BLAKE2b-256 |
80dacf79d8efbad28aa3856d4660308804f0cbc6683314baec533d68946ec74d
|
File details
Details for the file strands_mcp_server-0.1.3-py3-none-any.whl.
File metadata
- Download URL: strands_mcp_server-0.1.3-py3-none-any.whl
- Upload date:
- Size: 24.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5ee5de8df86a8b537f28ab1de09cdba5a5964907aec01acf7ed347ace2efb12
|
|
| MD5 |
90a8f59ed898dd5a70ca6052376b6747
|
|
| BLAKE2b-256 |
d8a80efda1d39082f87f3843a306472657dd427117a4ab4feb513bfc5ddc5a6c
|