MotherDuck

официальный

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

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

  • Выполнение SQL-аналитики — Попросите ассистента выполнить запросы к локальным файлам DuckDB, базам данных в памяти или MotherDuck с помощью execute_query с полной поддержкой диалекта SQL DuckDB.

  • Изучение структуры базы данных — Попросите ассистента вывести список баз данных, таблиц и столбцов с помощью list_databases, list_tables и list_columns, чтобы понять схему ваших данных.

  • Переключение подключений к базе данных — Укажите ассистенту переключаться между локальными файлами, базами данных, размещёнными в S3, или MotherDuck на лету через switch_database_connection (требуется флаг --allow-switch-databases).

  • Запись и изменение данных — Включите режим чтения-записи, чтобы ассистент мог вставлять, обновлять или удалять записи непосредственно в подключённых базах данных.

  • Импорт и экспорт данных — Используйте сервер для выполнения запросов к локальным и удалённым базам данных, импортируя данные из вашей локальной файловой системы или экспортируя в неё.

Размещённый MCP-сервер

npx add-mcp 'https://api.motherduck.com/mcp'

Устанавливается в Claude Code, Codex, Cursor и другие

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

MotherDuck / DuckDB Local MCP Server

DuckDB / MotherDuck Local MCP Server

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


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

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

Remote vs Local MCP

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

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

Предварительные требования: Установите 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 → "Preferences: Open User Settings (JSON)"Install with UV in VS Code
Kiro~/.kiro/settings/mcp.json (глобально) или .kiro/settings/mcp.json (проект)Add to Kiro

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

Команды CLI для Claude Code

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
Команды CLI для Codex

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
Команды CLI для Gemini

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

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

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 и другие потенциально чувствительные операции.

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

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

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

Docker

Соберите и запустите сервер с Streamable 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. Флаги CLI и переменные окружения из приведенного ниже по-прежнему применяются.

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

ПараметрПо умолчаниюОписание
--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 registry и создает GitHub-релиз с пакетом MCPB

Лицензия

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

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