safeselect
SafeSelect MCP
Агенты могут смотреть. Они не могут изменять.
Отказоустойчивый доступ только для чтения к PostgreSQL и MongoDB для ИИ-агентов, работающих с кодом, через MCP.
SafeSelect предоставляет агентам, работающим с кодом, ограниченный инструмент для работы с базами данных: обнаружение структуры, проверка данных, приближенных к производственным, объяснение запросов, диагностика подключения и восстановление устаревших соединений — без предоставления инструментов с правом записи или прямого доступа к учетным данным базы данных.
Большинство MCP-серверов для баз данных позволяют легко подключить агента к базе. SafeSelect создан для более сложной задачи: позволить агенту проверять данные, приближенные к производственным, не превращая базу данных в неограниченную поверхность инструментов.
[!NOTE] SafeSelect — это граница безопасности для доступа агента, а не замена прав базы данных. Используйте пользователей базы данных с минимальными привилегиями, когда это возможно; SafeSelect по-прежнему ограничивает избыточные учетные данные, когда агенты подключаются через него.
Текущая поддержка бэкендов: PostgreSQL и MongoDB.
Related MCP server: databricks-mcp
Где это полезно
Отладка приложения на реалистичных данных без раскрытия инструментов изменения.
Позволяет агенту проверять схемы, индексы, планы запросов и ограниченные строки во время разработки.
Исследование коллекций MongoDB через ограниченные чтения и выборочный вывод схемы.
Повторное использование существующих подключений DBeaver, Docker Compose или MongoDB Compass.
Предоставление агентам контекста базы данных при сохранении контроля над политиками, лимитами, секретами и аудитом.
Почему SafeSelect?
SafeSelect намеренно уже, чем универсальные MCP-серверы для баз данных. Это не конструктор инструментов, не SQL-среда и не удаленный шлюз к базе данных. Это локальная граница безопасности для агентов, которым нужна видимость базы данных, а не власть над ней.
Приоритет SafeSelect | Что это означает |
Локальный транспорт stdio | Нет сетевого слушателя или открытого MCP-порта |
Инструменты только для чтения | Агенты не получают инструменты базы данных с правом записи |
Безопасность независимо от учетных данных | Даже учетные данные DBA ограничены поверхностью инструментов SafeSelect только для чтения |
Принудительное закрытие при сбое | Нарушения политики завершают процесс |
Изоляция секретов | Пароли хранятся в Keychain или переменных окружения |
Политика в рамках проекта | Каждый репозиторий определяет свою допустимую поверхность данных |
Встроенный сайдкар | Один установленный бинарник достигает драйверов JDBC и MongoDB за политикой Rust |
Что делает его отличным?
Универсальные MCP-серверы для баз данных | SafeSelect |
Часто предоставляют настраиваемые инструменты | Предоставляет фиксированную поверхность инструментов только для чтения |
Могут поддерживать удаленные HTTP-транспорты | Использует локальный MCP stdio по умолчанию |
Обычно оптимизированы для широкого покрытия бэкендов | Оптимизирован для соблюдаемой политики и безопасности агента |
Часто полагаются на пользователей базы данных с минимальными привилегиями | Обеспечивает поведение только для чтения даже при избыточных учетных данных |
Часто держат настройку подключения отдельно | Импортирует из DBeaver, Docker Compose и MongoDB Compass |
Могут логировать запросы для отладки | Хеширует текст запроса перед записью в аудит |
Считают сбои безопасности восстанавливаемыми ошибками | Закрывается при сбое и завершает MCP-процесс |
Обещание продукта простое: агенты могут смотреть, но не могут изменять. Даже если настроенный пользователь базы данных — DBA, агент все равно получает только ограниченные операции чтения SafeSelect.
[!TIP] Это полезно, когда у команд уже есть подключения DBeaver, Docker Compose или MongoDB Compass, и им нужно предоставить их агентам без перепроектирования пользователей базы данных.
Поддержка бэкендов
Бэкенд | Статус | Инструменты |
PostgreSQL | Поддерживается | Обнаружение, индексы/статистика, |
MongoDB | Поддерживается | Обнаружение, find, агрегация, distinct/count, explain, профилирование, вывод схемы и анонимизированные фикстуры |
Архитектура
Агент общается с SafeSelect через MCP stdio. SafeSelect обеспечивает соблюдение политики на Rust, хранит секреты вне файлов проекта и достигает баз данных через встроенный Java-сайдкар: JDBC для SQL-бэкендов и драйвер MongoDB для MongoDB. Канал Rust-Java — это JSON-lines через stdin/stdout: никаких сокетов, никаких открытых портов.
Быстрый старт
brew install antonillos/tap/safeselect
# Import a project database
safeselect import-dbeaver ~/Downloads/dbeaver-export.zip
# or:
# safeselect import-compose
# safeselect import-compass --path "$HOME/.config/MongoDB Compass"
# Verify the environment
safeselect check --environment testing
# Install the MCP entry. If this is the only environment, its name is inferred.
safeselect agent install opencode
# Verify exactly what was installed and where.
safeselect agent statusSafeSelect использует любой доступный Java 17+ runtime вместо того, чтобы требовать конкретную формулу Homebrew openjdk@17. Если Java отсутствует или слишком старая, установите или выберите Java 17+ runtime перед запуском команд базы данных.
Сгенерированное имя MCP по умолчанию — safeselect-<project>-<environment>.
Сгенерированная запись MCP — это stdio-сервер, ограниченный одним проектом и окружением:
{
"mcpServers": {
"safeselect-myapp-testing": {
"command": "safeselect",
"args": ["serve", "--project", "/path/to/myapp", "--environment", "testing"]
}
}
}SafeSelect использует официальный контракт конфигурации MCP каждого клиента, фиксирует абсолютный путь к репозиторию и по умолчанию использует пользовательскую область. Добавьте --local для записи в рамках проекта, если клиент это поддерживает. См. Интеграция с ИИ-агентами для точных путей, областей и ручной настройки.
Рабочий процесс агента
Агенты должны использовать SafeSelect в следующем порядке:
database_infolist_tables, затемdescribe_table; проверьтеlist_table_indexesили ограниченную статистику, если это полезно для SQLlist_databases,list_collections, затемdiscover_document_schemaдля NoSQLselect/explainили ограниченный инструмент чтения MongoDB, соответствующий задачеcheck,connectилиreconnect, когда соединение устарело
Агенты должны обнаруживать структуру отношений или коллекций перед запросом незнакомых данных и использовать next_suggestion из каждого ответа обнаружения вместо угадывания имен столбцов или полей. Описания SQL — это метаданные каталога; схемы MongoDB выводятся из ограниченной, неисчерпывающей выборки.
Документы запросов MongoDB должны оставаться полными вложенными JSON-значениями. Клиенты, которые уплощают вложенные аргументы инструментов, могут передавать filter, projection и sort как JSON-кодированные строки объектов, а pipeline — как JSON-кодированную строку массива. redact_fields также принимает JSON-кодированную строку массива. Уплощенные ключи отклоняются, чтобы потерянный фильтр или редактирование никогда не стали менее ограниченным запасным вариантом.
Серверный JavaScript MongoDB никогда не доступен: $where, $function и $accumulator рекурсивно отклоняются в фильтрах, проекциях, сортировках и конвейерах агрегации до того, как они попадут в драйвер MongoDB. При отклонении перестройте запрос с декларативными операторами MQL; в SafeSelect нет настройки, включающей JavaScript.
Ответы на запросы включают row_count, byte_count, elapsed_ms и человекочитаемое значение elapsed, чтобы агенты могли оценить размер результата и задержку.
Каждый успех и ошибка MCP включает одну контекстную next_suggestion. Агенты должны следовать этому единственному безопасному действию, никогда не повторять вслепую недопустимый запрос и останавливаться, когда предложение является терминальным. Для клиентов, которые показывают только сводку ошибок MCP, SafeSelect также включает доверенное следующее предложение в эту сводку, не раскрывая деталей, полученных из базы данных.
Модель безопасности
Закрытие при сбое: нарушения безопасности завершают MCP-процесс.
Только чтение: SQL разрешает
SELECT,EXPLAINиWITH; NoSQL-бэкенды разрешают обнаружение и чтение документов только для чтения.Нет серверного JavaScript: MongoDB
$where,$functionи$accumulatorотклоняются на Rust и снова в Java-сайдкаре.Ограниченный доступ: схемы, отношения, базы данных и коллекции могут быть разрешены или запрещены.
Жесткие лимиты: количество строк, размер результата в байтах и таймауты применяются; команды чтения MongoDB получают тот же таймаут, что и
maxTimeMS.Изоляция секретов: пароли хранятся в macOS Keychain или переменных окружения, никогда в конфигурации проекта.
Проверка драйверов: драйверы JDBC проверяются по SHA-256 перед использованием.
Аудит: текст запроса хешируется перед записью; текущая сессия предоставляет ограниченные метаданные аудита через
audit_statusиaudit_recent.
Преднамеренные ограничения
SafeSelect не предоставляет запись в базу данных, миграции, администрирование или произвольное выполнение команд.
PostgreSQL и MongoDB — поддерживаемые бэкенды на сегодня; широкое количество коннекторов не является целью.
MCP-транспорт — локальный stdio. SafeSelect не является удаленным шлюзом к базе данных.
Обнаружение схемы MongoDB основано на выборке и ограничено, а не является исчерпывающей гарантией схемы.
SafeSelect дополняет минимальные привилегии на уровне базы данных; он не заменяет их.
MCP-инструменты
Область | Инструменты |
SQL |
|
Чтение MongoDB |
|
Анализ MongoDB |
|
Подключение |
|
Аудит |
|
Конфигурация |
|
Настройка |
|
Когда каталог .safeselect/ отсутствует, safeselect serve --environment <env> автоматически переходит в режим настройки и предоставляет только инструменты, безопасные для настройки.
[!IMPORTANT] Режим настройки не предоставляет инструменты запросов. Агенты могут помочь импортировать и проверить конфигурацию до того, как станут доступны инструменты проверки базы данных.
Основы CLI
Команда | Назначение |
| Запустить MCP-сервер |
| Проверить конфигурацию, секреты, туннели, sidecar и подключение к бэкенду |
| Вывести более подробную диагностику со стабильными кодами |
| Импортировать подключения DBeaver |
| Импортировать из docker-compose |
| Импортировать подключения MongoDB Compass |
| Установить запись MCP |
| Сохранить пароль базы данных |
| Сохранить SSH-пароль |
| Удалить установленные бинарные файлы, глобальное состояние, данные аудита и записи Keychain |
| Удалить только пользовательские бинарные файлы и сохранить конфигурацию |
Используйте safeselect --help или --help для конкретной команды, чтобы получить полную справку по CLI.
Uninstall проверяет как расположение бинарных файлов установщика релизов, так и Cargo.
Импорт MongoDB Compass поддерживает SSH-туннелированные подключения mongodb+srv://, разрешая
SRV-цель и переписывая локальную конечную точку с необходимыми параметрами TLS и прямого
подключения.
Конфигурация
Глобальное состояние по умолчанию хранится в ~/.config/safeselect/. Политика проекта хранится в .safeselect/ в корне репозитория:
<repo-root>/
└── .safeselect/
├── project.toml
└── environments/
└── <env>.tomlSafeSelect поднимается вверх от текущего каталога, чтобы найти .safeselect/. Используйте --project <path>, когда агент или скрипт должен нацеливаться на конкретный репозиторий.
Поддерживаемые агенты
Клиент | Пользовательская область | Область проекта | Интеграция |
OpenCode | Да | Да | JSON/JSONC |
OpenAI Codex | Да | Да | lossless TOML |
Claude Code | Да | Да | native |
Cursor | Да | Да |
|
Windsurf | Да | Нет | глобальная конфигурация MCP Windsurf |
GitHub Copilot | Да | Да |
|
Gemini CLI | Да | Да |
|
SafeSelect никогда не переключается молча на более широкую область. В частности,
--local для Windsurf завершается ошибкой с понятным пояснением, поскольку Windsurf не
документирует конфигурацию MCP в области проекта.
Сборка из исходного кода
./install.sh
safeselect --versionТребования: Rust 1.81+, Java 17+, Maven 3.8+. sshpass необязателен для SSH-туннелей на основе пароля.
Документация
Примечания к выпуску генерируются из CHANGELOG.md.
Лицензия
MIT — см. LICENSE.
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 Servers
- AlicenseNot gradedqualityAmaintenanceProvides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.3MIT
- AlicenseAqualityBmaintenanceSafe, read-only SQL analytics for AI agents over MCP, enabling exploration, profiling, and querying of data without mutation risk.5MIT
- FlicenseNot gradedqualityCmaintenanceProvides read-only database access for AI agents across multiple databases (Postgres, MySQL, MongoDB, Elasticsearch) with enforced read-only guarantees and separate tools for prod and non-prod environments.
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.923MIT
Related MCP Connectors
Read-only Remote MCP for externally grounded AI agent trust receipts.
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Read-only Dant3 MCP for public rooms, agents, jobs and provisional machine onboarding.
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/antonillos/safeselect'
If you have feedback or need assistance with the MCP directory API, please join our Discord server