Skip to main content
Glama

SafeSelect MCP

Агенты могут смотреть. Они не могут изменять.

Отказоустойчивый доступ только для чтения к PostgreSQL и MongoDB для ИИ-агентов, работающих с кодом, через MCP.

CI CRAP Security Rust Java MCP Homebrew asdf License

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

Поддерживается

Обнаружение, индексы/статистика, select и explain

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 status

SafeSelect использует любой доступный 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 в следующем порядке:

  1. database_info

  2. list_tables, затем describe_table; проверьте list_table_indexes или ограниченную статистику, если это полезно для SQL

  3. list_databases, list_collections, затем discover_document_schema для NoSQL

  4. select / explain или ограниченный инструмент чтения MongoDB, соответствующий задаче

  5. 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

list_tables, describe_table, list_table_indexes, get_database_stats, get_table_stats, select, explain

Чтение MongoDB

list_databases, list_collections, find_documents, aggregate_documents, distinct_documents, count_documents, explain_documents

Анализ MongoDB

profile_document_field, discover_document_schema, generate_document_fixture, list_collection_indexes, get_database_stats, get_collection_stats

Подключение

database_info, check, connect, disconnect, reconnect

Аудит

audit_status, audit_recent

Конфигурация

config_validate, config_show, config_set_password, config_rename_environment, config_delete_environment, config_reset

Настройка

import_compose, driver_list, driver_add, driver_download, agent_detect, agent_install, agent_status, agent_uninstall

Когда каталог .safeselect/ отсутствует, safeselect serve --environment <env> автоматически переходит в режим настройки и предоставляет только инструменты, безопасные для настройки.

[!IMPORTANT] Режим настройки не предоставляет инструменты запросов. Агенты могут помочь импортировать и проверить конфигурацию до того, как станут доступны инструменты проверки базы данных.

Основы CLI

Команда

Назначение

safeselect serve --environment <env>

Запустить MCP-сервер

safeselect check --environment <env>

Проверить конфигурацию, секреты, туннели, sidecar и подключение к бэкенду

safeselect doctor --environment <env>

Вывести более подробную диагностику со стабильными кодами

safeselect import-dbeaver <zip>

Импортировать подключения DBeaver

safeselect import-compose [--path <path>]

Импортировать из docker-compose

safeselect import-compass [--path <path>]

Импортировать подключения MongoDB Compass

safeselect agent install <client> --environment <env>

Установить запись MCP

safeselect config set-password --environment <env>

Сохранить пароль базы данных

safeselect config set-ssh-password --environment <env>

Сохранить SSH-пароль

safeselect uninstall

Удалить установленные бинарные файлы, глобальное состояние, данные аудита и записи Keychain

safeselect uninstall --binary-only

Удалить только пользовательские бинарные файлы и сохранить конфигурацию

Используйте safeselect --help или --help для конкретной команды, чтобы получить полную справку по CLI.

Uninstall проверяет как расположение бинарных файлов установщика релизов, так и Cargo. Импорт MongoDB Compass поддерживает SSH-туннелированные подключения mongodb+srv://, разрешая SRV-цель и переписывая локальную конечную точку с необходимыми параметрами TLS и прямого подключения.

Конфигурация

Глобальное состояние по умолчанию хранится в ~/.config/safeselect/. Политика проекта хранится в .safeselect/ в корне репозитория:

<repo-root>/
└── .safeselect/
    ├── project.toml
    └── environments/
        └── <env>.toml

SafeSelect поднимается вверх от текущего каталога, чтобы найти .safeselect/. Используйте --project <path>, когда агент или скрипт должен нацеливаться на конкретный репозиторий.

Поддерживаемые агенты

Клиент

Пользовательская область

Область проекта

Интеграция

OpenCode

Да

Да

JSON/JSONC mcp

OpenAI Codex

Да

Да

lossless TOML mcp_servers

Claude Code

Да

Да

native claude mcp scopes

Cursor

Да

Да

.cursor/mcp.json

Windsurf

Да

Нет

глобальная конфигурация MCP Windsurf

GitHub Copilot

Да

Да

servers в MCP JSON

Gemini CLI

Да

Да

.gemini/settings.json

SafeSelect никогда не переключается молча на более широкую область. В частности, --local для Windsurf завершается ошибкой с понятным пояснением, поскольку Windsurf не документирует конфигурацию MCP в области проекта.

Сборка из исходного кода

./install.sh
safeselect --version

Требования: Rust 1.81+, Java 17+, Maven 3.8+. sshpass необязателен для SSH-туннелей на основе пароля.

Документация

Примечания к выпуску генерируются из CHANGELOG.md.

Лицензия

MIT — см. LICENSE.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
4dRelease cycle
15Releases (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 Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides 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.
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.
    92
    3
    MIT

View all related MCP servers

Related MCP Connectors

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/antonillos/safeselect'

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