motherduckdb/mcp-server-motherduck

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/motherduckdb--mcp-server-motherduck.svg).

mcp-server

Works

README claims checked out on 2 recorded setups. Combinations not listed here were not tested.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyesyes

Linux / Haiku 5.5: yes · Oct 23, 2026 · 41acb581d9bc · claude-code / 2.1.300 (Claude Code)
Recorded operation: <guest-path> --directory <guest-path> run mcp-server-motherduck --db-path :memory: --read-write · local stdio MCP start + initialize + tools/list

Linux / Luna: yes · Oct 23, 2026 · 41acb581d9bc · codex / codex-cli 0.163.0
Recorded operation: Remote hosted MCP connection · initialize + tools/list · http://127.0.0.1:8767/mcp

Does what it says
1 of 1 claims checked out
  • execute_query runs a DuckDB SQL query and returns the result: Real input produced the expected result: duck-probe-7319

    Source: Execute SQL query (DuckDB dialect)

    Input: {"tool": "execute_query", "arguments": {"sql": "SELECT 'duck-probe-7319' AS marker"}}

    Expected: the query result containing duck-probe-7319

    Command: <guest-path> --directory <guest-path> run mcp-server-motherduck --db-path :memory: --read-write tools/call {"tool": "execute_query", "arguments": {"sql": "SELECT 'duck-probe-7319' AS marker"}}

    Observed: duck-probe-7319\"\n ]\n ],\n \"rowCount\": 1\n}", "type": "text"}], "isError": false, "structuredContent": {"result": "{\n \"success\": true,\n \"columns\": [\n \"marker\"\n ],\n \"columnTypes\": [\n \"VARCHAR\"\n ],\n \"rows\": [\n [\n \"duck-probe-7319\"\n ]\n ],\n \"rowCount\": 1\n}"}}

MCP
Yes, observed
Local or hosted
both local and hosted
Both a local install and a hosted service
Needs keys or browser
None seen
Maintained
Maintained
actively maintained: last commit 16 days ago; 11 commits and 4 merged PRs in 90 days; 0 open issues, 3 open PRs; 24 of 27 recent threads got a maintainer reply, median first reply 107.2h; latest release 2026-10-07

Last commit Oct 7, 2026

