mcp-server-motherduck 0.6.0__tar.gz → 0.6.2__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.

Files changed (19) hide show
  1. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/.idea/workspace.xml +26 -26
  2. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/PKG-INFO +12 -12
  3. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/README.md +10 -10
  4. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/pyproject.toml +2 -2
  5. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/src/mcp_server_motherduck/configs.py +1 -1
  6. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/src/mcp_server_motherduck/database.py +1 -9
  7. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/uv.lock +32 -32
  8. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/.github/workflows/python-publish.yml +0 -0
  9. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/.gitignore +0 -0
  10. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/.idea/.gitignore +0 -0
  11. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/.idea/mcp-server-motherduck.iml +0 -0
  12. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/.idea/misc.xml +0 -0
  13. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/.idea/modules.xml +0 -0
  14. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/.idea/vcs.xml +0 -0
  15. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/LICENSE +0 -0
  16. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/makefile +0 -0
  17. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/src/mcp_server_motherduck/__init__.py +0 -0
  18. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/src/mcp_server_motherduck/prompt.py +0 -0
  19. {mcp_server_motherduck-0.6.0 → mcp_server_motherduck-0.6.2}/src/mcp_server_motherduck/server.py +0 -0
@@ -14,10 +14,9 @@
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$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
17
- <change beforePath="$PROJECT_DIR$/src/mcp_server_motherduck/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/mcp_server_motherduck/__init__.py" afterDir="false" />
17
+ <change beforePath="$PROJECT_DIR$/pyproject.toml" beforeDir="false" afterPath="$PROJECT_DIR$/pyproject.toml" afterDir="false" />
18
+ <change beforePath="$PROJECT_DIR$/src/mcp_server_motherduck/configs.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/mcp_server_motherduck/configs.py" afterDir="false" />
18
19
  <change beforePath="$PROJECT_DIR$/src/mcp_server_motherduck/database.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/mcp_server_motherduck/database.py" afterDir="false" />
19
- <change beforePath="$PROJECT_DIR$/src/mcp_server_motherduck/server.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/mcp_server_motherduck/server.py" afterDir="false" />
20
- <change beforePath="$PROJECT_DIR$/uv.lock" beforeDir="false" afterPath="$PROJECT_DIR$/uv.lock" afterDir="false" />
21
20
  </list>
22
21
  <option name="SHOW_DIALOG" value="false" />
23
22
  <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -52,30 +51,30 @@
52
51
  <option name="hideEmptyMiddlePackages" value="true" />
53
52
  <option name="showLibraryContents" value="true" />
54
53
  </component>
