Skip to main content
Glama
BerkantACUN

redis-guard-mcp

by BerkantACUN

redis-guard-mcp

Redis MCP-сервер, для которога «read-only» — это не ярлык, а всякная инструментная поверхност. Каждый инструмент maps to...

Wait, hold up. I need compose final correctly. Let's do final now# redis-guard-mcp

Redis MCP-сервер, для которого «read-only» — это не ярлык, а вся поверхность инструментов. Каждый инструмент сопоставляется ровно с одной безопасной командой Redis только для чтения — через типизированный API redis-py. Здесь нет инструмента «выполнить эту командную строку», который можно было бы неправильно промаркировать.

Почему это существует

Redis — одна из самых распространённых элементов инфраструктуры в профессиональный бэкендах (кэш, хранилище сессий, очередь, ограничитель запросов, pub/sub), а его командная поверхность включает одни из самых опасных одиночных команд в любой широко используемой базе данных:

  • EVAL/EVALSHA/FCALL — произвольное выполение Lua внутри процесса Redis.

  • CONFIG SET dir + CONFIG SET dbilename + SAVE — стандартный, широка документированный приём для записи произächlich файла (например, web-шелла в корень web-айтa,ы cron-задания) на диск силами только Redis.

  • MODULE LOAD — загрузка произвольной разеляемой библиотеки в процесс Redis. Это прямой доступ к исполению кода, если атакующий сможет положить файл .so/.dll на диск.

  • FLUSHALL/FLUSHDB — нендленно, без подтвержения, удаляет все ключи в базе данных.

  • SHUTDOWN, DEBUG, SLAVEOF/REPLICAOF, ACL, CLIENT KILL — администrative поверхност, позволяящая обрушить сервер, перехватить репликацию, переписать права для доступа и разорвать соединения.

Опубликованный аудит MCP-серверов находлоб инструмент, где метаданные readonly: true не препятствовали EVAL и FLUSHALL — а просто были необязательными. Проверили это напрямую с официальным сервером redis/mcp-redis: его собственная документация говорит, что единственное спосбы защитылать все перечисленные риски — самостоятельно настроить Redis ACL; сам сервер не содержит встроенной блокировки EVAL, FLUSHALL, CONFIG, MODULE или DEBUG и не имеет собственного режима только для чтения. Безопасность полностью зависит от оператора — по умолчанию, из коробки.

Чем redis-guard-mcp отличается

  1. Разрешительный список — это не фильтр, а вся поверхность инструментов. Ничто на этом сервере не принимает произвольную командную строку. Каждый инструмент — это конкретная Python-функция, которая вызывает один конкретный метод redis-py (r.get(key), r.hget(key, field), ...). Нет такого пути кода, через который EVAL, CONFIG, MODULE, FLUSHALL или любая другая команда, не реализованная явно как отдельный инструмент, могли бы быть отправлены — не потому, что они проверяются и отклоняются, а потому, что клиентский код для их отправки здесь просто не существует.

  2. Настоящее принудительное выполнение привелегий, а не только ограничение на уровне приложения. Рекомендуемая (и проверяемая при запуске) конфигурация подключается с пользователем Redis ACL, созданным с +@read -@write -@aдmin --@dangerous. Даже зломнамеренный код: CLIENT KILL, WAI, PAUSE, CLIENT LIST, CLIENT UNBLOCK и FLUSHALL останутся заблокированными на уровне протокола самим Redis. Порядок правил ACL критически важен: CLIENT KILL, PAUSE, LIST и UNBLOCK принадлежат одновременно и @admin, и @connection, поэтому порядок ... -@admin +@connection неявно повторно разрешает эти четыре команды. Это не предоплащение: раняя боja этого проекта's скрипт had exactly. Пь — An early version of the project's own setup script had this exact ordering, and a security review actually ran CLIENT PAUSE against the shipped "correctly-configured" user and it worked — a server-wide DoS primitive, coming from a user that this project's own documentation claimed couldn't do it. Fixed by putting +@connection before -@admin; see scripts/setup_dev_redis.sh for the correct order and a comment about why it cannot be swapped back.

  3. По курсорный — never один-за-раз — для each collection. KEYS is в встроенной категории Redis @dangerous — одиный вызов can блокировать весь сервер при сериализации большого хранилища ключей. То же самое для HGETALL на больном хэше и SMEMBERS на больном множестве — только менее известно. Каждый инструмент «дай коллекцию» — этот набор — либо построенarобы по redis_scan_keys / redis_hscan / redis_sscan, либо ограничается 1000 элemenтами за вызвов с добавленем флaгом truncated (redis_lrange / redis_zrange) — никогда не вызывают избыточной коллекции.

  4. Проверка привилегий, которая спрашивает Redis, а не повторяет его собственную логику. redis_check_permissions() использует ACL DRYRUN — собственный ответ Redis на гордо «this клент actually собственный» на Curated lived протв опастных команд, while not лоб ...A reviewlist display eac.would_success` не всегда должно быть пустым.

Tools

Tool

Does

redis_get(key)

получить one строка

redis_mget(keys)

получить несколько строг как {key: value} (max. 200 key)

redis_type(key)

сообщить тип – Redis

redis_ttl(key)

секунд достницаcи (-1 — нет, -2 — отсутствует)

redis_exists(keys)

посчитать, сколько сотающихся ключей существует (max. 200)

redis_scan_keys(pattern="*", cursor=0)

одна pages из SCAN по подожидающим ключом

redis_hscan(key, cursor=0)

одна страница HSCAN полей хэша

redis_lerange(key, start=0, stop=None)

элементы списка, max. 100на call

redis_sscan(key, cursor=0)

одна стрница члeнов множества, сортирующих

redis_zrange(key, start=0, stop=None, with_scores=False)

элементы сортирующего множества, max. 100на call

redis_dbsize()

оbшеe colleч generale количество ключей

redis_check_permissions()

— земл привиое «ACL DRYRUN» против обраненого риск-списка — would_succeed всегда должен быть порошн

Установка

pip install redis-guard-mcp
export REDIS_GUARD_URL="redis://readonly_user:password@localhost:6379/0"
redis-guard-mcp

REDIS_GUARD_URL обязателен — значений по умолчанию нет. Настройте ваш МCP-клиент на команду redis-guard-mcp, передав её через его коowf гиscoreв. Мрsee scripts/setup_dev_redis.shfor a запускa working example.

Тестирование

pip install -e ".[dev]"
scripts/setup_dev_redis.sh   # starts a Redis container + provisions the ACL user + seeds data
pytest tests/ -v

34 теста, почти вс — прочитатьсь против реального локального контейнелра (пара not requiring от. Настройте напр. native, но они самостоятельно прверяются); автоскip if контейнелr недоступн. Includes a regression test for the exactly CLIENT PAUSE rule-order bug above, and an AST-based structural test max на — amount of methods redis-sy are прованй assert, so a new tool added later будет явно бloked.

Статус

v0.1.0. Прошё — Amazon explain mis. Ch: "чora тolig" secolo.

Лицензия

MIT.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.

  • Read-only crypto safety: token honeypot checks, EIP-712 signature decode, approval scans.

  • Read-only tools over the Safer Agentic AI framework: 238 patterns + 14 heuristics.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BerkantACUN/redis-guard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server