Setup time
13 min 24 s
13 min 24 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected, 1 not tested (blocked)
  • Local in-memory DuckDB tests pass (documented e2e suite, memory DB file): command completed successfully

    Source: makefile test-e2e target / tests/e2e/test_memory_duckdb.py

    Input: tests/e2e/test_memory_duckdb.py

    Expected: pytest exits 0

    Command: <guest-path> run --directory <guest-path> pytest tests/e2e/test_memory_duckdb.py -q

    Observed: ........ [100%] =============================== warnings summary =============================== tests/e2e/test_memory_duckdb.py::test_simple_select <guest-path> FastMCPDeprecationWarning: Accessing `CallToolResult.isError` is deprecated; MCP SDK v2 renamed this field to `is_error`. Update your code to read `.is_error` instead. assert result.isError is False -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 8 passed, 1 warning in 30.11s

  • make test-unit target: makefile runs tests/unit/ but that directory does not exist in this snapshot (only tests/e2e/); not runnable. Ran make test-e2e instead: 91 passed, 56 skipped, 2 failed (S3 tests need s3://md-test-bucket-user-1 credentials not available in this guest).

    Source: makefile test-unit target

    Expected: documented command completes successfully

    Observed: makefile runs tests/unit/ but that directory does not exist in this snapshot (only tests/e2e/); not runnable. Ran make test-e2e instead: 91 passed, 56 skipped, 2 failed (S3 tests need s3://md-test-bucket-user-1 credentials not available in this guest).

Evidence
README behavior checked
Agent interfaces
MCP
MCP

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

MCP context
4 tools · about 729 tokens
4 tools · about 729 tokens

Largest returned tools/list page in these observations. Compact UTF-8 definition bytes ÷ 4, rounded up; approximate, excluding client framing and tool results. This is context size, not proof that every tool works.

Measured on linux with Haiku 5.5 · Oct 23, 2026 on 41acb581d9bc

Tested with
Claude Code / Haiku 5.5
  • Linux: Claude Code / Haiku 5.5 · agent 2.1.300 (Claude Code) · Checked operation passed · Oct 23, 2026 on 41acb581d9bc

Each entry describes its recorded operation and source revision. Other agent clients were not tested.

Safety
Writes outside the project folder: yes by mcp-server-motherduck; made outbound connections: yes (hosts not recorded)

Review signals across current setups: connection review, outside write. 33 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 46 distinct locations. 2 findings. 19 attributed processes.

OSV reports a known vulnerability in this dependency version. 5 distinct locations. 21 findings.

Repository processes attempted these writes outside documented output/cache paths. 4 distinct locations. 1 attributed processes.

PID 4965: <guest-path> · mcp-server-motherduck

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation <guest-path> --directory <guest-path> run mcp-server-motherduck --db-path :memory: --read-write · local stdio MCP start + initialize + tools/list

Agent-reported scope: Run the MCP server (stdio) from source and call execute_query to run a DuckDB SQL query in an in-memory database

MCP server returned: mcp-server-motherduck · version 1.1.0.

MCP tools returned: execute_query, list_databases, list_tables, list_columns. Tool listing does not establish authenticated tool-call success.

Run details
run
motherduckdb--mcp-server-motherduck-claude-haiku-5-5-1792802350219012146
date
Oct 23, 2026
time to working
804.3s
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.300 (Claude Code)
platform
linux
reported cost
$0.017291
Recorded source
https://github.com/motherduckdb/mcp-server-motherduck
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "41acb581d9bc04e427655ba5178b2c5c01f68cd2", "url": "https://github.com/motherduckdb/mcp-server-motherduck"}
Test version
readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9
revision
41acb581d9bc04e427655ba5178b2c5c01f68cd2
Whose fault: not assigned · resolved

Safety: Review signals: 1 connection review, 21 known vulnerability, 1 outside write.

Review signals: 1 connection review, 21 known vulnerability, 1 outside write.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 46 distinct locations. 18 attributed processes.

OSV reports a known vulnerability in this dependency version. 5 distinct locations. 21 findings.

Repository processes attempted these writes outside documented output/cache paths. 4 distinct locations. 1 attributed processes.

PID 4965: <guest-path> · mcp-server-motherduck

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • execute_query runs a DuckDB SQL query and returns the result: Real input produced the expected result: duck-probe-7319

    Source: Execute SQL query (DuckDB dialect)

    Input: {"tool": "execute_query", "arguments": {"sql": "SELECT 'duck-probe-7319' AS marker"}}

    Expected: the query result containing duck-probe-7319

    Command: <guest-path> --directory <guest-path> run mcp-server-motherduck --db-path :memory: --read-write tools/call {"tool": "execute_query", "arguments": {"sql": "SELECT 'duck-probe-7319' AS marker"}}

    Observed: duck-probe-7319\"\n ]\n ],\n \"rowCount\": 1\n}", "type": "text"}], "isError": false, "structuredContent": {"result": "{\n \"success\": true,\n \"columns\": [\n \"marker\"\n ],\n \"columnTypes\": [\n \"VARCHAR\"\n ],\n \"rows\": [\n [\n \"duck-probe-7319\"\n ]\n ],\n \"rowCount\": 1\n}"}}

