mcp-data-platform-v1.49.0
Highlights
Database-managed personas and API keys, persona-based tool visibility for agents, and a restructured admin UI.
Database-managed personas
Personas can now be created, edited, and deleted through the admin UI with full PostgreSQL persistence. DB-defined personas override file-configured personas with the same name, allowing file config to serve as defaults while the admin UI provides runtime control.
The persona_definitions table (migration 000028) stores all persona fields including roles, tool allow/deny rules, connection allow/deny rules, and context overrides as JSONB columns.
Database-managed API keys
API keys can now be created and deleted through the admin UI with full PostgreSQL persistence. Keys are bcrypt-hashed at rest — the plaintext value is returned exactly once at creation time. File-configured keys continue to work alongside DB-managed keys.
New fields on API keys:
- Email — contact address for the key holder
- Description — what the key is used for
- Expiration — optional duration (e.g.,
8760hfor one year); expired keys are rejected at authentication time
The api_keys table (migration 000029) stores hashed keys with metadata and JSONB roles.
Persona-based tool visibility
Agents now only see tools their persona allows. Previously tools/list returned every registered tool regardless of the caller's persona — agents saw tools they couldn't call, wasting tokens and causing confusion. The visibility middleware resolves the caller's persona from the session and filters the tool list through the persona's allow/deny rules.
Admin UI restructure
The nested settings menu has been replaced with flat alphabetized navigation: Dashboard, Agent Instructions, Assets, Audit Log, Changelog, Connections, Description, Keys, Knowledge, Personas, Tools. Each section is a standalone page with its own URL for direct linking.
The Keys page has a table layout with role browser reference panel, expiration display, and inline email/description fields.
Connection UI improvements
- Nested config objects render as formatted JSON instead of
[object Object] - Connections managed in both file and database show as "database" (the authoritative source) instead of the confusing "file+db" label
- Explanatory note when a DB-managed connection also has a file fallback
Other improvements
${VAR:-default}environment variable expansion syntax in YAML config.env.examplefor local development with remote backends
Database migrations
| Migration | Table | Purpose |
|---|---|---|
| 000028 | persona_definitions |
Persona management |
| 000029 | api_keys |
API key management with bcrypt hashes |
Migrations run automatically on startup when a database is configured.
Breaking changes
APIKeyManager.GenerateKeynow acceptsauth.APIKeystruct instead of(name string, roles []string)
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.49.0Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-data-platform_1.49.0_linux_amd64.tar.gz.sigstore.json \
mcp-data-platform_1.49.0_linux_amd64.tar.gz