Skip to content

@W-23867374: Add Tableau Knowledge MCP tools - #869

Draft
rubywerman wants to merge 4 commits into
tableau:mainfrom
rubywerman:ruby/w-23867374-knowledge-mcp-tools
Draft

@W-23867374: Add Tableau Knowledge MCP tools#869
rubywerman wants to merge 4 commits into
tableau:mainfrom
rubywerman:ruby/w-23867374-knowledge-mcp-tools

Conversation

@rubywerman

@rubywerman rubywerman commented Sep 1, 2026

Copy link
Copy Markdown

adds the tableau knowledge tool group to the web MCP server, conformant with the knowledge-v1 openapi spec.

eight read tools — get-knowledge-suggestions, list-knowledge-sources, search-knowledge-nodes, get-knowledge-node, get-knowledge-node-relationships, get-knowledge-lineage, get-knowledge-node-impact, list-knowledge-semantic-contexts — plus three writes: create / update / delete-knowledge-semantic-contexts.

get-knowledge-node is an exact-id fetch (GET /nodes/{id} → the node with its statements and connected children); resolve-by-query is gone from the spec, so use search-knowledge-nodes to find an id first. graphId is optional on every tool — omit it to run on the site's active/default graph. search results carry a similarity score and the matched node's semantic_statements, and results can include tableau-managed external contexts.

writes are gated behind the knowledge-write-tools feature flag (off by default). reads map to tableau:knowledge:read, writes to tableau:knowledge:write. delete is idempotent, refuses tableau-managed external contexts, and handles the service's 204 empty response, matching DELETE /semantic-contexts/{ctx_id}. knowledge request/response bodies have statement text masked from debug logs.

draft — opening for maintainer discussion on the tool set (+ metadata overlap/tuning), the MCP scope name (tableau:mcp:knowledge:*), and whether the write tools should ship gated as they are here. Also do we need A TK gate? still need rollout strat

verification: tsc clean, lint clean, 2999 unit tests pass; the read path and a create→update→delete round-trip were exercised live against a deployed knowledge service.

@salesforce-cla

salesforce-cla Bot commented Sep 1, 2026

Copy link
Copy Markdown

Thanks for the contribution! It looks like @ruby-sf is an internal user so signing the CLA is not required. However, we need to confirm this.

@rubywerman
rubywerman force-pushed the ruby/w-23867374-knowledge-mcp-tools branch from 7244184 to 82890a5 Compare September 1, 2026 19:29
Adds the Tableau Knowledge tool group: seven read tools (suggestions,
sources, node search/resolve, relationships, lineage, impact) plus the
create/update/delete semantic-statement write tools gated behind the
knowledge-write-tools feature flag. Write tools map to
tableau:knowledge:write; reads to tableau:knowledge:read. Knowledge request
and response bodies have their statement text masked from debug logs.
@rubywerman
rubywerman force-pushed the ruby/w-23867374-knowledge-mcp-tools branch from 82890a5 to 1579701 Compare September 1, 2026 20:49
@bcantoni

bcantoni commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Close and reopen to see if that clears the CLAbot.

@bcantoni bcantoni closed this Sep 1, 2026
@bcantoni bcantoni reopened this Sep 1, 2026
@bcantoni

bcantoni commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

I'll work with Ruby to get added to the Tableau org.

- get-knowledge-node: repoint to get_node (GET /nodes/{id} -> NodeContext); resolve_node removed from spec
- rename semantic-statements -> semantic-contexts (tool names + endpoint paths)
- search: parse SEMANTIC_CONTEXT_EXTERNAL union; NodeMatch carries score + semantic_statements
- nest lineage under /nodes/{id}/lineage
- graphId optional on all knowledge tools (run on the site's default graph)
- delete: accept the service's 204 empty-string body
node-scoped writes are gated off for GA (TK returns node_semantic_context_disabled),
so drop targetNodeId/isGlobal from create + update. create always sends is_global:true;
update only touches statements/name. reads (list/search) unchanged.
knowledge write tools: global-only semantic context
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants