Backport today's MCP/search/audit fixes to 1.13#28872
Conversation
* chore(mcp): add server.json for MCP Registry publishing
Adds metadata for publishing openmetadata-mcp to the official MCP
Registry (registry.modelcontextprotocol.io). Aggregators like PulseMCP
scrape the official registry, so this single entry surfaces the server
across the ecosystem.
The server is self-hosted per deployment, so the streamable-http URL
uses an {openmetadata_host} template variable that clients resolve to
their own OpenMetadata hostname.
* chore(mcp): align server.json description with #27975 messaging
Reframes the registry description to match the "trusted context and
business semantics for AI" positioning from the README rebrand in #27975.
Also tightens the description to satisfy the schema's 100-char cap on
the field (the prior 506-char copy would have failed validation at
publish time) and adds websiteUrl pointing to the MCP docs page.
* chore(mcp): mark server.json description as the official MCP
The registry namespace (io.github.open-metadata/*) is invisible to users
browsing aggregators like PulseMCP — they see only title and description.
Calling out "Official OpenMetadata MCP" differentiates this canonical
entry from any community wrappers people might publish under other
namespaces.
* chore(mcp): clarify host variable supports custom ports
Many self-hosted OpenMetadata deployments run on the default :8585
without a reverse proxy. Spell that out in the openmetadata_host
variable description so users know they can include a port.
* fix
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 10f2658)
(cherry picked from commit 9d4bf69)
* MCP Tool Usage * Update generated TypeScript types * Address PR review feedback on MCP usage tracking Reorder UA heuristic so VS Code wins over Claude CLI for composite User-Agents, refactor to a predicate list, and sanitise the resolved client name (trim, strip control chars, cap at 64 chars). Bound the schema field to match. Bound the latency aggregation lists in McpUsageResource with reservoir sampling so summary/per-tool percentile estimates stay valid without unbounded heap growth. Skip null-timestamp rows in the history loop and update the stale /history Swagger description to reflect the ok/fail shape. Convert CallToolOutcome to a Java record and update the recorder flow to use accessor methods. Fix the pre-existing regression in McpImpersonationTest where the mock still wired the legacy callTool path. Add DefaultToolContextTest with direct coverage for classifyException (all four ErrorCategory buckets, cause-chain walk, null message in chain) and the unknown-tool outcome. (cherry picked from commit 1dcf8dd) (cherry picked from commit 21aee7f)
#28512) * feat(mcp): return _score as similarityScore in search_metadata tool * test: cover similarityScore mapping in search_metadata results --------- Co-authored-by: Vishnu Jain <121681876+Vishnuujain@users.noreply.github.com> Co-authored-by: Vishnu Jain <vishnujtimes@gmail.com> (cherry picked from commit 5b34107) (cherry picked from commit a04806f)
* Fixes #27796: resolve search_metadata index by entityType to prevent cross-type leak * gitarbot feedback: validate entityType against index registry, fall back to dataAsset * harden search_metadata param handling: tolerate non-string entityType/query/fields and object queryFilter (cherry picked from commit 68d3368) (cherry picked from commit 27d0642)
…8764) * refactor(mcp): shared response-trim + params utils, global size-budget net, error-message null-guards * refactor(mcp): expose serializeWithinBudget so Collate dispatcher shares the size-budget net * refactor(mcp): move McpParams/McpResponseTrim to util package, guard RCA error messages (cherry picked from commit 01bd98c) (cherry picked from commit 8c80406)
* refactor(mcp): shared response-trim + params utils, global size-budget net, error-message null-guards * refactor(mcp): expose serializeWithinBudget so Collate dispatcher shares the size-budget net * feat(mcp): trim wide-table payload in get_entity_details (column descriptions, schema/model sql) * docs(mcp): annotate intentional non-short-circuit operators in GetEntityTool (cherry picked from commit b90c57f) (cherry picked from commit 9ec4bab)
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
|
Hi there 👋 Thanks for your contribution! The OpenMetadata team will review the PR shortly! Once it has been labeled as Let us know if you need any help! |
Code Review ✅ ApprovedBackports MCP fixes and search improvements to version 1.13, including payload truncation, audit log consumer re-arming, and hybrid search vectorization. No issues found. OptionsDisplay: compact → Showing less information. Comment with these commands to change:
Was this helpful? React with 👍 / 👎 | Gitar |
Backports the 16 commits cherry-picked into 1.13.1 today onto 1.13 (protected branch, so via PR).
Includes: #27982, #28352, #28383, #28622, #28618, #28658, #28633, #28632, #28669, #28512, #28698, #28743, #28764, #28758, #28821, #28776.
All applied cleanly (no conflicts). Backend reactor build green on 1.13.1 with identical content.
🤖 Generated with Claude Code
Summary by Gitar
McpUsageResourceandAuthEnrichedMcpContextExtractor.testSuiteandtestCaseentities for improved hybrid search; added specificBodyTextContributorimplementations to optimize semantic payload quality.similarityScoretosearch_metadataresults and improved index resolution to prevent cross-type leakage.EventSubscriptionSchedulerto re-arm audit log consumer triggers on startup, resolving issues where abandoned or stale Quartz triggers would stop consumer processing.This will update automatically on new commits.