redis-guard-mcp
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 отличается
Разрешительный список — это не фильтр, а вся поверхность инструментов. Ничто на этом сервере не принимает произвольную командную строку. Каждый инструмент — это конкретная Python-функция, которая вызывает один конкретный метод
redis-py(r.get(key),r.hget(key, field), ...). Нет такого пути кода, через которыйEVAL,CONFIG,MODULE,FLUSHALLили любая другая команда, не реализованная явно как отдельный инструмент, могли бы быть отправлены — не потому, что они проверяются и отклоняются, а потому, что клиентский код для их отправки здесь просто не существует.Настоящее принудительное выполнение привелегий, а не только ограничение на уровне приложения. Рекомендуемая (и проверяемая при запуске) конфигурация подключается с пользователем 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 ranCLIENT PAUSEagainst 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+@connectionbefore-@admin; seescripts/setup_dev_redis.shfor the correct order and a comment about why it cannot be swapped back.По курсорный — never один-за-раз — для each collection.
KEYSis в встроенной категории Redis@dangerous— одиный вызов can блокировать весь сервер при сериализации большого хранилища ключей. То же самое дляHGETALLна больном хэше иSMEMBERSна больном множестве — только менее известно. Каждый инструмент «дай коллекцию» — этот набор — либо построенarобы поredis_scan_keys/redis_hscan/redis_sscan, либо ограничается 1000 элemenтами за вызвов с добавленем флaгомtruncated(redis_lrange/redis_zrange) — никогда не вызывают избыточной коллекции.Проверка привилегий, которая спрашивает Redis, а не повторяет его собственную логику.
redis_check_permissions()используетACL DRYRUN— собственный ответ Redis на гордо «this клент actually собственный» на Curated lived протв опастных команд, while not лоб ...A reviewlist display eac.would_success` не всегда должно быть пустым.
Tools
Tool | Does |
| получить one строка |
| получить несколько строг как |
| сообщить тип – Redis |
| секунд достницаcи (-1 — нет, -2 — отсутствует) |
| посчитать, сколько сотающихся ключей существует (max. 200) |
| одна pages из |
| одна страница HSCAN полей хэша |
| элементы списка, max. 100на call |
| одна стрница члeнов множества, сортирующих |
| элементы сортирующего множества, max. 100на call |
| оbшеe colleч generale количество ключей |
| — земл привиое «ACL DRYRUN» против обраненого риск-списка — |
Установка
pip install redis-guard-mcp
export REDIS_GUARD_URL="redis://readonly_user:password@localhost:6379/0"
redis-guard-mcpREDIS_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/ -v34 теста, почти вс — прочитатьсь против реального локального контейнелра (пара 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.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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