mcp-data-platform-v0.33.2
Bug Fixes
This release fixes three portal bugs discovered during production deployment, all related to the portal artifact system.
Nil S3Client panic (crash) — pkg/portal/handler.go, pkg/portal/public.go
When no s3_connection was configured, both getAssetContent and fetchPublicAsset called S3Client.GetObject() on a nil pointer, causing repeated panics (panic: nil pointer dereference). Both endpoints now return HTTP 503 with "content storage not configured" instead of crashing.
Additionally, the toolkit's write paths (handleSaveArtifact and uploadContentUpdate in pkg/toolkits/portal/toolkit.go) silently skipped S3 uploads when the client was nil, creating ghost assets in the metadata store that pointed to non-existent S3 content. These now fail early with a clear error instead of silently producing broken assets.
Admin section not visible — pkg/portal/handler.go, cmd/mcp-data-platform/main.go
The /api/v1/portal/me endpoint hardcoded slices.Contains(user.Roles, "admin") but OIDC roles arrive with a configured prefix (e.g., dp_admin). The check now uses AdminRoles populated from the admin persona's configured roles via the PersonaRegistry, so any role prefix scheme works correctly. When no admin persona is configured, the behavior is fail-closed (no admin access granted).
Wrong deep link URL from save_artifact — pkg/toolkits/portal/toolkit.go
The buildSaveOutput function generated portal URLs with path /artifacts/{id} but the portal UI serves assets at /portal/assets/{id}. Fixed the path to match the actual route.
Changed Files
| File | Change |
|---|---|
cmd/mcp-data-platform/main.go |
Populate AdminRoles from admin persona config via PersonaRegistry |
pkg/portal/handler.go |
Add AdminRoles to Deps; nil-guard S3Client; use hasAnyRole for admin check |
pkg/portal/handler_test.go |
Tests for nil S3Client, prefixed admin roles, hasAnyRole edge cases |
pkg/portal/public.go |
Nil-guard S3Client in fetchPublicAsset, return 503 |
pkg/portal/public_test.go |
Test for nil S3Client in public view path |
pkg/toolkits/portal/toolkit.go |
Fail early on nil S3Client in write paths; fix deep link URL |
pkg/toolkits/portal/toolkit_test.go |
Tests for nil S3Client in save/update, buildSaveOutput URL |
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.33.2Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-data-platform_0.33.2_linux_amd64.tar.gz.sigstore.json \
mcp-data-platform_0.33.2_linux_amd64.tar.gz