Skip to content

mcp-data-platform-v0.17.0

Choose a tag to compare

@github-actions github-actions released this 11 Feb 23:22
· 367 commits to main since this release
d696e7b

This release delivers the admin REST API, a config store for runtime configuration persistence, and a documentation overhaul.

Closes #64. Supports #70.

Admin REST API (pkg/admin/)

A comprehensive management API for operating the platform. All endpoints require API key authentication and return JSON.

System endpoints

Endpoint Description
GET /healthz Health check
GET /api/v1/system/info Platform info (version, uptime, transport, registered toolkits)
GET /api/v1/system/tools All registered MCP tools with metadata

Configuration management

Endpoint Description
GET /api/v1/config Export full platform configuration
GET /api/v1/config/:section Get a specific config section (server, auth, personas, semantic, etc.)
PUT /api/v1/config/:section Update a config section at runtime

Persona CRUD

Endpoint Description
GET /api/v1/personas List all persona definitions
GET /api/v1/personas/:name Get a specific persona
POST /api/v1/personas Create a new persona
PUT /api/v1/personas/:name Update an existing persona
DELETE /api/v1/personas/:name Delete a persona

API key management

Endpoint Description
GET /api/v1/auth/keys List API keys (hashes only, not secrets)
POST /api/v1/auth/keys Create a new API key (returns the secret once)
DELETE /api/v1/auth/keys/:name Revoke an API key

Audit log querying

Endpoint Description
GET /api/v1/audit/events Query audit events with filtering by user, tool, time range, and pagination

OpenAPI spec

The admin API is fully documented with Swagger annotations. The generated OpenAPI spec lives in internal/apidocs/ and is validated on every build via make swagger-check.

Config Store (pkg/configstore/)

A new Store interface with Get, Set, Delete, List, and Watch operations for runtime configuration persistence.

Two implementations:

  • File backend — read-only, loads from the YAML config file. Used when no database is configured.
  • PostgreSQL backend — read-write, stores versioned config entries in a config_entries table with full history. Enables runtime config changes via the admin API.

New migration: 000009_config_store — creates the config_entries table with namespace, key, value (JSONB), version tracking, and timestamps.

New config sections

database:
  dsn: "${DATABASE_URL}"

admin:
  enabled: true
  address: ":8081"

config_store:
  backend: postgres   # or "file"

sessions:
  secret: "${SESSION_SECRET}"

Bug Fix: Empty Proposed Changes (#88)

When apply_knowledge action=synthesize returns an empty proposed_changes array (because insights were captured without suggested_actions), the response now includes a note field explaining why and guiding the LLM to construct changes manually. Previously this returned an empty array with no explanation.

Documentation

  • New page: Admin API (docs/server/admin-api.md) — full reference for all admin endpoints with examples
  • New page: Operating Modes (docs/server/operating-modes.md) — stdio vs HTTP transport, headless operation, admin-only mode
  • Configuration page restructured — reorganized into How Configuration Works, Database, Admin API, Audit, and Sessions sections
  • Mermaid fullscreen viewer — click any Mermaid diagram in the docs to open a fullscreen overlay with zoom, pan, and keyboard dismiss. Works around mkdocs-material's Shadow DOM via fetch+DOMParser. Supports light/dark mode.
  • llms.txt and llms-full.txt updated per llmstxt.org spec

Security

  • Custom Semgrep rules added (.semgrep/go-security.yml) for detecting unbounded allocations from user input
  • Audit store hardened against excessive memory allocation (CodeQL go/uncontrolled-allocation-size — capped with maxQueryCapacity barrier)

Changelog

  • fix: synthesize note when proposed_changes is empty (#88) (@cjimti)
  • feat: admin REST API, config store, and documentation overhaul (#89) (@cjimti)

Installation

Homebrew (macOS)

brew install txn2/tap/mcp-data-platform

Claude Code CLI

claude mcp add mcp-data-platform -- mcp-data-platform

Docker

docker pull ghcr.io/txn2/mcp-data-platform:v0.17.0

Verification

All release artifacts are signed with Cosign. Verify with:

cosign verify-blob --bundle mcp-data-platform_0.17.0_linux_amd64.tar.gz.sigstore.json \
  mcp-data-platform_0.17.0_linux_amd64.tar.gz