Skip to content

Commit 1579701

Browse files
committed
@W-23867374: Add Tableau Knowledge MCP tools
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.
1 parent 1fa07e7 commit 1579701

52 files changed

Lines changed: 4446 additions & 7 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/docs/hosted-tableau-mcp/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ See [Popular Client Integrations](./client-integrations.md) for step-by-step ins
3737
"settings": [
3838
{
3939
"key": "EXCLUDE_TOOLS",
40-
"value": "admin-insights,authoring,content,content-exploration,datasource,flow,insights,jobs,mcp-apps,project,pulse,tasks,token-management,users,view,workbook"
40+
"value": "admin-insights,authoring,content,content-exploration,datasource,flow,insights,jobs,knowledge,mcp-apps,project,pulse,tasks,token-management,users,view,workbook"
4141
}
4242
]
4343
}
@@ -49,7 +49,7 @@ See [Popular Client Integrations](./client-integrations.md) for step-by-step ins
4949
<mcpSiteSettings>
5050
<settings>
5151
<key>EXCLUDE_TOOLS</key>
52-
<value>admin-insights,authoring,content,content-exploration,datasource,flow,insights,jobs,mcp-apps,project,pulse,tasks,token-management,users,view,workbook</value>
52+
<value>admin-insights,authoring,content,content-exploration,datasource,flow,insights,jobs,knowledge,mcp-apps,project,pulse,tasks,token-management,users,view,workbook</value>
5353
</settings>
5454
</mcpSiteSettings>
5555
</tsRequest>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"label": "Knowledge",
3+
"position": 12,
4+
"link": {
5+
"type": "generated-index",
6+
"description": "Tools for discovering, traversing, and adding governed context to Tableau Knowledge graphs."
7+
}
8+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
sidebar_position: 8
3+
---
4+
5+
# Create Semantic Statements
6+
7+
Creates a semantic context containing business rules for an explicit Tableau Knowledge graph.
8+
9+
:::warning[Private Prototype]
10+
11+
This tool mutates the graph directly without a preview or confirmation step. Tableau Knowledge must
12+
be available for the site, and the `knowledge-write-tools` feature flag must be enabled.
13+
14+
:::
15+
16+
## Arguments
17+
18+
| Parameter | Type | Required | Description |
19+
| -------------- | ------ | ----------- | --------------------------------------------------------------------------- |
20+
| `graphId` | string | Yes | Knowledge graph ID from configuration or a prior workflow. |
21+
| `statements` | array | Yes | One or more statements. Each is trimmed and must contain 5–1000 characters. |
22+
| `targetNodeId` | string | Conditional | Attach to exactly one node. Mutually exclusive with `isGlobal`. |
23+
| `isGlobal` | `true` | Conditional | Apply graph-wide. Mutually exclusive with `targetNodeId`. |
24+
| `name` | string | No | Optional display name. |
25+
26+
The tool requires `tableau:mcp:knowledge:write` and `tableau:knowledge:write`.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
sidebar_position: 6
3+
---
4+
5+
# Get Knowledge Lineage
6+
7+
Returns dependency and lineage nodes and edges for one exact node in an explicit Tableau Knowledge
8+
graph. A missing node is a successful empty result.
9+
10+
## Arguments
11+
12+
| Parameter | Type | Required | Description |
13+
| --------- | ---------------- | -------- | ------------------- |
14+
| `graphId` | string | Yes | Knowledge graph ID. |
15+
| `nodeId` | non-empty string | Yes | Exact node ID. |
16+
17+
The tool returns at most 100 nodes and 100 edges, further constrained by configured result limits,
18+
and includes returned/original counts in `mcp.resultInfo`. It is read-only and requires
19+
`tableau:mcp:knowledge:read` and `tableau:knowledge:read`.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
sidebar_position: 7
3+
---
4+
5+
# Get Knowledge Node Impact
6+
7+
Returns assets transitively affected by a change to one node. A missing node is reported as a normal
8+
backend error.
9+
10+
## Arguments
11+
12+
| Parameter | Type | Required | Description |
13+
| --------- | ---------------- | -------- | ------------------- |
14+
| `graphId` | string | Yes | Knowledge graph ID. |
15+
| `nodeId` | non-empty string | Yes | Exact node ID. |
16+
17+
The tool returns at most 100 affected assets, further constrained by configured result limits, and
18+
includes returned/original counts in `mcp.resultInfo`. It is read-only and requires
19+
`tableau:mcp:knowledge:read` and `tableau:knowledge:read`.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
sidebar_position: 5
3+
---
4+
5+
# Get Knowledge Node Relationships
6+
7+
Returns relationships around one node in an explicit Tableau Knowledge graph. Anchor the request
8+
with at least one of an exact `nodeId` or a natural-language `query`. When both are supplied,
9+
`nodeId` takes precedence and `query` acts as fallback context.
10+
11+
## Arguments
12+
13+
| Parameter | Type | Required | Description |
14+
| ----------- | ----------------------- | ----------- | ------------------------------------------------------ |
15+
| `graphId` | string | Yes | Knowledge graph ID. |
16+
| `nodeId` | non-empty string | Conditional | Exact anchor node ID. At least one anchor is required. |
17+
| `query` | non-empty string | Conditional | Natural-language query used to resolve an anchor. |
18+
| `edgeType` | string | No | Restrict results to one relationship type. |
19+
| `direction` | `outgoing` / `incoming` | No | Restrict results relative to the anchor. |
20+
| `limit` | integer, 1–100 | No | Maximum relationships returned to the model. |
21+
22+
The response includes `mcp.resultInfo` with truncation and returned/original counts. The tool is
23+
read-only and requires `tableau:mcp:knowledge:read` and `tableau:knowledge:read`.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
sidebar_position: 4
3+
---
4+
5+
# Get Knowledge Node
6+
7+
Resolves a natural-language query to one full knowledge node with its match score. When a match is
8+
ambiguous, the response instead contains sparse ranked candidates for disambiguation.
9+
10+
Supply an explicit `graphId` from Tableau Knowledge configuration or a prior workflow; this tool
11+
does not discover graphs. The tool requires Tableau Knowledge on Tableau Cloud.
12+
13+
## Arguments
14+
15+
| Parameter | Type | Required | Description |
16+
| --------------- | ---------------- | -------- | ---------------------------------------------------------- |
17+
| `graphId` | string | Yes | Knowledge graph ID. |
18+
| `query` | non-empty string | Yes | Natural-language description of the node to resolve. |
19+
| `nodeType` | string | No | Restrict candidates to one knowledge node type. |
20+
| `scopeId` | string | No | Restrict candidates to one source/container subtree. |
21+
| `maxCandidates` | integer, 1–25 | No | Maximum candidates returned when disambiguation is needed. |
22+
23+
The tool is read-only and requires `tableau:mcp:knowledge:read` and `tableau:knowledge:read`.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
sidebar_position: 1
3+
---
4+
5+
# Get Knowledge Suggestions
6+
7+
Returns the full health report and improvement suggestions for a Tableau knowledge graph.
8+
9+
:::info[Tableau Cloud Only]
10+
11+
This tool requires Tableau Knowledge to be available for the site. Supply a graph ID from Tableau
12+
Knowledge configuration or a prior workflow; the tool does not discover graphs.
13+
14+
:::
15+
16+
## Arguments
17+
18+
| Parameter | Type | Required | Description |
19+
| ---------- | -------------------------- | -------- | --------------------------------------------------------- |
20+
| `graphId` | string | Yes | Knowledge graph ID. |
21+
| `pdsId` | string | No | Scope the report to one PDS subtree. |
22+
| `severity` | `high`, `medium`, or `low` | No | Filter suggestion lists by severity. |
23+
| `type` | string | No | Filter suggestion lists by suggestion type. |
24+
| `limit` | positive integer | No | Truncate the top suggestions (default 100, maximum 1000). |
25+
26+
The tool is read-only and requires the `tableau:mcp:knowledge:read` MCP scope and
27+
`tableau:knowledge:read` Tableau API scope. An empty `suggestions` array is a successful health
28+
report.
29+
30+
The configured `MAX_RESULT_LIMIT` or `MAX_RESULT_LIMITS` value can further restrict `limit`. The
31+
health score, statistics, metrics, and summary still describe the full graph when suggestion lists
32+
are truncated.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
sidebar_position: 9
3+
---
4+
5+
# List Semantic Statements
6+
7+
Lists semantic statements from an explicit Tableau Knowledge graph.
8+
9+
## Arguments
10+
11+
| Parameter | Type | Required | Description |
12+
| ---------- | ------- | -------- | ------------------------------------------------------------------- |
13+
| `graphId` | string | Yes | Knowledge graph ID from configuration or a prior workflow. |
14+
| `nodeId` | string | No | Return statements attached to this node plus all global statements. |
15+
| `isGlobal` | boolean | No | Filter a graph-wide list. Cannot be combined with `nodeId`. |
16+
17+
The backend currently ignores its `query`, `kind`, and `limit` search fields, so this tool does not
18+
expose them. Results are capped at 100 or the configured MCP result limit. The response includes
19+
`mcp.resultInfo` with `returnedCount`, `totalAvailable`, and `truncated` so callers can detect an
20+
incomplete list.
21+
22+
The tool is read-only and requires `tableau:mcp:knowledge:read` and `tableau:knowledge:read`.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
sidebar_position: 2
3+
---
4+
5+
# List Knowledge Sources
6+
7+
Lists published data sources and workbooks in a Tableau knowledge graph. Use it to browse available
8+
sources and obtain TK graph node IDs for later knowledge workflows.
9+
10+
:::info[Tableau Cloud Only]
11+
12+
This tool requires Tableau Knowledge to be available for the site. Supply a graph ID from Tableau
13+
Knowledge configuration or a prior workflow; the tool does not discover graphs.
14+
15+
:::
16+
17+
## Arguments
18+
19+
| Parameter | Type | Required | Description |
20+
| ---------- | ------------------- | -------- | --------------------------------------------------- |
21+
| `graphId` | string | Yes | Knowledge graph ID. |
22+
| `nodeType` | `PDS` or `WORKBOOK` | No | Filter the returned sources by knowledge node type. |
23+
| `limit` | integer, 1–100 | No | Maximum sources returned. |
24+
25+
The response contains `sources` plus `mcp.resultInfo` completeness metadata. Results are capped at
26+
100 and can be lowered by server configuration. Each source contains:
27+
28+
| Field | Type | Description |
29+
| ---------------- | ------------------------- | --------------------------------------------------- |
30+
| `id` | string | TK graph node ID for other knowledge tools. |
31+
| `type` | `PDS` or `WORKBOOK` | Knowledge node type. |
32+
| `name` | string | Source name. |
33+
| `properties` | object | Source-specific properties. |
34+
| `last_synced_at` | string, `null`, or absent | Last synchronization timestamp when TK provides it. |
35+
36+
Additional backend metadata, such as a runtime synchronization status, is preserved when present but
37+
is not guaranteed by the API contract.
38+
39+
The tool is read-only and requires the `tableau:mcp:knowledge:read` MCP scope and
40+
`tableau:knowledge:read` Tableau API scope. An empty `sources` array is a successful response. The
41+
backend does not provide pagination or graph discovery.
42+
43+
The top-level `id` is not necessarily a Tableau content LUID. For Tableau REST or other content
44+
tools, use `properties.luid` when the source provides it.

0 commit comments

Comments
 (0)