Add new data-platform plugin for data engineering workflows with: MCP Server (32 tools): - pandas operations (14 tools): read_csv, read_parquet, read_json, to_csv, to_parquet, describe, head, tail, filter, select, groupby, join, list_data, drop_data - PostgreSQL/PostGIS (10 tools): pg_connect, pg_query, pg_execute, pg_tables, pg_columns, pg_schemas, st_tables, st_geometry_type, st_srid, st_extent - dbt integration (8 tools): dbt_parse, dbt_run, dbt_test, dbt_build, dbt_compile, dbt_ls, dbt_docs_generate, dbt_lineage Plugin Features: - Arrow IPC data_ref system for DataFrame persistence across tool calls - Pre-execution validation for dbt with `dbt parse` - SessionStart hook for PostgreSQL connectivity check (non-blocking) - Hybrid configuration (system ~/.config/claude/postgres.env + project .env) - Memory management with 100k row limit and chunking support Commands: /initial-setup, /ingest, /profile, /schema, /explain, /lineage, /run Agents: data-ingestion, data-analysis Test suite: 71 tests covering config, data store, pandas, postgres, dbt tools Addresses data workflow issues from personal-portfolio project: - Lost data after multiple interactions (solved by Arrow IPC data_ref) - dbt 1.9+ syntax deprecation (solved by pre-execution validation) - Ungraceful PostgreSQL error handling (solved by SessionStart hook) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
87 lines
2.3 KiB
Bash
Executable File
87 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# post-update.sh - Run after pulling updates
|
|
#
|
|
# Usage: ./scripts/post-update.sh
|
|
#
|
|
# This script:
|
|
# 1. Updates Python dependencies for MCP servers
|
|
# 2. Validates configuration still works
|
|
# 3. Reports any new manual steps from CHANGELOG
|
|
#
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
log_success() { echo -e "${GREEN}[OK]${NC} $1"; }
|
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
|
|
update_mcp_server() {
|
|
local server_name="$1"
|
|
local server_path="$REPO_ROOT/mcp-servers/$server_name"
|
|
|
|
log_info "Updating $server_name dependencies..."
|
|
|
|
if [[ -d "$server_path/.venv" ]] && [[ -f "$server_path/requirements.txt" ]]; then
|
|
cd "$server_path"
|
|
source .venv/bin/activate
|
|
pip install -q --upgrade pip
|
|
pip install -q -r requirements.txt
|
|
deactivate
|
|
cd "$REPO_ROOT"
|
|
log_success "$server_name dependencies updated"
|
|
else
|
|
log_warn "$server_name not fully set up - run ./scripts/setup.sh first"
|
|
fi
|
|
}
|
|
|
|
check_changelog() {
|
|
log_info "Checking CHANGELOG for recent updates..."
|
|
|
|
if [[ -f "$REPO_ROOT/CHANGELOG.md" ]]; then
|
|
# Show the Unreleased section
|
|
echo ""
|
|
echo "Recent changes (from CHANGELOG.md):"
|
|
echo "-----------------------------------"
|
|
sed -n '/## \[Unreleased\]/,/## \[/p' "$REPO_ROOT/CHANGELOG.md" | head -30
|
|
echo "-----------------------------------"
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
echo "=============================================="
|
|
echo " Post-Update Check"
|
|
echo "=============================================="
|
|
echo ""
|
|
|
|
# Shared MCP servers at repository root (v3.0.0+)
|
|
update_mcp_server "gitea"
|
|
update_mcp_server "netbox"
|
|
update_mcp_server "data-platform"
|
|
|
|
check_changelog
|
|
|
|
echo ""
|
|
log_success "Post-update complete!"
|
|
echo ""
|
|
echo "If you see new features in the changelog that require"
|
|
echo "configuration changes, update your ~/.config/claude/*.env files."
|
|
}
|
|
|
|
main "$@"
|
|
|
|
# Clear plugin cache to ensure fresh hooks are loaded
|
|
echo "Clearing plugin cache..."
|
|
rm -rf ~/.claude/plugins/cache/leo-claude-mktplace/
|
|
echo "Cache cleared"
|