Amazon ElastiCache Memcached MCP Server
MCP server for interacting with Amazon ElastiCache Memcached through a secure and reliable connection
Features
Complete Memcached Protocol Support
- Full support for all standard Memcached operations
- Secure communication with SSL/TLS encryption
- Automatic connection management and pooling
- Built-in retry mechanism for failed operations
- Readonly mode to prevent write operations
Readonly Mode
The server can be started in readonly mode, which prevents any write operations from being performed. This is useful for scenarios where you want to ensure that no data is modified, such as:
- Read-only replicas
- Production environments where writes should be restricted
- Debugging and monitoring without risk of data modification
When readonly mode is enabled, any attempt to perform a write operation (set, add, replace, delete, etc.) will return an error message.
Prerequisites
- Install
uv
from Astral or the GitHub README - Install Python using
uv python install 3.10
- Access to a Memcached server.
- For instructions to connect to an Amazon ElastiCache Memcached cache click here
Installation
Here are some ways you can work with MCP (e.g. for Amazon Q Developer CLI MCP, ~/.aws/amazonq/mcp.json
):
{
"mcpServers": {
"awslabs.memcached-mcp-server": {
"command": "uvx",
"args": ["awslabs.memcached-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"MEMCACHED_HOST": "your-memcached-host",
"MEMCACHED_PORT": "11211"
},
"disabled": false,
"autoApprove": []
}
}
}
To run in readonly mode:
{
"mcpServers": {
"awslabs.memcached-mcp-server": {
"command": "uvx",
"args": ["awslabs.memcached-mcp-server@latest", "--readonly"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"MEMCACHED_HOST": "your-memcached-host",
"MEMCACHED_PORT": "11211"
},
"disabled": false,
"autoApprove": []
}
}
}
or docker after a successful docker build -t awslabs/memcached-mcp-server .
:
{
"mcpServers": {
"awslabs.memcached-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"--interactive",
"--env",
"FASTMCP_LOG_LEVEL=ERROR",
"--env",
"MEMCACHED_HOST=your-memcached-host",
"--env",
"MEMCACHED_PORT=11211",
"awslabs/memcached-mcp-server:latest"
],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
To run in readonly mode with Docker:
{
"mcpServers": {
"awslabs.memcached-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"--interactive",
"--env",
"FASTMCP_LOG_LEVEL=ERROR",
"--env",
"MEMCACHED_HOST=your-memcached-host",
"--env",
"MEMCACHED_PORT=11211",
"awslabs/memcached-mcp-server:latest",
"--readonly"
],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
Configuration
Basic Connection Settings
Configure the connection using these environment variables:
# Basic settings
MEMCACHED_HOST=127.0.0.1 # Memcached server hostname
MEMCACHED_PORT=11211 # Memcached server port
MEMCACHED_TIMEOUT=1 # Operation timeout in seconds
MEMCACHED_CONNECT_TIMEOUT=5 # Connection timeout in seconds
MEMCACHED_RETRY_TIMEOUT=1 # Retry delay in seconds
MEMCACHED_MAX_RETRIES=3 # Maximum number of retry attempts
SSL/TLS Configuration
Enable and configure SSL/TLS support with these variables:
# SSL/TLS settings
MEMCACHED_USE_TLS=true # Enable SSL/TLS
MEMCACHED_TLS_CERT_PATH=/path/to/client-cert.pem # Client certificate
MEMCACHED_TLS_KEY_PATH=/path/to/client-key.pem # Client private key
MEMCACHED_TLS_CA_CERT_PATH=/path/to/ca-cert.pem # CA certificate
MEMCACHED_TLS_VERIFY=true # Enable cert verification
The server automatically handles: - Connection establishment and management - SSL/TLS encryption when enabled - Automatic retrying of failed operations - Timeout enforcement and error handling
Development
Running Tests
uv venv
source .venv/bin/activate
uv sync
uv run --frozen pytest
Building Docker Image
docker build -t awslabs/memcached-mcp-server .
Running Docker Container
docker run -p 8080:8080 \
-e MEMCACHED_HOST=host.docker.internal \
-e MEMCACHED_PORT=11211 \
awslabs/memcached-mcp-server
To run in readonly mode:
docker run -p 8080:8080 \
-e MEMCACHED_HOST=host.docker.internal \
-e MEMCACHED_PORT=11211 \
awslabs/memcached-mcp-server --readonly