mcp-data-platform-v1.54.0
Managed Resources
v1.54.0 adds managed resources — human-uploaded reference material (samples, playbooks, templates, references) that is available to both portal users and AI agents via the MCP resources protocol primitive.
Highlights
- Three scope levels: global (all users), persona (role-based), and user (private). Admins can upload to any scope; regular users upload to their own scope and see persona/global resources read-only.
- MCP-native access: Managed resources are served via the standard
resources/listandresources/readprotocol handlers, filtered by the caller's identity and scope. Models that support the MCP resources primitive can discover and read uploaded reference material automatically. - Portal UI: New "Resources" section in both the user portal and admin portal. Upload, search, filter by category, view metadata, edit, and delete. Admin view shows all resources across scopes with per-persona tabs.
- Multi-target upload: Admins can upload a resource to multiple personas (checkboxes) or multiple users (by email) in a single operation.
- Auto-enabled: Managed resources activate automatically when a database is available — no configuration required. S3 blob storage is optional but recommended.
New Configuration
resources:
managed:
enabled: true # auto-enabled when DB available
uri_scheme: "mcp" # configurable per deployment
s3_connection: "default"
s3_bucket: "my-bucket"Breaking Changes
read_resourcetool removed. The tool-based resource read path is superseded by the protocol-nativeresources/listandresources/readhandlers. MCP clients that speak the resources primitive (all current supported clients) are unaffected. If a future client requires tool-based access, it can be reintroduced.
Security & Robustness
- S3 blob cleanup on DB insert failure (no orphaned blobs)
- 409 Conflict on duplicate URI (instead of 500)
- ILIKE wildcard escaping in text search
- Denied file extensions (.exe, .sh, .bat, .ps1, etc.)
- MCP middleware requires authentication for managed resources
- Content-Type sanitization via
mime.ParseMediaTypefor XSS prevention MaxBytesReaderlimits upload body size- Permission model enforced server-side: scope visibility, write restrictions, modify/delete gated to uploader or admin
Portal UX
- Download works for both cookie and API-key auth (fetch + blob URL)
- Search debounced at 300ms
- Client-side 100 MB file size validation
- Partial multi-upload shows which targets succeeded vs failed
- Double-click prevention on upload button
Changelog
Features
- feat: resource CRUD — storage, API, MCP primitive, portal UI (#306)
Bug Fixes
- fix: review findings — security, UX, and documentation
- fix: lint, security, and coverage for resource CRUD
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.54.0Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-data-platform_1.54.0_linux_amd64.tar.gz.sigstore.json \
mcp-data-platform_1.54.0_linux_amd64.tar.gz