db-mcp-server
db-mcp-server
Локальный MCP-сервер, который предоставляет ИИ-ассистенту для программирования (например, Claude Code) изолированный по учётным данным доступ к вашим базам данных PostgreSQL. Ассистент отправляет только SQL и получает только строки — имена пользователей баз данных, пароли и SSH-ключи никогда не попадают в контекст модели или в транскрипт разговора.
Зачем
Подключение ИИ-ассистента к базе данных обычно означает размещение строк подключения и паролей там, где модель (и её транскрипт) может их прочитать. Этот сервер сохраняет эту границу: он владеет зашифрованными учётными данными и SSH-туннелями, предоставляет небольшой набор инструментов только для SQL и по умолчанию работает в режиме только для чтения.
Related MCP server: Postgres Scout MCP
Как это работает
Каталог (
registry.yaml) — маршрутизация без секретов. Организован какcustomers → environments → services; каждая служба сопоставляется с именем базы данных иsecret_ref(указателем в хранилище — никогда не учётными данными).Хранилище (
vault.enc) — AES-256-GCM с ключом, полученным через scrypt. Содержит учётные данные БД, расшифровываемые в память один раз при запуске с помощью парольной фразы.Пул туннелей — один SSH-туннель на
(customer, environment)черезsshtunnel, привязанный к эфемерному порту127.0.0.1.Исполнитель —
psycopg.run_queryвыполняется в транзакции Postgres READ ONLY (движок отклоняет любую запись);run_write_queryтребуетconfirm=true.
Установка
python -m venv .venv
# Windows PowerShell: .venv\Scripts\Activate.ps1 (bash: source .venv/Scripts/activate)
pip install -e ".[dev]"Конфигурация
Конфигурация задаётся через переменные окружения; значения по умолчанию разрешаются относительно корня проекта.
Variable | Purpose | Default |
| Парольная фраза хранилища (требуется для запуска сервера) | — |
| Путь к |
|
| Путь к |
|
| Каталог с SSH PEM-ключами |
|
| Путь к |
|
Подготовка (первоначальная настройка)
Скопируйте шаблон и заполните реальными значениями:
cp bootstrap.example.yaml bootstrap.yamlПоместите ваши SSH-приватные ключи в
keys/(имена файлов должны совпадать с полямиpem_keyв каталоге).Сгенерируйте несекретный каталог и зашифрованное хранилище (запросит парольную фразу, которую вы будете использовать для запуска сервера):
python -m db_mcp_server.bootstrap --dry-run # preview, writes nothing
python -m db_mcp_server.bootstrap # writes registry.yaml + vault.enc
python -m db_mcp_server.vault_admin verify # expect {"ok": true}bootstrap.yaml содержит учётные данные в открытом виде — он игнорируется git; удалите его или храните офлайн после создания хранилища.
Инструменты командной строки
Команда | Назначение |
| MCP-сервер (stdio). Запускается MCP-клиентом, а не вручную. |
| Управление учётными данными в хранилище: |
| Разделяет |
(Консольные команды доступны после pip install -e .; форма python -m db_mcp_server.<module> работает всегда.)
Инструменты, доступные ассистенту
list_databases()— каталог (customers → environments → services); без секретов.run_query(customer, environment, service, sql, max_rows?)— только чтение.run_write_query(customer, environment, service, sql, confirm)— запись с подтверждением.
Ошибки предметной области возвращаются в виде структурированного {error_code, message}, а не исключения, чтобы ассистент мог на них реагировать.
Регистрация в MCP-клиенте
Пример .mcp.json (скорректируйте пути). Используйте ${DB_MCP_PASSPHRASE}, чтобы парольная фраза читалась из оболочки, а не была записана в файл:
{
"mcpServers": {
"db": {
"command": "/absolute/path/to/db-mcp-server/.venv/Scripts/python.exe",
"args": ["-m", "db_mcp_server.server"],
"env": {
"DB_MCP_PASSPHRASE": "${DB_MCP_PASSPHRASE}"
}
}
}
}Замечания по безопасности
vault.enc,keys/,bootstrap.yaml,*.envи*.pemигнорируются git — никогда не коммитьте их.Парольная фраза хранилища передаётся через
DB_MCP_PASSPHRASE(или запрос) — никогда не хранится вregistry.yaml, argv или журналах.db-vaultчитает пароль БД через скрытый запрос (getpass), никогда через argv.run_queryдоступен только для чтения на уровне движка Postgres; записи требуютconfirm=true.
Тесты
pip install -e ".[dev]" && python -m pytest -qИнтеграционный тест БД пропускается, если DB_MCP_TEST_DSN не указывает на доступный PostgreSQL.
Дорожная карта (не в этой сборке)
Постоянный журнал аудита, многопользовательский режим, поддержка внешнего менеджера секретов, инструменты интроспекции схемы и денай-лист разрешений, чтобы превратить изоляцию учётных данных в жёсткую границу.
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
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with PostgreSQL databases using natural language queries, providing secure read-only access to database schemas and SQL translation capabilities.67
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to safely explore, analyze, and maintain PostgreSQL databases with read-only mode by default, SQL injection prevention, query performance analysis, and optional write operations.90Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with PostgreSQL databases through MCP, supporting multi-database and schema access with security controls like read-only mode and SQL auditing.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.
Related MCP Connectors
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Generate realistic, FK-consistent synthetic test data for your databases from your AI assistant.
Comprehensive PostgreSQL documentation and best practices, including ecosystem tools
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/gwdmnn/keyward-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server