55
- <component name="PropertiesComponent"><![CDATA[{
56
- "keyToString": {
57
- "RunOnceActivity.OpenProjectViewOnStart": "true",
58
- "RunOnceActivity.ShowReadmeOnStart": "true",
59
- "RunOnceActivity.cidr.known.project.marker": "true",
60
- "RunOnceActivity.git.unshallow": "true",
61
- "RunOnceActivity.readMode.enableVisualFormatting": "true",
62
- "WebServerToolWindowFactoryState": "false",
63
- "cf.first.check.clang-format": "false",
64
- "cidr.known.project.marker": "true",
65
- "git-widget-placeholder": "adi/add-inapp-sse",
66
- "last_opened_file_path": "/Users/doehmen/Documents/motherduck/mcp-server-motherduck",
67
- "node.js.detected.package.eslint": "true",
68
- "node.js.detected.package.tslint": "true",
69
- "node.js.selected.package.eslint": "(autodetect)",
70
- "node.js.selected.package.tslint": "(autodetect)",
71
- "nodejs_package_manager_path": "npm",
72
- "project.structure.last.edited": "Project",
73
- "project.structure.proportion": "0.0",
74
- "project.structure.side.proportion": "0.0",
75
- "settings.editor.selected.configurable": "preferences.updates",
76
- "vue.rearranger.settings.migration": "true"
54
+ <component name="PropertiesComponent">{
55
+ &quot;keyToString&quot;: {
56
+ &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
57
+ &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
58
+ &quot;RunOnceActivity.cidr.known.project.marker&quot;: &quot;true&quot;,
59
+ &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
60
+ &quot;RunOnceActivity.readMode.enableVisualFormatting&quot;: &quot;true&quot;,
61
+ &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
62
+ &quot;cf.first.check.clang-format&quot;: &quot;false&quot;,
63
+ &quot;cidr.known.project.marker&quot;: &quot;true&quot;,
64
+ &quot;git-widget-placeholder&quot;: &quot;main&quot;,
65
+ &quot;last_opened_file_path&quot;: &quot;/Users/doehmen/Documents/motherduck/mcp-server-motherduck&quot;,
66
+ &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
67
+ &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
68
+ &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
69
+ &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
70
+ &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
71
+ &quot;project.structure.last.edited&quot;: &quot;Project&quot;,
72
+ &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
73
+ &quot;project.structure.side.proportion&quot;: &quot;0.0&quot;,
74
+ &quot;settings.editor.selected.configurable&quot;: &quot;preferences.updates&quot;,
75
+ &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
77
76
  }
78
- }]]></component>
77
+ }</component>
79
78
  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
80
79
  <component name="TaskManager">
81
80
  <task active="true" id="Default" summary="Default task">
@@ -98,6 +97,7 @@
98
97
  <workItem from="1750084439422" duration="575000" />
99
98
  <workItem from="1750086684829" duration="92000" />
100
99
  <workItem from="1750099676834" duration="5651000" />
100
+ <workItem from="1750235697329" duration="2124000" />
101
101
  </task>
102
102
  <servers />
103
103
  </component>
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-server-motherduck
3
- Version: 0.6.0
3
+ Version: 0.6.2
4
4
  Summary: A MCP server for MotherDuck and local DuckDB
5
5
  Author-email: tdoehmen <till@motherduck.com>
6
6
  License-File: LICENSE
7
7
  Requires-Python: >=3.10
8
8
  Requires-Dist: anyio>=4.8.0
9
9
  Requires-Dist: click>=8.1.8
10
- Requires-Dist: duckdb==1.3.0
10
+ Requires-Dist: duckdb==1.3.1
11
11
  Requires-Dist: mcp>=1.9.4
12
12
  Requires-Dist: starlette>=0.46.1
13
13
  Requires-Dist: tabulate>=0.9.0
@@ -54,16 +54,16 @@ All interactions with both DuckDB and MotherDuck are done through writing SQL qu
54
54
 
55
55
  The MCP server supports the following parameters:
56
56
 
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. Only supported for local DuckDB databases. Uses short-lived connections for concurrent access |
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 |
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 or MotherDuck in read-only mode. For DuckDB it uses short-lived connections to enable concurrent access |
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](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) |
66
+ | `--json-response` | Flag | `False` | Enable JSON responses for HTTP stream. Only supported for `stream` transport |
67
67
 
68
68
  ### Quick Usage Examples
69
69
 
@@ -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. Only supported for local DuckDB databases. Uses short-lived connections for 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 |
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
 
@@ -1,11 +1,11 @@
1
1
  [project]
2
2
  name = "mcp-server-motherduck"
3
- version = "0.6.0"
3
+ version = "0.6.2"
4
4
  description = "A MCP server for MotherDuck and local DuckDB"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