Examples

  • Local in-memory DuckDB tests pass (documented e2e suite, memory DB file): command completed successfully

    Source: makefile test-e2e target / tests/e2e/test_memory_duckdb.py

    Input: tests/e2e/test_memory_duckdb.py

    Expected: pytest exits 0

    Command: <guest-path> run --directory <guest-path> pytest tests/e2e/test_memory_duckdb.py -q

    Observed: ........ [100%] =============================== warnings summary =============================== tests/e2e/test_memory_duckdb.py::test_simple_select <guest-path> FastMCPDeprecationWarning: Accessing `CallToolResult.isError` is deprecated; MCP SDK v2 renamed this field to `is_error`. Update your code to read `.is_error` instead. assert result.isError is False -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 8 passed, 1 warning in 30.11s

  • make test-unit target: makefile runs tests/unit/ but that directory does not exist in this snapshot (only tests/e2e/); not runnable. Ran make test-e2e instead: 91 passed, 56 skipped, 2 failed (S3 tests need s3://md-test-bucket-user-1 credentials not available in this guest).

    Source: makefile test-unit target

    Expected: documented command completes successfully

    Observed: makefile runs tests/unit/ but that directory does not exist in this snapshot (only tests/e2e/); not runnable. Ran make test-e2e instead: 91 passed, 56 skipped, 2 failed (S3 tests need s3://md-test-bucket-user-1 credentials not available in this guest).

Local or hosted: both

What the agent did

Run the MCP server (stdio) from source and call execute_query to run a DuckDB SQL query in an in-memory database

cd <guest-path> && pwd && ls -la && id -u && python3 --version && cat README.md | head -200; ls <guest-path> /inputs 2>&1
cd <guest-path> && sed -n 200,400p README.md; cat .python-version; cat makefile; ls -la .coldpass; git status 2>&1 | head -2; which uv uvx; uv --version 2>&1
cd <guest-path> && python3 -m venv <guest-path> && <guest-path> install -q uv 2>&1 | tail -3; <guest-path> --version; cd <guest-path> && git init -q && git remote add origin https://github.com/motherduckdb/mcp-server-motherduck && git fetch --depth 1 origin 41acb581d9bc04e427655ba5178b2c5c01f68cd2 2>&1 | tail -3 && git reset --mixed FETCH_HEAD 2>&1 | tail -2; git log --oneline -1
sudo -n apt-get update -qq 2>&1 | tail -2; sudo -n DEBIAN_FRONTEND=noninteractive apt-get install -y -qq python3.12-venv 2>&1 | tail -3; rm -rf <guest-path>; python3 -m venv <guest-path> && <guest-path> install -q uv 2>&1 | tail -3; <guest-path> --version
cd <guest-path> && export PATH=<guest-path> && make install 2>&1 | tail -15; echo "rc=$?"; ls .venv/bin | grep -i motherduck
sudo -n DEBIAN_FRONTEND=noninteractive apt-get install -y -qq make 2>&1 | tail -2; cd <guest-path> && export PATH=<guest-path> && make install 2>&1 | tail -15; ls .venv/bin | grep -i motherduck
cd <guest-path> && export PATH=<guest-path> && timeout 600 make test-unit 2>&1 | tail -8; echo; timeout 600 make test-e2e 2>&1 | tail -8
cd <guest-path> && ls tests tests/*; export PATH=<guest-path> && timeout 300 uv run pytest tests/e2e/test_s3_duckdb.py -x -q 2>&1 | grep -iE "error|assert|Exception|s3|http" | head -30
cd <guest-path> && grep -rniE "cron|schedul|while True|webhook|--once|--now|interval" src/ | head; ls src/mcp_server_motherduck; grep -n "def execute_query\<email>\|async def \|def execute" -r src/mcp_server_motherduck/*.py | head -30
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["<guest-path>","--directory","<guest-path>","run","mcp-server-motherduck","--db-path",":memory:","--read-write"],"cwd":"<guest-path>","tool":"execute_query","arguments":{"sql":"SELECT 'duck-probe-7319' AS marker"},"expected_text":"duck-probe-7319"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"execute_query runs a DuckDB SQL query and returns the result","source":"Execute SQL query (DuckDB dialect)","input":"SELECT 'duck-probe-7319' AS marker","expected":"the query result containing duck-probe-7319","probe_kind":"mcp","argv":["<guest-path>","--directory","<guest-path>","run","mcp-server-motherduck","--db-path",":memory:","--read-write"],"tool":"execute_query","arguments":{"sql":"SELECT 'duck-probe-7319' AS marker"},"expected_text":"duck-probe-7319","cwd":"<guest-path>"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Local in-memory DuckDB tests pass (documented e2e suite, memory DB file)","source":"makefile test-e2e target / tests/e2e/test_memory_duckdb.py","input":"tests/e2e/test_memory_duckdb.py","expected":"pytest exits 0","argv":["<guest-path>","run","--directory","<guest-path>","pytest","tests/e2e/test_memory_duckdb.py","-q"],"cwd":"<guest-path>","env":{},"expected_text":"passed"},
{"kind":"example","claim":"make test-unit target","source":"makefile test-unit target","reason":"makefile runs tests/unit/ but that directory does not exist in this snapshot (only tests/e2e/); not runnable. Ran make test-e2e instead: 91 passed, 56 skipped, 2 failed (S3 tests need s3://md-test-bucket-user-1 credentials not available in this guest)."}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Entry points inspected (src/mcp_server_motherduck/server.py, __init__.py, database.py) and grep for cron/schedule/loop/webhook/--once/--now found nothing. The product is a request-driven stdio/streamable-HTTP MCP server with no product scheduler or loop; no cycle was triggered.","checks":[]}
EOF
export PATH=<guest-path>; timeout 600 uv run pytest tests/e2e/test_memory_duckdb.py -q 2>&1 | tail -2; <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -40
cd <guest-path> && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Run the MCP server (stdio) from source and call execute_query to run a DuckDB SQL query in an in-memory database","operation_scope":"Local stdio MCP server, in-memory DuckDB (:memory:), read-write. Requires uv (installed via pip into a venv) and python3.12 (venv module installed via apt). S3 e2e tests need S3 credentials/bucket and were not run successfully.","steps":["git init; git remote add origin https://github.com/motherduckdb/mcp-server-motherduck; git fetch --depth 1 origin 41acb581d9bc04e427655ba5178b2c5c01f68cd2; git reset --mixed FETCH_HEAD","pip install uv (README Quick Start prerequisite), installed in <guest-path>","make install (uv sync --all-extras)","make test-e2e (documented test target)","uv --directory <guest-path> run mcp-server-motherduck --db-path :memory: --read-write (README Development section, stdio MCP)","MCP tools/call execute_query with sql SELECT 'duck-probe-7319' AS marker"],"deviations":["python3-venv was missing; installed with sudo apt-get install python3.12-venv, then created venv for uv.","make was missing; installed with sudo apt-get install make.","make test-unit fails: makefile target points at tests/unit/, which does not exist in this snapshot (only tests/e2e/). Recorded as an example with reason; ran make test-e2e instead.","make test-e2e: 91 passed, 56 skipped, 2 failed. Both failures are tests/e2e/test_s3_duckdb.py (test_s3_simple_select, test_s3_show_tables), which need the s3://md-test-bucket-user-1 bucket and credentials not present in this guest. Prerequisite gap, not run successfully.","Used absolute uv path <guest-path> instead of uvx because the README's uvx entry was not in PATH and the source-run form was used.","Cycle: no product scheduler, loop, webhook or --once/--now found; detected=false."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"Fix makefile test-unit target (tests/unit/ does not exist). For full e2e, provide S3 test bucket credentials to run the two S3 tests."}
EOF
python3 -c "import json;json.load(open('.coldpass/report.json'));print('ok')"; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -c "import sys,json; t=sys.stdin.read(); d=json.loads(t[:t.index('\n')] if t.startswith('{') and '\n' in t else t); print(d.get('valid'), d.get('problems'), d.get('replay',{}).get('status'))" 2>&1 | tail -3; ps aux | grep -c "[m]cp-server-motherduck"
ps -eo pid,ppid,etime,cmd | grep "[m]cp-server-motherduck" | cut -c1-200
cd <guest-path> && export PATH=<guest-path> && timeout 600 uv run pytest tests/e2e/test_memory_duckdb.py -q 2>&1 | tail -4
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo rc=$?; python3 -c "
import json,sys
t=open('<guest-path>').read()
i=t.find('{'); d=json.loads(t[i:])
print('valid=',d.get('valid'),'problems=',d.get('problems'),'replay=',d.get('replay',{}).get('status'))
"; ps -eo cmd | grep -c "[m]cp-server-motherduck"
cd <guest-path> && grep -n "uv\|command\|StdioTransport\|env\|HOME" tests/e2e/conftest.py | head -30; export PATH=<guest-path>; timeout 300 env -i HOME=/tmp PATH=/usr/bin:/bin <guest-path> run --directory <guest-path> pytest tests/e2e/test_memory_duckdb.py -q -x 2>&1 | grep -E "RuntimeError|Error|passed|failed" | head -8
sudo -n ln -sf <guest-path> /usr/local/bin/uv && cd <guest-path> && env -i HOME=<host-path> PATH=/usr/local/bin:/usr/bin:/bin <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo rc=$?; python3 -c "
import json
t=open('<guest-path>').read()
i=t.find('{'); d=json.loads(t[i:])
print('valid=',d.get('valid'),'problems=',d.get('problems'),'replay=',d.get('replay',{}).get('status'))
"; ps -eo cmd | grep -c "[m]cp-server-motherduck"
cd <guest-path> && python3 - <<'EOF'
import json
p='.coldpass/report.json'
r=json.load(open(p))
r['deviations'].append("The e2e fixtures launch a bare 'uv' command (tests/e2e/conftest.py), so uv had to be on PATH for the checker's replay; created symlink sudo ln -sf <guest-path> /usr/local/bin/uv. Before this the replayed memory-DB example failed with FileNotFoundError: 'uv'.")
json.dump(r,open(p,'w'),indent=1)
EOF
<env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo rc=$?; python3 -c "
import json
t=open('<guest-path>').read(); d=json.loads(t[t.find('{'):])
print('valid=',d.get('valid'),'problems=',d.get('problems'),'replay=',d.get('replay',{}).get('status'))"; ls -la .coldpass
Earlier attempts (1)

Luna

Native agent · Hosted MCP connection/tools-list passed

Checked operation Remote hosted MCP connection · initialize + tools/list · http://127.0.0.1:8767/mcp

Tested against the hosted endpoint only. Local install is untested.

Agent-reported scope: Run MotherDuck MCP server over local Streamable HTTP and execute SQL using execute_query

MCP server returned: mcp-server-motherduck · version 1.1.0.

MCP tools returned: execute_query, list_databases, list_tables, list_columns. Tool listing does not establish authenticated tool-call success.

Run details
run
motherduckdb--mcp-server-motherduck-gpt-6-luna-1792794387563094880
date
Oct 23, 2026
time to working
380.6s
product hosting / execution
Remote hosted MCP endpoint
recorded operation scope
remote hosted MCP initialize + tools/list
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/motherduckdb/mcp-server-motherduck
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "41acb581d9bc04e427655ba5178b2c5c01f68cd2", "url": "https://github.com/motherduckdb/mcp-server-motherduck"}
Test version
readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
revision
41acb581d9bc04e427655ba5178b2c5c01f68cd2
Whose fault: not assigned · resolved

Safety: Review signals: 1 connection review, 12 known vulnerability.

Review signals: 1 connection review, 12 known vulnerability.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 8 distinct locations. 1 attributed processes.

PID 2208: <guest-path> · mcp-server-motherduck

OSV reports a known vulnerability in this dependency version. 5 distinct locations. 12 findings.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Execute SQL query (DuckDB dialect): Real input produced the expected result: 42

    Source: | `execute_query` | Execute SQL query (DuckDB dialect) | `sql` | - |

    Input: {"tool": "execute_query", "arguments": {"sql": "SELECT 40 + 2 AS answer"}}

    Expected: 42

    Command: <guest-path> mcp-server-motherduck --transport http --host 127.0.0.1 --port 8767 --db-path :memory: --read-write tools/call {"tool": "execute_query", "arguments": {"sql": "SELECT 40 + 2 AS answer"}}

    Observed: 42\n ]\n ],\n \"rowCount\": 1\n}", "type": "text"}], "isError": false, "structuredContent": {"result": "{\n \"success\": true,\n \"columns\": [\n \"answer\"\n ],\n \"columnTypes\": [\n \"INTEGER\"\n ],\n \"rows\": [\n [\n 42\n ]\n ],\n \"rowCount\": 1\n}"}}

Examples

  • README Quick Start configuration uses the in-memory server with read-write and database switching: This section gives an MCP client configuration rather than a finite command. Its documented server argv and actual SQL tool call are exercised by probe.json and claims.json.

    Source: README.md, Quick Start / Connecting to In-Memory DuckDB (Dev Mode)

    Expected: documented command completes successfully

    Observed: This section gives an MCP client configuration rather than a finite command. Its documented server argv and actual SQL tool call are exercised by probe.json and claims.json.

Local or hosted: both

What the agent did

Run MotherDuck MCP server over local Streamable HTTP and execute SQL using execute_query

pwd; ls -la; rg --files -g 'README*' -g 'AGENTS.md' -g 'pyproject.toml' -g 'package.json' -g 'Makefile' -g '*.md' | head -80; if command -v vault-search >/dev/null 2>&1; then vault-search 'motherduck MCP server setup README operation'; else echo 'vault-search unavailable'; fi; if [ -f <host-path> ]; then cat <host-path>; fi
cat README.md; cat .python-version; cat pyproject.toml; find . -name AGENTS.md -print; python3 --version; python3 -m pip --version; id -u; ls -la .coldpass
curl -LsSf https://astral.sh/uv/install.sh | sh
mkdir -p .coldpass; <guest-path> mcp-server-motherduck --db-path :memory: --read-write --allow-switch-databases
ls -la <guest-path>; find <guest-path> -maxdepth 3 -type f -print
sed -n '1,240p' <guest-path>
sed -n '1,100p' src/mcp_server_motherduck/server.py 2>/dev/null || find src -type f -maxdepth 4 -print; find tests -type f -maxdepth 2 -print
sed -n '1,220p' src/mcp_server_motherduck/__main__.py; cat src/mcp_server_motherduck/tools/execute_query.py
cat src/mcp_server_motherduck/__init__.py; sed -n '1,100p' src/mcp_server_motherduck/__init__.py
python3 - <<'PY'
import importlib.util
print(importlib.util.find_spec('mcp'))
print(importlib.util.find_spec('fastmcp'))
PY

setsid <guest-path> mcp-server-motherduck --transport http --host 127.0.0.1 --port 8765 --db-path :memory: --read-write ><guest-path> 2>&1 < /dev/null & echo $!
python3 - <<'PY'
import json,time,urllib.request,urllib.error
url='http://127.0.0.1:8765/mcp'
for i in range(50):
 try:
  req=urllib.request.Request(url,data=json.dumps({'jsonrpc':'2.0','id':1,'method':'initialize','params':{'protocolVersion':'2024-11-05','capabilities':{},'clientInfo':{'name':'coldpass','version':'1'}}}).encode(),headers={'Content-Type':'application/json','Accept':'application/json, text/event-stream'},method='POST')
  r=urllib.request.urlopen(req); print(r.status,r.headers); print(r.read().decode()); break
 except Exception as e:
  if i==49: raise
  time.sleep(.2)
PY
python3 - <<'PY'
import json,urllib.request
url='http://127.0.0.1:8765/mcp'; sid='0551e7fe219e40b3998a5593306437fe'
def post(obj,i):
 req=urllib.request.Request(url,data=json.dumps(obj).encode(),headers={'Content-Type':'application/json','Accept':'application/json, text/event-stream','Mcp-Session-Id':sid},method='POST')
 return urllib.request.urlopen(req).read().decode()
print(post({'jsonrpc':'2.0','method':'notifications/initialized','params':{}},2))
print(post({'jsonrpc':'2.0','id':3,'method':'tools/call','params':{'name':'execute_query','arguments':{'sql':'SELECT 40 + 2 AS answer'}}},3))
PY
kill 2656 2>/dev/null || true
sed -n '240,540p' <guest-path>; sed -n '1,220p' <guest-path> | tail -2
sed -n '540,850p' <guest-path>
python3 - <<'PY'
import json
p={"kind":"mcp_http","argv":["<guest-path>","mcp-server-motherduck","--transport","http","--host","127.0.0.1","--port","8765","--db-path",":memory:","--read-write"],"cwd":"<guest-path>","url":"http://127.0.0.1:8765/mcp","tool":"execute_query","arguments":{"sql":"SELECT 40 + 2 AS answer"},"expected_text":"42"}
c=[{"kind":"claim","claim":"Execute SQL query (DuckDB dialect)","source":"| `execute_query` | Execute SQL query (DuckDB dialect) | `sql` | - |","input":"SELECT 40 + 2 AS answer","expected":"42","probe_kind":"mcp_http","argv":p["argv"],"url":p["url"],"tool":p["tool"],"arguments":p["arguments"],"expected_text":"42","cwd":"<guest-path>"}]
e=[{"kind":"example","claim":"Quick Start: Connecting to In-Memory DuckDB (Dev Mode)","source":"README.md, Quick Start / Connecting to In-Memory DuckDB (Dev Mode)","input":"SQL SELECT 40 + 2 AS answer","expected":"42","argv":p["argv"],"cwd":"<guest-path>","expected_text":"42"}]
for name,data in [('probe.json',p),('claims.json',c),('examples.json',e),('cycles.json',{"detected":False,"reason":"README entry points expose a request driven MCP server; no cron, scheduler, loop, webhook, --once, or --now cycle was found.","checks":[]})]: json.dump(data,open('.coldpass/'+name,'w'),indent=2)
PY
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
python3 - <<'PY'
import json
for f in ['.coldpass/probe.json','.coldpass/claims.json','.coldpass/examples.json']:
 d=json.load(open(f))
 if f.endswith('probe.json'): d['argv'][6]='8767'
 elif f.endswith('claims.json'): d[0]['argv'][6]='8767'; d[0]['url']='http://127.0.0.1:8767/mcp'
 else: d[0]['argv'][6]='8767'
 json.dump(d,open(f,'w'),indent=2)
PY
ss -ltnp | head
kill 2672; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay
python3 - <<'PY'
import json
for f in ['.coldpass/probe.json','.coldpass/claims.json','.coldpass/examples.json']:
 d=json.load(open(f))
 if f.endswith('probe.json'):
  d['argv']=['<guest-path>','mcp-server-motherduck','--transport','http','--host','127.0.0.1','--port','8767','--db-path',':memory:','--read-write']; d['url']='http://127.0.0.1:8767/mcp'
 elif f.endswith('claims.json'):
  d[0]['argv']=['<guest-path>','mcp-server-motherduck','--transport','http','--host','127.0.0.1','--port','8767','--db-path',':memory:','--read-write']; d[0]['url']='http://127.0.0.1:8767/mcp'
 else: d[0]['argv']=['<guest-path>','mcp-server-motherduck','--transport','http','--host','127.0.0.1','--port','8767','--db-path',':memory:','--read-write']
 json.dump(d,open(f,'w'),indent=2)
PY
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
python3 - <<'PY'
import json
p='.coldpass/examples.json'; json.dump([{"kind":"example","claim":"README Quick Start configuration uses the in-memory server with read-write and database switching","source":"README.md, Quick Start / Connecting to In-Memory DuckDB (Dev Mode)","reason":"This section gives an MCP client configuration rather than a finite command. Its documented server argv and actual SQL tool call are exercised by probe.json and claims.json."}],open(p,'w'),indent=2)
PY
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
python3 - <<'PY'
import json
json.dump({"outcome":"working","fault_owner":None,"operation":"Run MotherDuck MCP server over local Streamable HTTP and execute SQL using execute_query","operation_scope":"In-memory DuckDB; local MCP endpoint; Python 3.12.3 and uv/uvx installed","steps":["Installed uv using the README-linked installer.","Ran README Quick Start server configuration with HTTP transport on loopback.","Called execute_query with SELECT 40 + 2 AS answer; result returned row value 42.","Replayed probe and README claim with checker; validation passed."],"deviations":["The Quick Start documents a stdio client configuration; used its documented server flags with the README documented HTTP transport to permit the supplied replay harness to call the real tool.","System Python has no pip; used the README-supported uv installer instead."],"stuck_step":None,"main_blocker":None,"plain_failure":None,"suggested_fix":None},open('.coldpass/report.json','w'),indent=2)
PY
ss -ltnp | grep -E ':876[57]' || true