mcp-data-platform-v0.17.1
This release delivers the Admin Portal — a React-based management UI embedded in the Go binary, served directly from the platform with zero external dependencies. The portal provides audit dashboards, tool execution, knowledge management, and persona browsing.
Closes #70 (partial — OAuth PKCE login, real-time WebSocket updates, and full CRUD deferred to future releases).
Note: This release does not include the COUNT(*) row estimation fix. If DataHub search enrichment is slow due to full table scans, upgrade to v0.17.2.
Admin Portal UI
A complete single-page application built with React 19, TypeScript, Vite, TanStack Query, Zustand, and Recharts. The compiled assets are embedded into the Go binary via go:embed — no separate static file server or CDN required.
Gated by config (off by default)
admin:
enabled: true # default: false
persona: admin # persona required for access
path_prefix: /api/v1/admin # URL prefix
portal_title: Admin Portal # sidebar titleWhen admin.enabled: false (the default), no admin assets are served and no admin routes are registered.
Pages
| Page | Description |
|---|---|
| Dashboard | System info, audit event timeseries chart, dimensional breakdown tables (by user, tool, persona, toolkit) |
| Audit Log | Filterable event table with detail drawer, time-range filtering, and CSV export |
| Tools | Schema browser for all registered MCP tools with interactive executor — run any tool from the UI with auth token propagation via in-memory MCP transport |
| Personas | Read-only listing of all persona definitions with roles and tool rules |
| Knowledge | Browse captured insights and changesets |
Features
- Light/dark/system theme toggle with persistent preference via localStorage
- Responsive layout for desktop and tablet
- Client-side routing with sidebar navigation
- SPA fallback — all non-API routes serve the index, enabling browser refresh on any page
New Backend Endpoints
| Method | Path | Description |
|---|---|---|
GET |
/audit/events |
Query audit events with filters (user, tool, time range, pagination) |
GET |
/audit/export |
Export audit events as CSV download |
GET |
/audit/stats/timeseries |
Audit event timeseries buckets for charts |
GET |
/audit/stats/breakdown |
Dimensional breakdown (by user, tool, persona, toolkit) |
GET |
/audit/stats/overview |
Aggregate stats (total calls, success rate, unique users, etc.) |
GET |
/audit/stats/performance |
Latency percentiles (p50/p95/p99) |
GET |
/tools/schemas |
List all MCP tool schemas with toolkit kind metadata |
POST |
/tools/call |
Execute a tool via internal MCP session with auth propagation |
SQL Query Builder Migration
Replaced hand-built SQL string concatenation with the squirrel query builder across:
- Audit store (
pkg/audit/postgres/) - Knowledge insight store
- Knowledge changeset store
This improves safety (parameterized queries by construction) and maintainability.
Local Dev Environment
New Docker Compose setup for local development with seeded data:
make dev-up # Start PostgreSQL + seed 5000 audit events + knowledge insights
make dev-down # Tear downThe admin UI connects to the real backend with live data, enabling rapid frontend iteration.
Changelog
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.17.1Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-data-platform_0.17.1_linux_amd64.tar.gz.sigstore.json \
mcp-data-platform_0.17.1_linux_amd64.tar.gz