MotherDuck

официальный

Выполнение запросов и анализ данных с помощью MotherDuck и локального DuckDB

Что можно делать с MotherDuck MCP?

  • Выполнение SQL-запросов к DuckDB или MotherDuck — попросите ассистента выполнить аналитический SQL через execute_query, поддерживающий операции чтения и, при необходимости, записи.
  • Изучение схем баз данных — просмотрите доступные базы данных с помощью list_databases, затем детализируйте таблицы и столбцы, используя list_tables и list_columns.
  • Переключение между подключениями к базам данных — используйте switch_database_connection для перехода между локальными файлами DuckDB, экземплярами в памяти, базами данных, размещенными в S3, или MotherDuck во время выполнения.
  • Подключение к MotherDuck для облачной аналитики — укажите серверу md: с токеном для запроса и управления базами данных MotherDuck напрямую.
  • Управление размером вывода запросов — настройте --max-rows и --max-chars, чтобы ограничить наборы результатов, возвращаемые ассистенту.

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

MotherDuck / DuckDB Local MCP Server

Локальный MCP-сервер DuckDB / MotherDuck

SQL-аналитика и инжиниринг данных для AI-ассистентов и IDE.


Подключайте AI-ассистентов к вашим данным с помощью мощного аналитического SQL-движка DuckDB. Поддерживает подключение к локальным файлам DuckDB, базам данных в памяти, базам данных на S3 и MotherDuck. Позволяет выполнять SQL-запросы на чтение и запись, просматривать каталоги баз данных и переключаться между различными подключениями к базам данных на лету.

Ищете полностью управляемый удаленный MCP-сервер для MotherDuck?Перейти к документации по удаленному MCP MotherDuck

Удаленный и локальный MCP

Удаленный MCPЛокальный MCP (этот репозиторий)
ХостингРазмещается MotherDuckЗапускается локально/самостоятельно
НастройкаБез настройкиТребуется локальная установка
ДоступПоддерживается чтение-записьПоддерживается чтение-запись
Локальная файловая система-Запросы к локальным и удаленным базам данных, импорт данных из локальной файловой системы и экспорт в неё

📝 Переходите с версии 0.x?

  • Только чтение по умолчанию: Сервер теперь по умолчанию работает в режиме только для чтения. Добавьте --read-write, чтобы включить доступ на запись. См. раздел Защита для продакшена.
  • Изменена база данных по умолчанию: Значение по умолчанию для --db-path изменено с md: на :memory:. Добавьте --db-path md: явно для MotherDuck.
  • Режим только для чтения MotherDuck требует токен масштабирования чтения: Для подключений MotherDuck в режиме только для чтения требуется токен масштабирования чтения. Для обычных токенов требуется --read-write.

Быстрый старт

Предварительные требования: Установите uv через pip install uv или brew install uv

Подключение к DuckDB в памяти (режим разработки)

{
  "mcpServers": {
    "DuckDB (in-memory, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
    }
  }
}

Полная гибкость без ограничений — доступ на чтение и запись, а также возможность переключения на любую базу данных (локальные файлы, S3 или MotherDuck) во время выполнения.

Подключение к локальному файлу DuckDB в режиме только для чтения

{
  "mcpServers": {
    "DuckDB (read-only)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "/absolute/path/to/your.duckdb"]
    }
  }
}

Подключается к определенному файлу DuckDB в режиме только для чтения. Не удерживает блокировку файла, поэтому удобно использовать вместе с подключением на запись к тому же файлу DuckDB. Вы также можете подключаться к удаленным файлам DuckDB на S3, используя s3://bucket/path.duckdb — см. раздел Переменные окружения для аутентификации S3. Если вы рассматриваете сторонний доступ к MCP, см. раздел Защита для продакшена.

Подключение к MotherDuck в режиме чтения-записи

