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, чтобы ограничить наборы результатов, возвращаемые ассистенту.
Документация
Локальный 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-сервер | |
| VS Code | Ctrl+Shift+P → «Настройки: Открыть пользовательские настройки (JSON)» | |
| Kiro | ~/.kiro/settings/mcp.json (глобально) или .kiro/settings/mcp.json (проект) |
Любой 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 | Список столбцов таблицы/представления | table | database, schema |
switch_database_connection* | Переключиться на другую базу данных | path | create_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-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 и создает релиз GitHub с пакетом MCPB
Лицензия
Лицензия MIT — см. файл LICENSE.
mcp-name: io.github.motherduckdb/mcp-server-motherduck