# dbatools-mcp-server

MCP-сервер, который отдаёт ИИ-ассистенту команды PowerShell-модуля dbatools: поиск, справку и запуск.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 6
- Автор: dataplat
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/dataplat/dbatools-mcp-server
- Обновлён: 2026-10-22
- HTML: https://affpapa.org/nevibecode/mcp/dbatools-mcp-server

## Что делает

Сервер подключает модуль dbatools к ассистенту через MCP. Четыре инструмента: `list_dbatools_commands` ищет команды по глаголу, существительному, ключевому слову или уровню риска, `get_dbatools_command_help` возвращает нормализованную справку из `Get-Help -Full`, `invoke_dbatools_command` запускает команду с проверкой параметров, а `check_dbatools_environment` проверяет установку PowerShell и dbatools, свежесть индекса и совпадение версий. Справка берётся из comment-based help самого модуля, поэтому описания не расходятся с установленной версией.

Каждая команда доступна и как ресурс `dbatools://command/{name}` — например, `dbatools://command/Get-DbaDatabase` — в виде структурированного JSON. Команды классифицируются по глаголу: readonly выполняется всегда, change и destructive в safe mode требуют `confirm: true`. Для SQL-аутентификации передаётся `SqlCredential` с именем пользователя и паролем.

Для работы нужны Node.js 20+, PowerShell 7+ (`pwsh`) и сам модуль dbatools. Индекс справки генерируется из локальной установки: `npm run refresh-help`, после обновления модуля его надо пересобрать, иначе сервер предупредит о расхождении версий. По умолчанию `invoke_dbatools_command` переиспользует один живой процесс `pwsh` с уже импортированным dbatools, поэтому кэш SMO-подключений виден между вызовами в рамках одного запуска сервера.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `DBATOOLS_SAFE_MODE`, `MAX_OUTPUT_ROWS`, `COMMAND_TIMEOUT_SECONDS`, `PWSH_EXE` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env DBATOOLS_SAFE_MODE=<DBATOOLS_SAFE_MODE> --env MAX_OUTPUT_ROWS=<MAX_OUTPUT_ROWS> --env COMMAND_TIMEOUT_SECONDS=<COMMAND_TIMEOUT_SECONDS> --env PWSH_EXE=<PWSH_EXE> --transport stdio dbatools-mcp-server -- npx -y dbatools-mcp-server
```
Вместо <…> подставьте свои значения

### Codex

**Командой платформы**
```bash
codex mcp add dbatools-mcp-server --env DBATOOLS_SAFE_MODE=<DBATOOLS_SAFE_MODE> --env MAX_OUTPUT_ROWS=<MAX_OUTPUT_ROWS> --env COMMAND_TIMEOUT_SECONDS=<COMMAND_TIMEOUT_SECONDS> --env PWSH_EXE=<PWSH_EXE> -- npx -y dbatools-mcp-server
```
Вместо <…> подставьте свои значения

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "dbatools-mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "dbatools-mcp-server"
            ],
            "env": {
                "DBATOOLS_SAFE_MODE": "<DBATOOLS_SAFE_MODE>",
                "MAX_OUTPUT_ROWS": "<MAX_OUTPUT_ROWS>",
                "COMMAND_TIMEOUT_SECONDS": "<COMMAND_TIMEOUT_SECONDS>",
                "PWSH_EXE": "<PWSH_EXE>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "dbatools-mcp-server": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "dbatools-mcp-server"
            ],
            "env": {
                "DBATOOLS_SAFE_MODE": "<DBATOOLS_SAFE_MODE>",
                "MAX_OUTPUT_ROWS": "<MAX_OUTPUT_ROWS>",
                "COMMAND_TIMEOUT_SECONDS": "<COMMAND_TIMEOUT_SECONDS>",
                "PWSH_EXE": "<PWSH_EXE>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e DBATOOLS_SAFE_MODE=<DBATOOLS_SAFE_MODE> -e MAX_OUTPUT_ROWS=<MAX_OUTPUT_ROWS> -e COMMAND_TIMEOUT_SECONDS=<COMMAND_TIMEOUT_SECONDS> -e PWSH_EXE=<PWSH_EXE> dbatools-mcp-server npx -y dbatools-mcp-server
```
Вместо <…> подставьте свои значения

## Когда брать
- найти нужную команду dbatools по глаголу или ключевому слову
- получить полную справку по команде с параметрами и примерами
- выполнить команду dbatools из чата с проверкой параметров
- защитить базу от случайных изменений через safe mode
- проверить, что PowerShell и dbatools установлены и версии совпадают

## Примеры запросов агенту
- Найди команды dbatools для работы с бэкапами
- Покажи справку по `Get-DbaDatabase`
- Запусти `Get-DbaDatabase` на инстансе `SQL01`

## Похожие
- [rds-sqlserver](https://affpapa.org/nevibecode/skills/rds-sqlserver.md) — скилл · 4600 установок
- [ms-sql-dba](https://affpapa.org/nevibecode/rules/ms-sql-dba.md) — правило · ★ 40451
- [azure-sql-database](https://affpapa.org/nevibecode/skills/azure-sql-database.md) — скилл · 1300 установок
- [Microsoft SQL Server](https://affpapa.org/nevibecode/mcp/microsoft-sql-server.md) — MCP-сервер · ★ 9
- [SqlAugur](https://affpapa.org/nevibecode/mcp/sqlaugur.md) — MCP-сервер · ★ 8
- [db-dump-dt](https://affpapa.org/nevibecode/skills/db-dump-dt.md) — скилл · 38 установок

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
