mcp-server-motherduck 0.6.1__tar.gz → 0.6.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mcp-server-motherduck might be problematic. Click here for more details.
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.idea/workspace.xml +2 -2
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/PKG-INFO +12 -12
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/README.md +10 -11
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/pyproject.toml +2 -1
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/configs.py +1 -1
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/database.py +1 -4
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/uv.lock +12 -1
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.github/workflows/python-publish.yml +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.gitignore +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.idea/.gitignore +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.idea/mcp-server-motherduck.iml +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.idea/misc.xml +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.idea/modules.xml +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.idea/vcs.xml +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/LICENSE +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/makefile +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/__init__.py +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/prompt.py +0 -0
- {mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/server.py +0 -0
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<component name="ChangeListManager">
|
|
15
15
|
<list default="true" id="8bdee1d4-886c-4093-b4cf-95b120034c9e" name="Changes" comment="">
|
|
16
16
|
<change beforePath="$PROJECT_DIR$/pyproject.toml" beforeDir="false" afterPath="$PROJECT_DIR$/pyproject.toml" afterDir="false" />
|
|
17
|
-
<change beforePath="$PROJECT_DIR$/
|
|
17
|
+
<change beforePath="$PROJECT_DIR$/src/mcp_server_motherduck/configs.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/mcp_server_motherduck/configs.py" afterDir="false" />
|
|
18
18
|
</list>
|
|
19
19
|
<option name="SHOW_DIALOG" value="false" />
|
|
20
20
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
<workItem from="1750084439422" duration="575000" />
|
|
96
96
|
<workItem from="1750086684829" duration="92000" />
|
|
97
97
|
<workItem from="1750099676834" duration="5651000" />
|
|
98
|
-
<workItem from="1750235697329" duration="
|
|
98
|
+
<workItem from="1750235697329" duration="4118000" />
|
|
99
99
|
</task>
|
|
100
100
|
<servers />
|
|
101
101
|
</component>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-server-motherduck
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.3
|
|
4
4
|
Summary: A MCP server for MotherDuck and local DuckDB
|
|
5
5
|
Author-email: tdoehmen <till@motherduck.com>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -9,6 +9,7 @@ Requires-Dist: anyio>=4.8.0
|
|
|
9
9
|
Requires-Dist: click>=8.1.8
|
|
10
10
|
Requires-Dist: duckdb==1.3.1
|
|
11
11
|
Requires-Dist: mcp>=1.9.4
|
|
12
|
+
Requires-Dist: pytz>=2025.2
|
|
12
13
|
Requires-Dist: starlette>=0.46.1
|
|
13
14
|
Requires-Dist: tabulate>=0.9.0
|
|
14
15
|
Requires-Dist: uvicorn>=0.34.0
|
|
@@ -54,16 +55,16 @@ All interactions with both DuckDB and MotherDuck are done through writing SQL qu
|
|
|
54
55
|
|
|
55
56
|
The MCP server supports the following parameters:
|
|
56
57
|
|
|
57
|
-
| Parameter | Type | Default | Description
|
|
58
|
-
|
|
59
|
-
| `--transport` | Choice | `stdio` | Transport type. Options: `stdio`, `sse`, `stream`
|
|
60
|
-
| `--port` | Integer | `8000` | Port to listen on for sse and stream transport mode
|
|
61
|
-
| `--db-path` | String | `md:` | Path to local DuckDB database file or MotherDuck database
|
|
62
|
-
| `--motherduck-token` | String | `None` | Access token to use for MotherDuck database connections (uses `motherduck_token` env var by default)
|
|
63
|
-
| `--read-only` | Flag | `False` | Flag for connecting to DuckDB in read-only mode.
|
|
64
|
-
| `--home-dir` | String | `None` | Home directory for DuckDB (uses `HOME` env var by default)
|
|
65
|
-
| `--saas-mode` | Flag | `False` | Flag for connecting to MotherDuck in SaaS mode |
|
|
66
|
-
| `--json-response` | Flag | `False` | Enable JSON responses for HTTP stream. Only supported for `stream` transport
|
|
58
|
+
| Parameter | Type | Default | Description |
|
|
59
|
+
|-----------|------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
60
|
+
| `--transport` | Choice | `stdio` | Transport type. Options: `stdio`, `sse`, `stream` |
|
|
61
|
+
| `--port` | Integer | `8000` | Port to listen on for sse and stream transport mode |
|
|
62
|
+
| `--db-path` | String | `md:` | Path to local DuckDB database file or MotherDuck database |
|
|
63
|
+
| `--motherduck-token` | String | `None` | Access token to use for MotherDuck database connections (uses `motherduck_token` env var by default) |
|
|
64
|
+
| `--read-only` | Flag | `False` | Flag for connecting to DuckDB or MotherDuck in read-only mode. For DuckDB it uses short-lived connections to enable concurrent access |
|
|
65
|
+
| `--home-dir` | String | `None` | Home directory for DuckDB (uses `HOME` env var by default) |
|
|
66
|
+
| `--saas-mode` | Flag | `False` | Flag for connecting to MotherDuck in [SaaS mode](https://motherduck.com/docs/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck/#authentication-using-saas-mode). (disables filesystem and write permissions for local DuckDB) |
|
|
67
|
+
| `--json-response` | Flag | `False` | Enable JSON responses for HTTP stream. Only supported for `stream` transport |
|
|
67
68
|
|
|
68
69
|
### Quick Usage Examples
|
|
69
70
|
|
|
@@ -221,7 +222,6 @@ Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace
|
|
|
221
222
|
**Important Notes**:
|
|
222
223
|
|
|
223
224
|
- Replace `YOUR_MOTHERDUCK_TOKEN_HERE` with your actual MotherDuck token
|
|
224
|
-
- The `HOME` environment variable is required for DuckDB to function properly.
|
|
225
225
|
|
|
226
226
|
## Securing your MCP Server when querying MotherDuck
|
|
227
227
|
|
|
@@ -38,16 +38,16 @@ All interactions with both DuckDB and MotherDuck are done through writing SQL qu
|
|
|
38
38
|
|
|
39
39
|
The MCP server supports the following parameters:
|
|
40
40
|
|
|
41
|
-
| Parameter | Type | Default | Description
|
|
42
|
-
|
|
43
|
-
| `--transport` | Choice | `stdio` | Transport type. Options: `stdio`, `sse`, `stream`
|
|
44
|
-
| `--port` | Integer | `8000` | Port to listen on for sse and stream transport mode
|
|
45
|
-
| `--db-path` | String | `md:` | Path to local DuckDB database file or MotherDuck database
|
|
46
|
-
| `--motherduck-token` | String | `None` | Access token to use for MotherDuck database connections (uses `motherduck_token` env var by default)
|
|
47
|
-
| `--read-only` | Flag | `False` | Flag for connecting to DuckDB in read-only mode.
|
|
48
|
-
| `--home-dir` | String | `None` | Home directory for DuckDB (uses `HOME` env var by default)
|
|
49
|
-
| `--saas-mode` | Flag | `False` | Flag for connecting to MotherDuck in SaaS mode |
|
|
50
|
-
| `--json-response` | Flag | `False` | Enable JSON responses for HTTP stream. Only supported for `stream` transport
|
|
41
|
+
| Parameter | Type | Default | Description |
|
|
42
|
+
|-----------|------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
43
|
+
| `--transport` | Choice | `stdio` | Transport type. Options: `stdio`, `sse`, `stream` |
|
|
44
|
+
| `--port` | Integer | `8000` | Port to listen on for sse and stream transport mode |
|
|
45
|
+
| `--db-path` | String | `md:` | Path to local DuckDB database file or MotherDuck database |
|
|
46
|
+
| `--motherduck-token` | String | `None` | Access token to use for MotherDuck database connections (uses `motherduck_token` env var by default) |
|
|
47
|
+
| `--read-only` | Flag | `False` | Flag for connecting to DuckDB or MotherDuck in read-only mode. For DuckDB it uses short-lived connections to enable concurrent access |
|
|
48
|
+
| `--home-dir` | String | `None` | Home directory for DuckDB (uses `HOME` env var by default) |
|
|
49
|
+
| `--saas-mode` | Flag | `False` | Flag for connecting to MotherDuck in [SaaS mode](https://motherduck.com/docs/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck/#authentication-using-saas-mode). (disables filesystem and write permissions for local DuckDB) |
|
|
50
|
+
| `--json-response` | Flag | `False` | Enable JSON responses for HTTP stream. Only supported for `stream` transport |
|
|
51
51
|
|
|
52
52
|
### Quick Usage Examples
|
|
53
53
|
|
|
@@ -205,7 +205,6 @@ Optionally, you can add it to a file called `.vscode/mcp.json` in your workspace
|
|
|
205
205
|
**Important Notes**:
|
|
206
206
|
|
|
207
207
|
- Replace `YOUR_MOTHERDUCK_TOKEN_HERE` with your actual MotherDuck token
|
|
208
|
-
- The `HOME` environment variable is required for DuckDB to function properly.
|
|
209
208
|
|
|
210
209
|
## Securing your MCP Server when querying MotherDuck
|
|
211
210
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mcp-server-motherduck"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.3"
|
|
4
4
|
description = "A MCP server for MotherDuck and local DuckDB"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -12,6 +12,7 @@ dependencies = [
|
|
|
12
12
|
"uvicorn>=0.34.0",
|
|
13
13
|
"anyio>=4.8.0",
|
|
14
14
|
"mcp>=1.9.4",
|
|
15
|
+
"pytz>=2025.2"
|
|
15
16
|
]
|
|
16
17
|
|
|
17
18
|
[[project.authors]]
|
{mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/database.py
RENAMED
|
@@ -53,13 +53,10 @@ class DatabaseClient:
|
|
|
53
53
|
logger.error(f"❌ Read-only check failed: {e}")
|
|
54
54
|
raise
|
|
55
55
|
|
|
56
|
-
if self._read_only:
|
|
57
|
-
raise ValueError(
|
|
58
|
-
"Read-only mode is only supported for local DuckDB databases. See `saas_mode` for similar functionality with MotherDuck."
|
|
59
|
-
)
|
|
60
56
|
conn = duckdb.connect(
|
|
61
57
|
self.db_path,
|
|
62
58
|
config={"custom_user_agent": f"mcp-server-motherduck/{SERVER_VERSION}"},
|
|
59
|
+
read_only=self._read_only,
|
|
63
60
|
)
|
|
64
61
|
|
|
65
62
|
logger.info(f"✅ Successfully connected to {self.db_type} database")
|
|
@@ -182,13 +182,14 @@ wheels = [
|
|
|
182
182
|
|
|
183
183
|
[[package]]
|
|
184
184
|
name = "mcp-server-motherduck"
|
|
185
|
-
version = "0.6.
|
|
185
|
+
version = "0.6.3"
|
|
186
186
|
source = { editable = "." }
|
|
187
187
|
dependencies = [
|
|
188
188
|
{ name = "anyio" },
|
|
189
189
|
{ name = "click" },
|
|
190
190
|
{ name = "duckdb" },
|
|
191
191
|
{ name = "mcp" },
|
|
192
|
+
{ name = "pytz" },
|
|
192
193
|
{ name = "starlette" },
|
|
193
194
|
{ name = "tabulate" },
|
|
194
195
|
{ name = "uvicorn" },
|
|
@@ -200,6 +201,7 @@ requires-dist = [
|
|
|
200
201
|
{ name = "click", specifier = ">=8.1.8" },
|
|
201
202
|
{ name = "duckdb", specifier = "==1.3.1" },
|
|
202
203
|
{ name = "mcp", specifier = ">=1.9.4" },
|
|
204
|
+
{ name = "pytz", specifier = ">=2025.2" },
|
|
203
205
|
{ name = "starlette", specifier = ">=0.46.1" },
|
|
204
206
|
{ name = "tabulate", specifier = ">=0.9.0" },
|
|
205
207
|
{ name = "uvicorn", specifier = ">=0.34.0" },
|
|
@@ -339,6 +341,15 @@ wheels = [
|
|
|
339
341
|
{ url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546 },
|
|
340
342
|
]
|
|
341
343
|
|
|
344
|
+
[[package]]
|
|
345
|
+
name = "pytz"
|
|
346
|
+
version = "2025.2"
|
|
347
|
+
source = { registry = "https://pypi.org/simple" }
|
|
348
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 }
|
|
349
|
+
wheels = [
|
|
350
|
+
{ url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 },
|
|
351
|
+
]
|
|
352
|
+
|
|
342
353
|
[[package]]
|
|
343
354
|
name = "sniffio"
|
|
344
355
|
version = "1.3.1"
|
{mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/.github/workflows/python-publish.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/__init__.py
RENAMED
|
File without changes
|
{mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/prompt.py
RENAMED
|
File without changes
|
{mcp_server_motherduck-0.6.1 → mcp_server_motherduck-0.6.3}/src/mcp_server_motherduck/server.py
RENAMED
|
File without changes
|