TL;DR: `NOAUTH` means the Redis MCP server connected without a password to a Redis that requires one. Set `REDIS_PWD` in the server's environment (and `REDIS_USERNAME` if you use ACL users) and restart. Every command will start working.

```text
NOAUTH Authentication required.
```

## Fix it

1. Confirm the Redis side requires auth. If you run it, check for `--requirepass` or `requirepass` in the config. If it is managed (Upstash, Redis Cloud), it always requires auth.

2. Set the credentials in the MCP server's environment. In your client config `env` block, or wherever you launch the server:

```bash
REDIS_HOST=your-redis-host
REDIS_PORT=6379
REDIS_USERNAME=default
REDIS_PWD=your-redis-password
```

   Command-line args take precedence over env vars if your setup passes `--url` explicitly. Make sure the password is in the URL then: `redis://:password@host:6379/0`.

3. Restart the MCP server (restart the client for stdio servers).

   Expected: tools execute and return data. `PING` returns `PONG`.

## When to use this

- Every Redis tool call fails with `NOAUTH Authentication required`.
- `redis-cli -a [password] ping` works, proving the server and password are fine.

## When NOT to use this

- The error is `WRONGPASS`. A password is being sent, it is just wrong. Fix the value, not the presence.
- The error is a connection timeout or refused. The server is not reachable at all.

## Compatibility

- redis/mcp-redis (env-var and `--url` configuration).
- Redis 6+ with ACLs, Redis 7, Upstash, Redis Cloud, self-hosted with requirepass.

## Why it happens

The Redis MCP server defaults to no password (`REDIS_PWD` empty). That matches a default local Redis, but any production or managed Redis requires auth. The server does not prompt or fail at startup; it connects and then every command gets NOAUTH, which looks like the server is broken when it is just unauthenticated.

## Edge cases

- With ACLs, an empty username sends a one-arg AUTH that fails differently. Set `REDIS_USERNAME=default` explicitly when using the default user with a password.
- Special characters in the password inside a `--url` must be percent-encoded.
- Docker setups: the env var must be passed into the container (`-e REDIS_PWD=...`), not just set on the host.