Skip to content

Commit 0839247

Browse files
committed
Fix Redis configuration timing issue
- Add reload_redis_config() function to reload REDIS_CFG from environment variables - Call reload_redis_config() after setting environment variables in CLI - This ensures REDIS_CFG uses the CLI-provided values instead of initial defaults - Fixes issue where Redis Cloud URIs were ignored and localhost was used instead
1 parent a3a1e89 commit 0839247

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

src/common/config.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,28 @@
88
MCP_HOST = os.getenv('MCP_HOST', '127.0.0.1')
99
MCP_PORT = os.getenv('MCP_PORT', 8000)
1010

11-
REDIS_CFG = {"host": os.getenv('REDIS_HOST', '127.0.0.1'),
12-
"port": int(os.getenv('REDIS_PORT',6379)),
13-
"username": os.getenv('REDIS_USERNAME', None),
14-
"password": os.getenv('REDIS_PWD',''),
15-
"ssl": os.getenv('REDIS_SSL', False) in ('true', '1', 't'),
16-
"ssl_ca_path": os.getenv('REDIS_SSL_CA_PATH', None),
17-
"ssl_keyfile": os.getenv('REDIS_SSL_KEYFILE', None),
18-
"ssl_certfile": os.getenv('REDIS_SSL_CERTFILE', None),
19-
"ssl_cert_reqs": os.getenv('REDIS_SSL_CERT_REQS', 'required'),
20-
"ssl_ca_certs": os.getenv('REDIS_SSL_CA_CERTS', None),
21-
"cluster_mode": os.getenv('REDIS_CLUSTER_MODE', False) in ('true', '1', 't'),
22-
"db": int(os.getenv('REDIS_DB', 0))}
11+
def _load_redis_config():
12+
"""Load Redis configuration from environment variables."""
13+
return {"host": os.getenv('REDIS_HOST', '127.0.0.1'),
14+
"port": int(os.getenv('REDIS_PORT',6379)),
15+
"username": os.getenv('REDIS_USERNAME', None),
16+
"password": os.getenv('REDIS_PWD',''),
17+
"ssl": os.getenv('REDIS_SSL', False) in ('true', '1', 't'),
18+
"ssl_ca_path": os.getenv('REDIS_SSL_CA_PATH', None),
19+
"ssl_keyfile": os.getenv('REDIS_SSL_KEYFILE', None),
20+
"ssl_certfile": os.getenv('REDIS_SSL_CERTFILE', None),
21+
"ssl_cert_reqs": os.getenv('REDIS_SSL_CERT_REQS', 'required'),
22+
"ssl_ca_certs": os.getenv('REDIS_SSL_CA_CERTS', None),
23+
"cluster_mode": os.getenv('REDIS_CLUSTER_MODE', False) in ('true', '1', 't'),
24+
"db": int(os.getenv('REDIS_DB', 0))}
25+
26+
REDIS_CFG = _load_redis_config()
27+
28+
29+
def reload_redis_config():
30+
"""Reload Redis configuration from environment variables."""
31+
global REDIS_CFG
32+
REDIS_CFG = _load_redis_config()
2333

2434

2535
def parse_redis_uri(uri: str) -> dict:
@@ -104,3 +114,4 @@ def set_redis_env_from_config(config: dict):
104114
if isinstance(value, bool):
105115
value = 'true' if value else 'false'
106116
os.environ[env_var] = str(value)
117+
print(f"Setting {env_var} to {value}")

src/main.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import src.tools.set
1616
import src.tools.stream
1717
import src.tools.pub_sub
18-
from src.common.config import MCP_TRANSPORT, parse_redis_uri, set_redis_env_from_config
18+
from src.common.config import MCP_TRANSPORT, parse_redis_uri, set_redis_env_from_config, reload_redis_config
1919

2020

2121
class RedisMCPServer:
@@ -84,6 +84,9 @@ def cli(url, host, port, db, username, password,
8484

8585
set_redis_env_from_config(config)
8686

87+
# Reload Redis configuration to pick up the new environment variables
88+
reload_redis_config()
89+
8790
# Set MCP transport settings
8891
os.environ['MCP_TRANSPORT'] = mcp_transport
8992
os.environ['MCP_HOST'] = mcp_host

0 commit comments

Comments
 (0)