v0.6.0 — PyPI catch-up + code-agent uvx bootstrap
🎯 PyPI back in sync with the plugin path
First PyPI release since v0.3.0. The Claude Code plugin path shipped
v0.4.0 + v0.5.0 internally from cloned-repo source, but neither was
published to PyPI due to a release-trigger workflow bug — v0.6.0 rolls
up both prior releases plus the uvx UX work that promotes
uvx redshift-comment-mcp to a first-class install path for non-Claude-
Code MCP clients.
The new Release publishing (MUST) discipline (#31) + publish.yml
trigger fix (#33) close the gap that caused the silent v0.5.0
non-publication. v0.5.0 is intentionally skipped on PyPI; v0.6.0 is
its strict superset plus the UX work.
🤖 New in v0.6.0 — code-agent uvx bootstrap (#33)
uvx redshift-comment-mcp becomes truly stand-alone — no Claude Code
plugin required for first-time setup, and the password stays out of
chat / stdout via OS-native dialog.
| Subcommand | Purpose |
|---|---|
set-password --profile X --dialog |
macOS osascript / Linux zenity password dialog → keychain. Password never enters chat / stdout / argv. |
set-password --profile X --stdin |
Read one line from stdin → keychain (headless / CI use). Mutually exclusive with --dialog. |
server.py's "profile not configured" error messages now offer three
setup paths: Claude Code skill, code-agent pipeline (set-fields +
set-password --dialog), and human terminal (uvx redshift-comment-mcp setup). Before v0.6.0, the error only mentioned the Claude Code skill —
uvx-only users hit a dead-end message.
Trilingual README §"Setting up with uvx" now ships concrete
claude_desktop_config.json snippets (single-profile + multi-cluster)
plus the code-agent bootstrap pipeline (#32 + #33).
✨ New skills (rolled up from v0.4.0)
| Skill | One-liner | PR |
|---|---|---|
/redshift-grep-columns |
Cross-table column keyword search across one or all schemas | #24 |
/redshift-grep-tables |
Cross-schema table keyword search across the entire cluster | #24 |
/redshift-switch-profile |
Switch the active connection profile without re-entering host/user/password | #21 |
🆕 Other new features (v0.4.0 + v0.5.0)
execute_sqltransparency — response now includes_executed_sql
(the rewritten SQL the server actually ran) and_user_facing_message
(a shaped string the agent can show users) (#28).- Zero-config plugin install —
claude plugin installno longer
asks for a profile name. The MCP server reads an active-profile
pointer file written by/redshift-setup(#21, breaking, see
migration below).
⚡ Performance (rolled up from v0.4.0)
- Column metadata SQL: ~3.3x at 12K columns. Rewrote correlated-
subquery pattern to direct LEFT JOIN. Speedup persists at small N (#22). - Long-comment safety in multi-item responses.
MAX_COMMENT_LEN=1000
caps each comment with acomment_truncated_countmarker; single-item
getters never truncate (#23).
🐛 Bug fixes
- Single-profile upgrade rescue (v0.5.0) — pre-PR-22 installs whose
lone profile was not nameddefaultgot hard-broken by the active-
profile pointer file introduction.resolve_active_profilenow falls
back to the lone profile when exactly one exists; explicit
--profile/ env / pointer inputs still resolve verbatim so typos
surface as typos (#29). - uvx-only error UX (v0.6.0) — "no profile configured" error now
guides ALL setup paths, not just the Claude Code skill (#33). - Various skill bug fixes from functional-test pass (#19).
🏠 Housekeeping
- Removed
/redshift-cache-schema— cache layer retired in favor
of always-fresh catalog SQL + the new performance work (#26). - Live-cluster smoke gate.
REDSHIFT_INTEGRATION=1 pytest tests/integration/
exercises every MCP tool against a real Redshift cluster (#25). - New
tests/e2e/tier — MCP wire-protocol tests via stdio
subprocess (#28). - README install-link fix (#27).
⚠️ Breaking — Profile system contract (rolled up from v0.4.0, #21)
If you installed v0.3.0 directly via pip install redshift-comment-mcp:
- Profile pointer file is new.
~/.config/redshift-comment-mcp/active-profile
is now the source of truth for the active profile. Absence is no longer
an error — single-profile users get an implicit fallback (after #29). - Plugin manifest no longer asks for profile name. Anyone who
manually set a profile name via client config should switch to
--profile <name>to override the pointer file, or rely on
/redshift-setup+/redshift-switch-profile.
If your existing single profile is named anything other than default,
upgrading straight to 0.6.0 (not stopping at any 0.4.x / 0.5.0 point)
is the safe path — the single-profile fallback rescue (#29) is included.
🛠️ Release discipline (v0.6.0 internal)
CLAUDE.mdnow codifies the release-publishing flow as a hard
discipline (tag → Pre-release → flip-to-Release → PyPI), so the silent
non-publication that hit v0.4.0 + v0.5.0 doesn't recur (#31)..github/workflows/publish.ymltrigger gainsreleasedactivity
type, sogh release edit --prerelease=false(the Pre-release →
Release promotion) actually fires the workflow. v0.5.0 was the worked
example of this trigger gap — fixed forward in v0.6.0 (#33).
📥 Install
# PyPI / generic MCP client
pip install --upgrade redshift-comment-mcp
# or
uvx redshift-comment-mcp
# Claude Code plugin
claude plugin install redshift-comment-mcp📊 Full changelog
PRs in this release (v0.3.0…v0.6.0):
#19 · #20 · #21 · #22 · #23 · #24 · #25 · #26 · #27 · #28 · #29 · #30 ·
#31 · #32 · #33