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 и другие
Документация
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 MCP | Local 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-сервер | |
| VS Code | Ctrl+Shift+P → "Preferences: Open User Settings (JSON)" | |
| Kiro | ~/.kiro/settings/mcp.json (глобально) или .kiro/settings/mcp.json (проект) |
Любой 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 | Список столбцов таблицы/представления | table | database, schema |
switch_database_connection* | Переключение на другую базу данных | path | create_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-write | False | Включить доступ на запись |
--motherduck-saas-mode | False | Режим SaaS MotherDuck (ограничивает локальный доступ) |
--allow-switch-databases | False | Включить инструмент switch_database_connection |
--max-rows | 1024 | Максимальное количество возвращаемых строк |
--max-chars | 50000 | Максимальное количество возвращаемых символов |
--query-timeout | -1 | Тайм-аут запроса в секундах (-1 = отключено) |
--init-sql | None | SQL для выполнения при запуске |
--motherduck-connection-parameters | session_hint=mcp&dbinstance_inactivity_ttl=0s | Дополнительные параметры строки подключения MotherDuck (пары key=value, разделенные &) |
--ephemeral-connections | True | Использовать временные подключения для локальных файлов только для чтения |
--transport | stdio | Тип транспорта: stdio или http |
--stateless-http | False | Только для совместимости протокола (например, с AWS Bedrock AgentCore Runtime). Сервер по-прежнему поддерживает глобальное состояние через общий DatabaseClient. |
--port | 8000 | Порт для HTTP-транспорта |
--host | 127.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) и что вы не подключены в режиме чтения и записи
Ресурсы
- Документация MotherDuck MCP
- Close the Loop: Faster Data Pipelines with MCP, DuckDB & AI (Блог)
- Faster Data Pipelines with MCP and DuckDB (YouTube)
Разработка
Для запуска из исходного кода:
{
"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>"
}
}
}
}
Процесс выпуска
- Запустите GitHub Action
Release New Version - Введите версию в формате
MAJOR.MINOR.PATCH - Рабочий процесс увеличивает версию, публикует в PyPI/MCP registry и создает GitHub-релиз с пакетом MCPB
Лицензия
Лицензия MIT — см. файл LICENSE.
mcp-name: io.github.motherduckdb/mcp-server-motherduck