MotherDuck MCP Server

공식

MotherDuck 및 로컬 DuckDB로 데이터를 쿼리하고 분석합니다.

문서

MotherDuck / DuckDB Local MCP Server

DuckDB / MotherDuck 로컬 MCP 서버

AI 어시스턴트 및 IDE를 위한 SQL 분석 및 데이터 엔지니어링.


DuckDB의 강력한 분석 SQL 엔진을 사용하여 AI 어시스턴트를 데이터에 연결하세요. 로컬 DuckDB 파일, 인메모리 데이터베이스, S3 호스팅 데이터베이스 및 MotherDuck 연결을 지원합니다. SQL 읽기 및 쓰기 쿼리 실행, 데이터베이스 카탈로그 탐색, 여러 데이터베이스 연결 간 실시간 전환을 허용합니다.

완전 관리형 원격 MCP 서버를 찾고 계신가요?MotherDuck 원격 MCP 문서로 이동

원격 vs 로컬 MCP

원격 MCP로컬 MCP (이 저장소)
호스팅MotherDuck에서 호스팅로컬/자체 호스팅 실행
설정설정 불필요로컬 설치 필요
접근읽기-쓰기 지원읽기-쓰기 지원
로컬 파일 시스템-로컬 및 원격 데이터베이스 간 쿼리, 로컬 파일 시스템에서 데이터 수집/내보내기

📝 v0.x에서 마이그레이션하시나요?

  • 기본적으로 읽기 전용: 서버가 이제 기본적으로 읽기 전용 모드로 실행됩니다. 쓰기 접근을 활성화하려면 --read-write를 추가하세요. 프로덕션 보안을 참조하세요.
  • 기본 데이터베이스 변경됨: --db-path 기본값이 md:에서 :memory:로 변경되었습니다. MotherDuck을 명시적으로 사용하려면 --db-path md:를 추가하세요.
  • MotherDuck 읽기 전용에는 읽기 스케일링 토큰 필요: 읽기 전용 모드의 MotherDuck 연결에는 읽기 스케일링 토큰이 필요합니다. 일반 토큰에는 --read-write가 필요합니다.

빠른 시작

사전 요구 사항: uvpip 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 파일에 대한 쓰기 연결과 함께 사용하기 편리합니다. s3://bucket/path.duckdb를 사용하여 S3의 원격 DuckDB 파일에도 연결할 수 있습니다 — S3 인증에 대한 환경 변수를 참조하세요. MCP에 대한 제3자 접근을 고려 중이라면 프로덕션 보안을 참조하세요.

읽기-쓰기 모드로 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 번들)
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
Kiro 수동 JSON 구성

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_querySQL 쿼리 실행 (DuckDB 방언)sql-
list_databases모든 데이터베이스 나열 (MotherDuck 또는 여러 연결된 DB에 유용)--
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를 통해 구성 가능).

프로덕션 보안

제3자에게 자체 호스팅 MCP 서버에 대한 접근 권한을 부여할 때 읽기 전용 모드만으로는 충분하지 않습니다 — 여전히 로컬 파일 시스템 접근, DuckDB 설정 변경 및 기타 잠재적으로 민감한 작업을 허용합니다.

제3자 접근이 있는 프로덕션 배포의 경우 **MotherDuck 원격 MCP**를 권장합니다 — 설정 불필요, 읽기-쓰기 가능, MotherDuck에서 호스팅.

MotherDuck MCP 자체 호스팅: 이 저장소를 포크하여 필요에 맞게 사용자 정의하세요. **서비스 계정**과 **읽기 스케일링 토큰**을 사용하고 **SaaS 모드**를 활성화하여 로컬 파일 접근을 제한하세요.

DuckDB MCP 자체 호스팅: --init-sql를 사용하여 보안 설정을 적용하세요. 사용 가능한 옵션은 DuckDB 보안 가이드를 참조하세요.

명령줄 매개변수

매개변수기본값설명
--db-path:memory:데이터베이스 경로: 로컬 파일(절대 경로), md: (MotherDuck), 또는 s3:// URL
--motherduck-tokenmotherduck_token 환경 변수MotherDuck 접근 토큰
--read-writeFalse쓰기 접근 활성화
--motherduck-saas-modeFalseMotherDuck SaaS 모드 (로컬 접근 제한)
--allow-switch-databasesFalseswitch_database_connection 도구 활성화
--max-rows1024반환되는 최대 행 수
--max-chars50000반환되는 최대 문자 수
--query-timeout-1쿼리 제한 시간(초) (-1 = 비활성화)
--init-sqlNone시작 시 실행할 SQL
--motherduck-connection-parameterssession_hint=mcp&
dbinstance_inactivity_ttl=0s
추가 MotherDuck 연결 문자열 매개변수 (&로 구분된 key=value 쌍)
--ephemeral-connectionsTrue읽기 전용 로컬 파일에 임시 연결 사용
--transportstdio전송 유형: stdio 또는 http
--stateless-httpFalse프로토콜 호환성 전용 (예: AWS Bedrock AgentCore Runtime과 함께). 서버는 여전히 공유 DatabaseClient를 통해 전역 상태를 유지합니다.
--port8000HTTP 전송용 포트
--host127.0.0.1HTTP 전송용 호스트

환경 변수

변수설명
motherduck_token 또는 MOTHERDUCK_TOKENMotherDuck 접근 토큰 (--motherduck-token의 대안)
HOMEDuckDB에서 확장 및 구성에 사용됩니다. 설정되지 않은 경우 --home-dir로 재정의하세요.
AWS_ACCESS_KEY_IDS3 데이터베이스 연결용 AWS 액세스 키
AWS_SECRET_ACCESS_KEYS3 데이터베이스 연결용 AWS 비밀 키
AWS_SESSION_TOKEN임시 자격 증명용 AWS 세션 토큰 (IAM 역할, SSO, EC2 인스턴스 프로필)
AWS_DEFAULT_REGIONS3 연결용 AWS 리전
AWS_ENDPOINTS3 연결용 AWS 엔드포인트

문제 해결

  • 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. Release New Version GitHub Action을 실행합니다.
  2. MAJOR.MINOR.PATCH 형식으로 버전을 입력합니다.
  3. 워크플로가 버전을 올리고, PyPI/MCP 레지스트리에 게시하고, MCPB 패키지와 함께 GitHub 릴리스를 생성합니다.

라이선스

MIT 라이선스 - LICENSE 파일을 참조하세요.

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