7
7
  dependencies = [
8
- "duckdb==1.3.0",
8
+ "duckdb==1.3.1",
9
9
  "tabulate>=0.9.0",
10
10
  "click>=8.1.8",
11
11
  "starlette>=0.46.1",
@@ -1,6 +1,6 @@
1
1
  from typing import Any
2
2
 
3
- SERVER_VERSION = "0.6.0"
3
+ SERVER_VERSION = "0.6.2"
4
4
 
5
5
  SERVER_LOCALHOST = "127.0.0.1"
6
6
 
@@ -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")
@@ -101,11 +98,6 @@ class DatabaseClient:
101
98
  if db_path == ":memory:":
102
99
  return db_path, "duckdb"
103
100
 
104
- # Handle local database paths as the last check
105
- if not os.path.exists(db_path):
106
- raise FileNotFoundError(
107
- f"The local database path `{db_path}` does not exist."
108
- )
109
101
  return db_path, "duckdb"
110
102
 
111
103
  def _execute(self, query: str) -> str:
@@ -62,38 +62,38 @@ wheels = [
62
62
 
63
63
  [[package]]
64
64
  name = "duckdb"
65
- version = "1.3.0"
65
+ version = "1.3.1"
66
66
  source = { registry = "https://pypi.org/simple" }
67
- sdist = { url = "https://files.pythonhosted.org/packages/3e/82/680b108da1870e48d98464ddcf03820f983421b5bbd8dd8beff98d583db7/duckdb-1.3.0.tar.gz", hash = "sha256:09aaa4b1dca24f4d1f231e7ae66b6413e317b7e04e2753541d42df6c8113fac7", size = 11617648 }
67
+ sdist = { url = "https://files.pythonhosted.org/packages/35/ab/d89a4dd14311d5a0081711bc66db3fad73f7645fa7eb3844c423d2fa0a17/duckdb-1.3.1.tar.gz", hash = "sha256:8e101990a879533b1d33f003df2eb2a3c4bc7bdf976bd7ef7c32342047935327", size = 11628075 }
68
68
  wheels = [
69
- { url = "https://files.pythonhosted.org/packages/8d/8f/ac97536d4ba130c9ec097c99b88ce4fa2ceb2c90471d4f0312066c1c694d/duckdb-1.3.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc65c1e97aa010359c43c0342ea423e6efa3cb8c8e3f133b0765451ce674e3db", size = 15495976 },
70
- { url = "https://files.pythonhosted.org/packages/db/30/d8a740b91021056b00f6d5c6ce8136f15fbc4a738ff8a9ce0b4a3d29604d/duckdb-1.3.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:8fc91b629646679e33806342510335ccbbeaf2b823186f0ae829fd48e7a63c66", size = 32448495 },
71
- { url = "https://files.pythonhosted.org/packages/5a/d0/75cdba51cc7f35494d8621267cd6ac8de9a649f12fa64c9a2e2b2892f55b/duckdb-1.3.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:1a69b970553fd015c557238d427ef00be3c8ed58c3bc3641aef987e33f8bf614", size = 17065641 },
72
- { url = "https://files.pythonhosted.org/packages/fe/3e/164119d03fabf2851ef36b4cccd1763d7950aadea2466cbf0e568e7de9fe/duckdb-1.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1003e84c07b84680cee6d06e4795b6e861892474704f7972058594a52c7473cf", size = 19122626 },
73
- { url = "https://files.pythonhosted.org/packages/09/27/a5a21c73eea6dbc207a426f13c23358712e444ba4ce9f4fa7e8cb3f73a09/duckdb-1.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:992239b54ca6f015ad0ed0d80f3492c065313c4641df0a226183b8860cb7f5b0", size = 21065450 },
74
- { url = "https://files.pythonhosted.org/packages/f7/e4/5ac11e11fec8cef4780b3867c0bda258650444a46793827a0ab473765853/duckdb-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0ba1c5af59e8147216149b814b1970b8f7e3c240494a9688171390db3c504b29", size = 22716477 },
75
- { url = "https://files.pythonhosted.org/packages/68/89/57c0812d9d9c899b0986a1ec1c80a91ea9056bc9a718777caae42ae3a0a2/duckdb-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:57b794ca28e22b23bd170506cb1d4704a3608e67f0fe33273db9777b69bdf26a", size = 11420756 },
76
- { url = "https://files.pythonhosted.org/packages/48/a5/0a7dd8f256aa75e254717732905fb96858a9e54e881a5da0966b5760393a/duckdb-1.3.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:60a58b85929754abb21db1e739d2f53eaef63e6015e62ba58eae3425030e7935", size = 15497894 },
77
- { url = "https://files.pythonhosted.org/packages/10/b9/5a2275f765f3ca6375797066bc3870bdc8dc3f4c91b84f4230709e012c50/duckdb-1.3.0-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:1d46b5a20f078b1b2284243e02a1fde7e12cbb8d205fce62e4700bcfe6a09881", size = 32453581 },
78
- { url = "https://files.pythonhosted.org/packages/a4/f6/20da96bc7e3886cf424461a45de3f76247b7731a5f7552615bd31e73f1ac/duckdb-1.3.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:0044e5ffb2d46308099640a92f99980a44e12bb68642aa9e6b08acbf300d64a1", size = 17066778 },
79
- { url = "https://files.pythonhosted.org/packages/43/21/ffe5aeb9d32a49d2de6d368b3fe3e53c2246eccec916375d65c45dc58339/duckdb-1.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5cb813de2ca2f5e7c77392a67bdcaa174bfd69ebbfdfc983024af270c77a0447", size = 19122797 },
80
- { url = "https://files.pythonhosted.org/packages/60/0c/111dc4a3dcdd7007ca610e41a85634fbfa258ab960a6445e02872b67ab02/duckdb-1.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7a0c993eb6df2b30b189ad747f3aea1b0b87b78ab7f80c6e7c57117b6e8dbfb0", size = 21069430 },
81
- { url = "https://files.pythonhosted.org/packages/43/00/71c174b65f167af4d77aafa6a01445f08238e84dd679638836472f1141af/duckdb-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6728e209570d36ece66dd7249e5d6055326321137cd807f26300733283930cd4", size = 22720601 },
82
- { url = "https://files.pythonhosted.org/packages/2c/cb/c84a617f79bedb2220ea0b0a9826b2fb1a534568c5742789ca2c0812d465/duckdb-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e652b7c8dbdb91a94fd7d543d3e115d24a25aa0791a373a852e20cb7bb21154", size = 11421756 },
83
- { url = "https://files.pythonhosted.org/packages/e4/b8/0931871f55a10aacd1af024c8d1e5de68337032379438aba05e26e9a1132/duckdb-1.3.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f24038fe9b83dcbaeafb1ed76ec3b3f38943c1c8d27ab464ad384db8a6658b61", size = 15516284 },
84
- { url = "https://files.pythonhosted.org/packages/af/d5/a08f76900391ff248b18fc1d5742db4b7bcf910c4be00314ce7b3069223f/duckdb-1.3.0-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:956c85842841bef68f4a5388c6b225b933151a7c06d568390fc895fc44607913", size = 32490915 },
85
- { url = "https://files.pythonhosted.org/packages/05/f1/9dfa45484422bd6c598e76fb2d005de48373aea66b037471b4568c1e938a/duckdb-1.3.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:efe883d822ed56fcfbb6a7b397c13f6a0d2eaeb3bc4ef4510f84fadb3dfe416d", size = 17086690 },
86
- { url = "https://files.pythonhosted.org/packages/8e/4e/093944cbca2e4b3fe5da99c46df9f4ae293c6768f15f14a959aaa2064a50/duckdb-1.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3872a3a1b80ffba5264ea236a3754d0c41d3c7b01bdf8cdcb1c180fc1b8dc8e2", size = 19140518 },
87
- { url = "https://files.pythonhosted.org/packages/b0/9e/b1a7c086db03f3cc85c513e70034bd515e68e25013875e5f0b40c4bf5d0a/duckdb-1.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:30bf45ad78a5a997f378863e036e917b481d18d685e5c977cd0a3faf2e31fbaf", size = 21103893 },
88
- { url = "https://files.pythonhosted.org/packages/5e/b4/5baef852efec9480dcfb44bed5adc56f6fcee09919037cf54fbbe87ac427/duckdb-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:85cbd8e1d65df8a0780023baf5045d3033fabd154799bc9ea6d9ab5728f41eb3", size = 22753505 },
89
- { url = "https://files.pythonhosted.org/packages/36/4f/f7ab120ecd827fdff59f14e1de9771335aa7656a29c3259fa7949de1f276/duckdb-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:8754c40dac0f26d9fb0363bbb5df02f7a61ce6a6728d5efc02c3bc925d7c89c3", size = 11424449 },
90
- { url = "https://files.pythonhosted.org/packages/32/d5/d2666a682cda7152d0f391067e0307eec3e913b3462d2b5b944a3aab4d1d/duckdb-1.3.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:176b9818d940c52ac7f31c64a98cf172d7c19d2a006017c9c4e9c06c246e36bf", size = 15516004 },
91
- { url = "https://files.pythonhosted.org/packages/91/60/feb19a432c0b327b3d03171042acbafa688edb9a02f3034f7ae963d0f62d/duckdb-1.3.0-cp313-cp313-macosx_12_0_universal2.whl", hash = "sha256:03981f7e8793f07a4a9a2ba387640e71d0a99ebcaf8693ab09f96d59e628b713", size = 32490147 },
92
- { url = "https://files.pythonhosted.org/packages/07/f8/393beb10a24115347c8a4b75d59e6e1d49f7391722717a614bb71430673a/duckdb-1.3.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:a177d55a38a62fdf79b59a0eaa32531a1dbb443265f6d67f64992cc1e82b755c", size = 17086082 },
93
- { url = "https://files.pythonhosted.org/packages/71/45/da77973a7da7747385e16aa88c65a7b0e634585b5f7f92a6bb423838077c/duckdb-1.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b1c30e3749823147d5578bc3f01f35d1a0433a1c768908d946056ec8d6e1757e", size = 19141643 },
94
- { url = "https://files.pythonhosted.org/packages/db/51/adc86c800e7ecfe828e94cccc28ac727b54a886124da08e3808cf77bf1b9/duckdb-1.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5855f3a564baf22eeeab70c120b51f5a11914f1f1634f03382daeb6b1dea4c62", size = 21102444 },
95
- { url = "https://files.pythonhosted.org/packages/71/9d/ac3a6ddcaaf9bbd5584bb471794f017498326d11f754ee28b3c0a5c7aee8/duckdb-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9b1fac15a48056f7c2739cf8800873063ba2f691e91a9b2fc167658a401ca76a", size = 22752802 },
96
- { url = "https://files.pythonhosted.org/packages/ab/e9/f83285b0cb3729f24321a038f272490dfb76ca531b7cef832037b7bd077c/duckdb-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:fbdfc1c0b83b90f780ae74038187ee696bb56ab727a289752372d7ec42dda65b", size = 11424430 },
69
+ { url = "https://files.pythonhosted.org/packages/98/f2/e9b3fa5528ed9e586f9a9cd52c1e190963600e4d095d872af7a557d1bae4/duckdb-1.3.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:8321ecd3c6be22660ac7b48d1770781b2a9d22e3f961ad0bb9f851d4e109806c", size = 15513952 },
70
+ { url = "https://files.pythonhosted.org/packages/f4/54/c0ec22e742938e5d114ae51a9b5bf8b155d93e3a3fc323230e23ffc0cb29/duckdb-1.3.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:ccccc9dc9cb2269430fed29a2be8ff65a84d7b9e427548e02b5a8e1e1aacfa6d", size = 32480539 },
71
+ { url = "https://files.pythonhosted.org/packages/6f/76/f14a66540e4b62ca01d35d347a3a0c493ea5a516865480339061901bc538/duckdb-1.3.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:f8a1ca3bbf84275ba4e0da2bccf6d43cb277a19af6f88fb86f98c33a98cce02e", size = 17079404 },
72
+ { url = "https://files.pythonhosted.org/packages/6d/db/2abb3553463fa479b2497b63d704b2133b45773792cd1e9defdf08538047/duckdb-1.3.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ed9a942ba1167a51c0eb9f23c567051a51da4cbf920b3ac83fe63b010c4334c", size = 19152794 },
73
+ { url = "https://files.pythonhosted.org/packages/f4/a5/ef66e37e90a5ea122f14c9d1f3180754704fe6df3e8bd44afd88a0e0f8b7/duckdb-1.3.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26944ff2c09749077ee63e5fec634da431b0b8eb7dd0d30c24fa7fe89ce70b66", size = 21084453 },
74
+ { url = "https://files.pythonhosted.org/packages/5b/9d/0d72db42fd1e9e6f3981d59f7418a9ebe765bfa477bd546a91a3bbded81c/duckdb-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1ac996ac099f5d15468e33a93caf078da0fdace48c8a2c9af41e7bec766602f3", size = 22733663 },
75
+ { url = "https://files.pythonhosted.org/packages/9f/8d/ff3a3f4f8a6b0e8020f1eaa16aa4f50890596e6d7dcdf084cc1f63d79c60/duckdb-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:57a2324f8206a52f5fd2b44f34c3746bed8bcd5e98b05b298e04fafbf30e5079", size = 11300498 },
76
+ { url = "https://files.pythonhosted.org/packages/37/30/56cc16f223e080edb5aa5aca8d1e3dc7710ecff3726ba2d7354ae1a40223/duckdb-1.3.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:376193078285b243910b1239a927e271d12d9bf6358a6937d1f7af253cfef2b6", size = 15516676 },
77
+ { url = "https://files.pythonhosted.org/packages/32/b3/7556d6f947ef06be925b6703caf1151d7ec736d3fb167aa2b8ee483782b2/duckdb-1.3.1-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:d690576e8b4479b1e0c58cd8179f600f67af237ad31186fb10e867a02d4d66ff", size = 32489163 },
78
+ { url = "https://files.pythonhosted.org/packages/6f/35/2ece30329d6cc4b7c2e37e14c3c9a28300f898dd4c170caad8b824308204/duckdb-1.3.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:833b3c0208c238aac0d9287fcaca93ea54b82deabd8d162a469bd9adb42a0453", size = 17083190 },
79
+ { url = "https://files.pythonhosted.org/packages/9d/2b/3dccb341af40f0679a769b3ca485f3aeda8997873552b68949977186b63e/duckdb-1.3.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8bdd53e62917298208b7182d5fd1686a4caddc573dc1a95a58ca054105b23b38", size = 19153031 },
80
+ { url = "https://files.pythonhosted.org/packages/da/47/f8c13c3318bb29e22d2b320fcbf07c27d2d3cc1acb54e2dee3478611dce2/duckdb-1.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:591c9ca1b8dc591548bf56b2f18e26ca2339d7b95613009f6ba00af855210029", size = 21086086 },
81
+ { url = "https://files.pythonhosted.org/packages/cb/a7/a1be142ccd483e2dd0ea7a37b1999bd8964ab755915952fe6f131af84543/duckdb-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18f21142546edb5f935963f8f012b6569b978f398d48709da276b245ee4f5f4d", size = 22736728 },
82
+ { url = "https://files.pythonhosted.org/packages/f1/30/9782f26236b3df9e15958a6d0f299d13ace6ce8f5327ddba13b8ea129d03/duckdb-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:59121f0a8220b72050046a816e85e7464eb78e395f64118161b1115855284f87", size = 11300684 },
83
+ { url = "https://files.pythonhosted.org/packages/2b/cf/c9a76a15195ec1566b04a23c182ce16b60d1f06c7cdfec1aa538c8e8e0ae/duckdb-1.3.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:73f389f9c713325a6994dd9e04a7fa23bd73e8387883f8086946a9d3a1dd70e1", size = 15529437 },
84
+ { url = "https://files.pythonhosted.org/packages/d7/15/6cb79d988bedb19be6cfb654cd98b339cf4d06b7fc337f52c4051416b690/duckdb-1.3.1-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:87c99569274b453d8f9963e43fea74bc86901773fac945c1fe612c133a91e506", size = 32525563 },
85
+ { url = "https://files.pythonhosted.org/packages/14/7a/0acc37ec937a69a2fc325ab680cf68e7f1ed5d83b056dfade617502e40c2/duckdb-1.3.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:21da268355dfdf859b3d4db22180f7d5dd85a60517e077cb4158768cd5f0ee44", size = 17106064 },
86
+ { url = "https://files.pythonhosted.org/packages/b5/a0/aef95020f5ada03e44eea0b23951b96cec45a85a0c42210639d5d5688603/duckdb-1.3.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77902954d15ba4aff92e82df700643b995c057f2d7d39af7ed226d8cceb9c2af", size = 19172380 },
87
+ { url = "https://files.pythonhosted.org/packages/9c/2a/3eae3acda60e178785835d6df85f3bf9ddab4362e9fd45d0fe4879973561/duckdb-1.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67b1a3c9e2c3474991da97edfec0a89f382fef698d7f64b2d8d09006eaeeea24", size = 21123030 },
88
+ { url = "https://files.pythonhosted.org/packages/f4/79/885c0ad2434fa7b353532580435d59bb007efb629740ba4eb273fc4c882c/duckdb-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f1d076b12f0d2a7f9090ad9e4057ac41af3e4785969e5997afd44922c7b141e0", size = 22774472 },
89
+ { url = "https://files.pythonhosted.org/packages/24/02/d294613e4fccfc86f4718b2cede365a9a6313c938bf0547c78ec196a0b9c/duckdb-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:bf7d6884bfb67aef67aebb0bd2460ea1137c55b3fd8794a3530c653dbe0d4019", size = 11302743 },
90
+ { url = "https://files.pythonhosted.org/packages/d0/2e/5e1bf9f0b43bcb37dbe729d3a2c55da8b232137c15b0b63d2d51f96793b6/duckdb-1.3.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:72bbc8479c5d88e839a92c458c94c622f917ff0122853323728d6e25b0c3d4e1", size = 15529541 },
91
+ { url = "https://files.pythonhosted.org/packages/bc/ab/6b2e1efb133b2f4990710bd9a54e734a12a147eaead1102e36dd8d126494/duckdb-1.3.1-cp313-cp313-macosx_12_0_universal2.whl", hash = "sha256:937de83df6bbe4bee5830ce80f568d4c0ebf3ef5eb809db3343d2161e4f6e42b", size = 32525596 },
92
+ { url = "https://files.pythonhosted.org/packages/68/9f/879f6f33a1d5b4afee9dd4082e97d9b43c21cf734c90164d10fd7303edb5/duckdb-1.3.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:21440dd37f073944badd495c299c6d085cd133633450467ec420c71897ac1d5b", size = 17106339 },
93
+ { url = "https://files.pythonhosted.org/packages/9a/06/5755f93be743ec27986f275847a85d44bb1bd6d8631492d337729fbe9145/duckdb-1.3.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:663610b591ea6964f140441c81b718e745704cf098c540e905b200b9079e2a5c", size = 19173540 },
94
+ { url = "https://files.pythonhosted.org/packages/90/a6/c8577b741974f106e24f8eb3efedc399be1a23cbbdcf49dd4bea5bb8aa4e/duckdb-1.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8793b5abb365bbbf64ba3065f3a37951fe04f2d4506b0e24f3f8ecd08b3af4ba", size = 21122193 },
95
+ { url = "https://files.pythonhosted.org/packages/43/10/b4576bbfa895a0ab125697fd58c0fbe54338672a9df25e7311bdf21f9e04/duckdb-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:27d775a5af405d1c228561830c8ccbe4e2832dafb4012f16c05fde1cde206dee", size = 22773434 },
96
+ { url = "https://files.pythonhosted.org/packages/94/b9/f5ae51f7331f79c184fd96456c0896de875149fdeb092084fd20433ec97c/duckdb-1.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:3eb045a9bf92da890d890cde2f676b3bda61b9de3b7dc46cbaaf75875b41e4b0", size = 11302770 },
97
97
  ]
98
98
 
99
99
  [[package]]
@@ -182,7 +182,7 @@ wheels = [
182
182
 
183
183
  [[package]]
184
184
  name = "mcp-server-motherduck"
185
- version = "0.6.0"
185
+ version = "0.6.2"
186
186
  source = { editable = "." }
187
187
  dependencies = [
188
188
  { name = "anyio" },
@@ -198,7 +198,7 @@ dependencies = [
198
198
  requires-dist = [
199
199
  { name = "anyio", specifier = ">=4.8.0" },
200
200
  { name = "click", specifier = ">=8.1.8" },
201
- { name = "duckdb", specifier = "==1.3.0" },
201
+ { name = "duckdb", specifier = "==1.3.1" },
202
202
  { name = "mcp", specifier = ">=1.9.4" },
203
203
  { name = "starlette", specifier = ">=0.46.1" },
204
204
  { name = "tabulate", specifier = ">=0.9.0" },