mcp-datahub-v0.7.3
What's New
Fix: AddGlossaryTerm and AddLink 422 Errors (P1)
AddGlossaryTerm() and AddLink() both returned HTTP 422 from DataHub's ingestProposal REST API. Root causes identified by reading the upstream DataHub PDL schemas for DataHub 1.3.0+.
Missing required auditStamp on GlossaryTerms
GlossaryTerms.pdl defines auditStamp: AuditStamp as a required field. Our glossaryTermsAspect struct omitted it entirely, causing DataHub to reject every glossary term write with 422.
Fix: Added AuditStamp field to glossaryTermsAspect. Both AddGlossaryTerm() and RemoveGlossaryTerm() now populate it with the current epoch milliseconds before writing.
Wrong JSON field name on InstitutionalMemory
InstitutionalMemoryMetadata.pdl defines the audit stamp field as createStamp. Our linkElement struct used json:"created", so the field was silently dropped during JSON serialization and DataHub rejected the payload.
Fix: Renamed to CreateStamp with json:"createStamp" tag.
Hardcoded time: 0 in audit stamps
AuditStamp.pdl requires time: Time (epoch milliseconds). The previous code hardcoded 0 with a comment "DataHub will fill this in" — it doesn't.
Fix: New newAuditStamp() helper uses time.Now().UnixMilli(). All write paths now use real timestamps.
Affected methods:
AddGlossaryTerm()— now worksRemoveGlossaryTerm()— now worksAddLink()— now worksRemoveLink()— now works (read path fixed for existing links withcreateStamp)
// These now succeed against DataHub 1.3.0+
err := client.AddGlossaryTerm(ctx,
"urn:li:dataset:(urn:li:dataPlatform:trino,catalog.schema.table,PROD)",
"urn:li:glossaryTerm:CustomerPII",
)
err = client.AddLink(ctx,
"urn:li:dataset:(urn:li:dataPlatform:trino,catalog.schema.table,PROD)",
"https://wiki.example.com/data-dictionary",
"Data dictionary for customer tables",
)Changelog
Bug Fixes
e61d7d5fix: align glossaryTerms and institutionalMemory aspects with DataHub PDL schemas (#60)
Upgrading
This is a backwards-compatible patch release. No configuration changes required.
Go module:
go get github.com/txn2/mcp-datahub@v0.7.3
Breaking change for direct struct users: If you construct linkElement or glossaryTermsAspect structs directly (outside of the provided Add*/Remove* methods), note:
linkElement.Createdis nowlinkElement.CreateStamp(JSON tag changed from"created"to"createStamp")glossaryTermsAspectnow has a requiredAuditStampfield
If you only use the public Client methods (AddGlossaryTerm, AddLink, etc.), no code changes are needed.
Installation
Claude Desktop (macOS/Windows)
Download the .mcpb bundle for your platform and double-click to install:
- macOS Apple Silicon (M1/M2/M3/M4):
mcp-datahub_0.7.3_darwin_arm64.mcpb - macOS Intel:
mcp-datahub_0.7.3_darwin_amd64.mcpb - Windows:
mcp-datahub_0.7.3_windows_amd64.mcpb
Homebrew (macOS)
brew install txn2/tap/mcp-datahubClaude Code CLI
claude mcp add datahub \
-e DATAHUB_URL=https://your-datahub.example.com/api/graphql \
-e DATAHUB_TOKEN=your-token \
-- mcp-datahubDocker
docker pull ghcr.io/txn2/mcp-datahub:v0.7.3Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-datahub_0.7.3_linux_amd64.tar.gz.sigstore.json \
mcp-datahub_0.7.3_linux_amd64.tar.gz