{
  "mcpServers": {
    "MotherDuck (local, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

Дополнительные параметры см. в разделе Параметры командной строки, руководство по развертыванию — в разделе Защита для продакшена, а при возникновении проблем — в разделе Устранение неполадок.

Настройка клиента

КлиентРасположение конфигурацииУстановка в один клик
Claude DesktopНастройки → Разработчик → Редактировать конфигурацию.mcpb (MCP Bundle)
Claude CodeИспользуйте команды CLI ниже-
Codex CLIИспользуйте команды CLI ниже или ~/.codex/config.toml-
Gemini CLIИспользуйте команды CLI ниже или ~/.gemini/settings.json-
CursorНастройки → MCP → Добавить новый глобальный MCP-серверInstall in Cursor
VS CodeCtrl+Shift+P → «Настройки: Открыть пользовательские настройки (JSON)»Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json (глобально) или .kiro/settings/mcp.json (проект)Add to Kiro

Любой MCP-совместимый клиент может использовать этот сервер. Добавьте JSON-конфигурацию из раздела Быстрый старт в файл конфигурации MCP вашего клиента. Расположение файла конфигурации уточняйте в документации вашего клиента.

Команды Claude Code CLI

DuckDB в памяти (режим разработки):

claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

Локальный DuckDB (только чтение):

claude mcp add --scope user duckdb --transport stdio -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (чтение-запись):

claude mcp add --scope user motherduck --transport stdio --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Команды Codex CLI

DuckDB в памяти (режим разработки):

codex mcp add duckdb -- uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

Локальный DuckDB (только чтение):

codex mcp add duckdb -- uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (чтение-запись):

codex mcp add motherduck --env motherduck_token=YOUR_TOKEN -- uvx mcp-server-motherduck --db-path md: --read-write
Команды Gemini CLI

DuckDB в памяти (режим разработки):

gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases

Локальный DuckDB (только чтение):

gemini mcp add -s user duckdb uvx mcp-server-motherduck --db-path /absolute/path/to/db.duckdb

MotherDuck (чтение-запись):

gemini mcp add -s user -e motherduck_token=YOUR_TOKEN motherduck uvx mcp-server-motherduck --db-path md: --read-write
Ручная JSON-конфигурация Kiro

Добавьте следующее в ваш файл конфигурации Kiro MCP (~/.kiro/settings/mcp.json для глобальной или .kiro/settings/mcp.json для области проекта). Подробнее см. в документации Kiro MCP.

DuckDB в памяти (режим разработки):

{
  "mcpServers": {
    "DuckDB (in-memory, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", ":memory:", "--read-write", "--allow-switch-databases"]
    }
  }
}

MotherDuck (чтение-запись):

