mcp-data-platform-v0.37.0
What's Changed
Three improvements spanning OIDC auth, portal UX, and admin capabilities (#203).
Bug Fix
OIDC logout redirect
Keycloak (and many OIDC providers) rejects relative post_logout_redirect_uri values, causing a "Invalid redirect uri" error when users clicked Sign Out. The logout handler now sends an absolute URL constructed from PublicBaseURL, matching how the login callback already works.
A new PostLogoutRedirect field on FlowConfig separates the OIDC post-logout URI from the general PostLoginRedirect. When PostLogoutRedirect is empty, it falls back to PostLoginRedirect for backward compatibility.
Files: pkg/browsersession/oidcflow.go, pkg/platform/platform.go
New Features
Asset sharing indicators on My Assets
My Assets cards now display sharing status at a glance:
- Users icon — asset is shared with one or more specific users
- Globe icon — asset has an active public link
Sharing status is fetched via a new batch ListActiveShareSummaries query that uses BOOL_OR aggregation grouped by asset_id, avoiding N+1 lookups regardless of how many assets are on the page.
Files: pkg/portal/types.go, pkg/portal/store.go, pkg/portal/handler.go, ui/src/pages/assets/MyAssetsPage.tsx, ui/src/api/portal/types.ts
Admin assets management
Admins can now browse, inspect, edit, and delete any platform asset regardless of owner. This provides full visibility into all user-created assets from the admin interface.
API endpoints (5 new routes):
| Method | Path | Description |
|---|---|---|
GET |
/api/v1/admin/assets |
List all assets with filters (owner, content type, tag) and pagination |
GET |
/api/v1/admin/assets/{id} |
Get asset metadata |
GET |
/api/v1/admin/assets/{id}/content |
Retrieve asset content from S3 |
PUT |
/api/v1/admin/assets/{id} |
Update asset name, description, or tags |
DELETE |
/api/v1/admin/assets/{id} |
Soft-delete an asset |
All endpoints are protected by the admin auth middleware. The list endpoint includes share summaries for each asset, so admins can see sharing status in the table view.
UI pages (2 new):
- Admin Assets page — table view with content type icons, owner column, sharing indicators (Users/Globe), and size/date columns. Accessible from the new "Assets" sidebar item under Admin.
- Admin Asset Viewer — full asset viewer with content rendering, metadata sidebar (edit/delete), owner badge, and provenance panel.
Files: pkg/admin/assets.go, pkg/admin/handler.go, cmd/mcp-data-platform/main.go, ui/src/pages/assets/AdminAssetsPage.tsx, ui/src/pages/viewer/AdminAssetViewerPage.tsx, ui/src/api/admin/hooks.ts, ui/src/api/admin/types.ts, ui/src/components/layout/Sidebar.tsx, ui/src/components/layout/AppShell.tsx
Test Coverage
- 3 new OIDC logout tests —
PostLogoutRedirectused in redirect URL, default fallback toPostLoginRedirect, no-end-session fallback - 17 new admin asset tests — route registration, list/get/content/update/delete success and error paths, validation, nil share store
- 5 new store tests —
ListActiveShareSummariespostgres implementation (success, empty input, query error, scan error, row iteration error) - 1 new portal handler test —
listAssetsincludesshare_summariesin response
Stats
- 20 files changed, 1,613 additions, 20 deletions
Installation
Homebrew (macOS)
brew install txn2/tap/mcp-data-platformClaude Code CLI
claude mcp add mcp-data-platform -- mcp-data-platformDocker
docker pull ghcr.io/txn2/mcp-data-platform:v0.37.0Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-data-platform_0.37.0_linux_amd64.tar.gz.sigstore.json \
mcp-data-platform_0.37.0_linux_amd64.tar.gz