mcp-data-platform-v1.39.0
Public Viewer Overhaul
This release transforms the public viewer (/portal/view/{token}) with theme support, expiration awareness, configurable notices, and search engine protection.
Light/Dark Mode
The public viewer now respects the system prefers-color-scheme setting and includes a toggle button in the header. The selected theme persists to localStorage across visits. Theme affects page chrome (header, notice bar, background) and text content — HTML iframe content is fully isolated with a white background regardless of theme.
Expiration Countdown
When a share has an expiration, a notice bar displays the relative time remaining (e.g., "This page expires in 6 hours"). The countdown updates automatically. Suppress it per-share with hide_expiration: true at creation time.
Per-Share Notice Text
The notice bar text is now configurable per-share via the notice_text field:
{
"expires_in": "24h",
"notice_text": "Internal use only.",
"hide_expiration": false
}- Omit
notice_text→ defaults to "Proprietary & Confidential. Only share with authorized viewers." - Set to
""→ hides the notice text entirely - Set to custom string → displayed as-is (max 500 characters)
When both notice text is empty and there is no expiration (or expiration is hidden), the notice bar is removed entirely.
Robots.txt
A /robots.txt endpoint now returns Disallow: / for all user agents, preventing search engines from indexing the portal, API, or shared links.
Layout & Styling Fixes
- Content area fills remaining viewport height via flexbox — no excess whitespace below short content
- Iframe border adapts to theme via CSS custom properties instead of hardcoded color
Database Migrations
Two new migrations run automatically on startup:
| Migration | Description |
|---|---|
| 000018 | ALTER TABLE portal_shares ADD COLUMN hide_expiration BOOLEAN NOT NULL DEFAULT FALSE |
| 000019 | ALTER TABLE portal_shares ADD COLUMN notice_text TEXT NOT NULL DEFAULT 'Proprietary & Confidential. Only share with authorized viewers.' |
Both are backward-compatible — existing shares retain default behavior.
API Changes
The POST /api/v1/portal/assets/{id}/shares endpoint accepts two new optional fields:
| Field | Type | Default | Description |
|---|---|---|---|
hide_expiration |
bool |
false |
Suppress expiration countdown in public viewer |
notice_text |
string |
"Proprietary & Confidential..." |
Custom notice text; "" hides the notice |
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:v1.39.0Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-data-platform_1.39.0_linux_amd64.tar.gz.sigstore.json \
mcp-data-platform_1.39.0_linux_amd64.tar.gz