Skip to main content
Glama

strands-mcp-server

PyPI

Awesome Strands Agents

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

Related MCP server: Agent Hub MCP

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


License: Apache 2.0

Available Tools

3 tools
greetC

Greet someone with different styles.

Returns: str: A greeting message

Inputs: name (required), style.

invoke_agentA

Invoke the full strands-mcp-cli agent with a natural language prompt. Use this for complex queries that require reasoning across multiple tools or when you need a conversational response from the agent.

Inputs: prompt (required).

mcp_clientA

Test and interact with MCP servers.

This tool provides a complete MCP client implementation for testing and using MCP servers from within a Strands Agent.

Returns: Result dictionary with status and content

Examples: # Connect to HTTP server mcp_client( action="connect", connection_id="my-server", transport="http", server_url="http://localhost:8000/mcp" )

# Connect to stdio server
mcp_client(
    action="connect",
    connection_id="stdio-server",
    transport="stdio",
    command="python",
    args=["mcp_server_stdio.py"]
)

# List tools from connection
mcp_client(action="list_tools", connection_id="my-server")

# Call a tool
mcp_client(
    action="call_tool",
    connection_id="my-server",
    tool_name="calculator",
    tool_args={"expression": "2 + 2"}
)

# List all connections
mcp_client(action="list_connections")

# Disconnect
mcp_client(action="disconnect", connection_id="my-server")

Notes: - stdio transport: Server must be launchable as subprocess - HTTP transport: Server must be already running - Connections are maintained in global state for reuse

Inputs: action (required), connection_id, transport, server_url, +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 3 tools

    Disambiguation3/5

    The three tools have distinct primary purposes—greeting, invoking an agent, and interacting with MCP servers—but there is some functional overlap between 'invoke_agent' and 'mcp_client', as both can handle MCP-related tasks. The descriptions clarify their roles, but an agent might be uncertain when to use one over the other for complex MCP operations.

    Naming Consistency3/5

    The naming is mixed: 'greet' uses a simple verb, 'invoke_agent' follows a verb_noun pattern, and 'mcp_client' uses a noun-based name. While readable, there is no consistent convention across all tools, leading to a lack of predictability in the naming scheme.

    Tool Count2/5

    With only three tools, the server feels under-scoped for its apparent purpose of MCP interaction and agent invocation. The 'mcp_client' tool is comprehensive, but the limited set may force agents to rely heavily on it for varied tasks, suggesting a mismatch between the tool count and the server's broad functionality.

    Completeness2/5

    The server lacks clear coverage for common MCP workflows. While 'mcp_client' provides a generic interface, there are no dedicated tools for specific actions like listing servers, managing connections, or handling errors. This forces agents to use a single, multi-purpose tool, which can lead to inefficiencies and potential gaps in handling nuanced scenarios.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers