Lets agents query and analyze data in local DuckDB and MotherDuck with SQL, including local files and S3 sources.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add motherduck --env MOTHERDUCK_TOKEN='<MOTHERDUCK_TOKEN>' --env AWS_ACCESS_KEY_ID='<AWS_ACCESS_KEY_ID>' --env AWS_SECRET_ACCESS_KEY='<AWS_SECRET_ACCESS_KEY>' --env AWS_SESSION_TOKEN='<AWS_SESSION_TOKEN>' --env DB_PATH='<DB_PATH>' -- uvx mcp-server-motherduck~/.codex/config.toml
[mcp_servers.motherduck]
command = "uvx"
args = ["mcp-server-motherduck"]
env = { MOTHERDUCK_TOKEN = "<MOTHERDUCK_TOKEN>", AWS_ACCESS_KEY_ID = "<AWS_ACCESS_KEY_ID>", AWS_SECRET_ACCESS_KEY = "<AWS_SECRET_ACCESS_KEY>", AWS_SESSION_TOKEN = "<AWS_SESSION_TOKEN>", DB_PATH = "<DB_PATH>" }
# codex mcp add motherduck --env MOTHERDUCK_TOKEN='<MOTHERDUCK_TOKEN>' --env AWS_ACCESS_KEY_ID='<AWS_ACCESS_KEY_ID>' --env AWS_SECRET_ACCESS_KEY='<AWS_SECRET_ACCESS_KEY>' --env AWS_SESSION_TOKEN='<AWS_SESSION_TOKEN>' --env DB_PATH='<DB_PATH>' -- uvx mcp-server-motherduck~/.cursor/mcp.json
{
"mcpServers": {
"motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck"
],
"env": {
"MOTHERDUCK_TOKEN": "<MOTHERDUCK_TOKEN>",
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"DB_PATH": "<DB_PATH>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"motherduck": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-server-motherduck"
],
"env": {
"MOTHERDUCK_TOKEN": "<MOTHERDUCK_TOKEN>",
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"DB_PATH": "<DB_PATH>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck"
],
"env": {
"MOTHERDUCK_TOKEN": "<MOTHERDUCK_TOKEN>",
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"DB_PATH": "<DB_PATH>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck"
],
"env": {
"MOTHERDUCK_TOKEN": "<MOTHERDUCK_TOKEN>",
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"DB_PATH": "<DB_PATH>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"motherduck": {
"command": "uvx",
"args": [
"mcp-server-motherduck"
],
"env": {
"MOTHERDUCK_TOKEN": "<MOTHERDUCK_TOKEN>",
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"AWS_SESSION_TOKEN": "<AWS_SESSION_TOKEN>",
"DB_PATH": "<DB_PATH>"
}
}
}
}Environment variables
MOTHERDUCK_TOKENAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKENDB_PATH
Replace the placeholders with your own credentials and keep them out of version control.