{
  "mcpServers": {
    "MotherDuck (local, r/w)": {
      "command": "uvx",
      "args": ["mcp-server-motherduck", "--db-path", "md:", "--read-write"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

Инструменты

ИнструментОписаниеОбязательные входные данныеНеобязательные входные данные
execute_queryВыполнить SQL-запрос (диалект DuckDB)sql-
list_databasesСписок всех баз данных (полезно для MotherDuck или нескольких подключенных БД)--
list_tablesСписок таблиц и представлений-database, schema
list_columnsСписок столбцов таблицы/представленияtabledatabase, schema
switch_database_connection*Переключиться на другую базу данныхpathcreate_if_not_exists

*Требуется флаг --allow-switch-databases

Все инструменты возвращают JSON. Результаты по умолчанию ограничены 1024 строками / 50 000 символов (настраивается через --max-rows, --max-chars).

Защита для продакшена

При предоставлении сторонним лицам доступа к самостоятельно размещенному MCP-серверу одного режима только для чтения недостаточно — он по-прежнему разрешает доступ к локальной файловой системе, изменение настроек DuckDB и другие потенциально чувствительные операции.

Для продакшен-развертываний со сторонним доступом мы рекомендуем Удаленный MCP MotherDuck — без настройки, с возможностью чтения-записи, размещается MotherDuck.

Самостоятельное размещение MCP MotherDuck: Сделайте форк этого репозитория и настройте по мере необходимости. Используйте сервисный аккаунт с токенами масштабирования чтения и включите режим SaaS, чтобы ограничить доступ к локальным файлам.

Самостоятельное размещение MCP DuckDB: Используйте --init-sql для применения настроек безопасности. Доступные параметры см. в руководстве по защите DuckDB.

Docker

Соберите и запустите сервер с потоковой передачей HTTP на порту 8000 (по умолчанию используется DuckDB в памяти):

docker build -t mcp-server-motherduck .
docker run --rm -p 8000:8000 mcp-server-motherduck

Подключитесь к MotherDuck, передав токен и переопределив команду:

docker run --rm -p 8000:8000 \
  -e motherduck_token="$MOTHERDUCK_TOKEN" \
  mcp-server-motherduck --transport http --db-path md:

Конечная точка MCP доступна по адресу http://localhost:8000/mcp. Флаги командной строки и переменные окружения, указанные ниже, по-прежнему применяются.

Параметры командной строки

ПараметрПо умолчаниюОписание
--db-path:memory:Путь к базе данных: локальный файл (абсолютный), md: (MotherDuck) или URL s3://
--motherduck-tokenпеременная окружения motherduck_tokenТокен доступа MotherDuck
--read-writeFalseВключить доступ на запись
--motherduck-saas-modeFalseРежим SaaS MotherDuck (ограничивает локальный доступ)
--allow-switch-databasesFalseВключить инструмент switch_database_connection
--max-rows1024Максимальное количество возвращаемых строк
--max-chars50000Максимальное количество возвращаемых символов
--query-timeout-1Тайм-аут запроса в секундах (-1 = отключен)
--init-sqlNoneSQL для выполнения при запуске
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
Дополнительные параметры строки подключения MotherDuck (пары key=value, разделенные &)
--ephemeral-connectionsTrueИспользовать временные подключения для локальных файлов только для чтения
--transportstdioТип транспорта: stdio или http
--stateless-httpFalseТолько для совместимости протоколов (например, с AWS Bedrock AgentCore Runtime). Сервер по-прежнему поддерживает глобальное состояние через общий DatabaseClient.
--port8000Порт для HTTP-транспорта
--host127.0.0.1Хост для HTTP-транспорта

Переменные окружения

ПеременнаяОписание
motherduck_token или MOTHERDUCK_TOKENТокен доступа MotherDuck (альтернатива --motherduck-token)
HOMEИспользуется DuckDB для расширений и конфигурации. Переопределите с помощью --home-dir, если не задано.
AWS_ACCESS_KEY_IDКлюч доступа AWS для подключений к базе данных S3
AWS_SECRET_ACCESS_KEYСекретный ключ AWS для подключений к базе данных S3
AWS_SESSION_TOKENТокен сеанса AWS для временных учетных данных (роли IAM, SSO, профили экземпляров EC2)
AWS_DEFAULT_REGIONРегион AWS для подключений S3
AWS_ENDPOINTКонечная точка AWS для подключений S3

Устранение неполадок

  • spawn uvx ENOENT: Укажите полный путь к uvx (выполните which uvx, чтобы найти его)
  • Файл заблокирован: Убедитесь, что --ephemeral-connections включен (по умолчанию: true) и что вы не подключены в режиме чтения-записи

Ресурсы

Разработка

Для запуска из исходного кода:

{
  "mcpServers": {
    "Local DuckDB (Dev)": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-server-motherduck", "run", "mcp-server-motherduck", "--db-path", "md:"],
      "env": {
        "motherduck_token": "<YOUR_MOTHERDUCK_TOKEN>"
      }
    }
  }
}

Процесс выпуска

  1. Запустите GitHub Action Release New Version
  2. Введите версию в формате MAJOR.MINOR.PATCH
  3. Рабочий процесс обновляет версию, публикует в PyPI/реестре MCP и создает релиз GitHub с пакетом MCPB

Лицензия

Лицензия MIT — см. файл LICENSE.

mcp-name: io.github.motherduckdb/mcp-server-motherduck