Skip to main content
Glama
andyyaro

Tableau Public Authoring MCP

by andyyaro

Tableau Public Authoring MCP

선언적 스펙에서 Tableau 워크북을 작성하고, 설치된 Tableau Public 애플리케이션에서 열어 검증하며, Tableau 자체의 보이는 데스크톱 워크플로를 통해 게시하는 MCP 서버입니다.

이미 게시된 콘텐츠를 검사하는 기존 reader MCP (tableau-public)의 대응물입니다. reader는 아무것도 만들거나 게시할 수 없습니다. 이 서버는 공개 프로필을 탐색할 수 없습니다. 둘 다 설치해 두세요.


생성 결과물

아래의 모든 스크린샷은 이 서버가 JSON 스펙에서 생성한 워크북을 Tableau Public 2026.2.0에서 열어 촬영한 것입니다. 손으로 작성된 것은 없으며, 스크린샷을 찍기 전에 Tableau에서 건드린 것도 없습니다. 데이터는 tests/fixtures/data/에 있는 합성 12행 픽스처입니다.

대시보드 - 하나의 컨테이너에 타일로 배치된 두 개의 생성된 워크시트, 고정 1200×800 캔버스, 렌더링된 제목:

생성된 대시보드: 막대 차트와 심볼 맵이 나란히 표시됨

심볼 맵 - 열 이름에서 감지된 latitude/longitude가 Tableau의 [Geographical] 의미 역할로 태그되어, 마크 뒤에 실제 배경 지도를 배치합니다. 사이트당 하나의 마크이며, 차원으로 색상이 지정되고 측정값으로 크기가 지정됩니다:

생성된 심볼 맵: 배경 지도와 12개의 마크

막대 차트 - 차원별 색상, 그려진 마크 레이블, 적용된 캔버스 맞춤:

생성된 막대 차트: 색상이 지정된 막대와 값 레이블

지도 뒤에 있는 스펙이 전체 입력입니다:

{
  "name": "Site Map",
  "template": "map",
  "data_source": "sites",
  "detail": ["Site Name"],
  "color": "Status",
  "size": { "field": "Annual Sessions", "aggregation": "Sum" },
  "title": "Candidate sites"
}

Related MCP server: mcp-tableau

기능

Reader MCP (tableau-public)

이 서버 (tableau-public-authoring)

공개 프로필 검색 / 검사

.twbx 다운로드 및 압축 해제

검사 전용

워크북 생성

Tableau Public에서 열기

계정에 게시

✅ (보이는 UI)

검증된 기능

아래의 모든 내용은 XML을 생성하는 것에 그치지 않고, 워크북을 생성하여 macOS의 Tableau Public 2026.2.0에서 여는 것으로 확인되었습니다.

지원됨

  • CSV 데이터 소스, 자동으로 .hyper 추출로 구체화

  • 필드 유형 추론: string, integer, real, boolean, date, datetime

  • 워크시트 템플릿: bar, line, text_table, heatmap, scatter, circle, map (일곱 개 모두 Tableau Public 2026.2.0에서 스크린샷으로 검증되었으며, tests/live/test_render_templates.py가 모든 라이브 실행에서 다시 확인합니다)

  • 지리적 역할: 이름으로 감지된 latitude/longitude 열. 이것이 map 템플릿 뒤에 실제 배경 지도를 배치합니다

  • 대시보드: 제목, 고정 또는 자동 캔버스, 하나의 컨테이너에 타일로 배치된 워크시트

  • 계산된 필드 (Tableau 수식 구문)

  • 범주형 필터, 대화형 필터 카드로 렌더링

  • 인코딩: color, size, label, tooltip 및 detail - detail은 세부 수준을 높이므로 산점도는 색상 값당 하나가 아니라 사이트당 하나의 마크를 그립니다

  • 캔버스 맞춤: standard, fit_width, fit_height, entire_view

  • 워크시트 제목 및 부제목

  • .twbx 패키징, 내부에 바이트 결정적인 .twb 포함

v0.1에서 지원되지 않음 - docs/architecture/CAPABILITY_BOUNDARY.md 참조

  • 스토리, 매개변수, LOD 표현식, 조인/사용자 지정 SQL, 라이브 연결

  • 집합, 그룹, 계층 구조, 테이블 계산, 참조선

  • 채워진/코로플레스 맵, 사용자 지정 영역, 맵 레이어, 공간 파일

  • 대시보드 필터 카드, 범례, 작업, 플로팅 영역, 기기 레이아웃

주의 깊게 읽어야 할 두 가지 주장

  • .twbx는 바이트 단위로 재현되지 않습니다. 내부의 .twb는 그렇습니다. 동일한 스펙이면 동일한 바이트입니다. 아카이브는 그렇지 않은데, 포함된 .hyper가 Tableau의 Hyper 엔진에 의해 작성되며 비결정적 내부 상태를 지니기 때문입니다. 패키지 다이제스트가 아니라 .twb를 diff하세요. docs/LIMITATIONS.md §1 참조.

  • 독립형 .twb는 데이터 디렉터리와 함께 있을 때만 사용할 수 있습니다. output.package_twbx: false는 각 소스의 .hyper와 CSV를 담은 <name>.data/ 디렉터리 <name>.twb를 작성하며, .twb는 자신을 기준으로 데이터를 해석합니다. 따라서 둘을 함께 두거나 함께 이동하세요. 패키지 빌드는 아카이브 내부와 동일한 레이아웃을 Data/ 아래에 생성합니다. 경로는 선호가 아니라 필요에 따라 항상 상대적입니다. 절대 경로는 홈 디렉터리를 포함하게 되며, build_workbook은 기기 식별 데이터를 내보내는 것을 거부합니다 (docs/architecture/THREAT_MODEL.md, T6 참조).

모든 것을 결정짓는 두 가지 제약

  1. Tableau Public에는 게시 API가 없습니다. REST API는 Server/Cloud만 다루므로 게시는 실제 UI를 통해 이루어집니다. Tableau는 이 명령을 Server > Tableau Public > Save to Tableau Public으로 문서화하지만, 이는 Desktop Professional 경로입니다. Public 에디션 (2026.2.0)에서 Server 메뉴에는 Run Optimizer...만 있으며 명령은 File 메뉴에 있습니다. 실제 Command+Shift+S 키 이벤트로 호출되며 File 메뉴가 대체 수단입니다 - docs/PUBLISHING_WORKFLOW.md 참조.

  2. Tableau Public은 비추출 데이터 소스를 거부합니다 (Error Code: 3C242D89). 따라서 모든 CSV는 빌드 시점에 Hyper 추출로 변환됩니다.

설치

uv tool install git+https://github.com/andyyaro/tableau-public-authoring-mcp
tableau-public-authoring doctor

클론도, virtualenv도, 편집할 경로도 없습니다. doctor는 서버에 필요한 모든 것을 확인하고 정확히 무엇을 고쳐야 하는지 출력합니다. 등록 전에 실행하세요. 아래의 모든 전제 조건은 런타임에서 예외를 발생시키는 대신 조용히 실패하기 때문입니다:

  [PASS] platform          macOS
  [PASS] python            3.13.14 at ~/.local/share/uv/tools/…/bin/python
  [PASS] mcp sdk           importable
  [PASS] tableauhyperapi   importable
  [PASS] quartz (pyobjc)   importable
  [PASS] tableau public    2026.2.0 at /Applications/Tableau Public.app
  [PASS] accessibility     granted to this process
  [PASS] screen recording  capture succeeded

누락 항목

실제로 보게 될 증상

Quartz

Tableau에 열린 창이 없는 것처럼 보임; 게시 시 "no document window matching …" 발생

Screen Recording

검증 스크린샷이 오류 없이 빈 채로 반환됨

Accessibility

키 입력과 클릭이 아무 데도 전달되지 않음

tableauhyperapi

워크북을 전혀 빌드할 수 없음

macOS 권한은 실행 파일별로 부여되므로 doctor가 출력하는 인터프리터에 권한을 부여하세요. Tableau가 아니라, 다른 터미널을 등록하는 경우 그 터미널도 아닙니다. 자세한 내용은 docs/MACOS_PERMISSIONS.md에 있습니다.

요구 사항: Tableau Public이 설치된 macOS (2026.2.0, Apple silicon 기준으로 개발됨), Python ≥ 3.10, uv.

Claude Code에 등록

claude mcp add --transport stdio --scope user tableau-public-authoring \
  -- tableau-public-authoring

이것이 전체 명령입니다. uv tool install은 실행 파일을 안정적인 위치의 PATH에 두므로 대체할 절대 경로가 없고 업그레이드 후에도 유지됩니다. 등록은 다른 MCP 서버에 영향을 주지 않습니다. claude mcp list로 확인하세요. 도구가 나타나기 전에 Claude Code를 다시 시작하세요.

git clone https://github.com/andyyaro/tableau-public-authoring-mcp
cd tableau-public-authoring-mcp
uv venv && uv sync && uv pip install -e .
uv run tableau-public-authoring doctor

해당 빌드를 인터프리터를 명시적으로 지정하여 등록하세요:

claude mcp add --transport stdio --scope user tableau-public-authoring \
  -- /absolute/path/to/.venv/bin/python -m tableau_public_authoring.server

등록된 서버에는 uvx --from …을 피하세요. 이는 종속성이 변경될 때마다 바뀌는 콘텐츠 해시 캐시 경로에서 실행되며, macOS 권한 부여가 해당 경로에 묶여 있기 때문에 다음 업그레이드에서 서버가 조용히 Accessibility와 Screen Recording 권한을 잃게 됩니다. uvx --from … tableau-public-authoring doctor 같은 일회성 사용에는 괜찮습니다.

업그레이드

uv tool upgrade tableau-public-authoring
tableau-public-authoring doctor

워크북 빌드

{
  "spec_version": "0.1",
  "workbook": { "name": "EV Charging Readiness", "description": "Generated" },
  "data_sources": [{ "id": "sites", "type": "csv", "path": "/abs/path/sites.csv" }],
  "calculated_fields": [{
    "name": "Readiness Band", "data_source": "sites", "datatype": "string",
    "formula": "IF [Readiness Score] >= 70 THEN \"High\" ELSE \"Low\" END"
  }],
  "worksheets": [{
    "name": "Readiness by Site", "template": "bar", "data_source": "sites",
    "rows": ["Site Name"],
    "columns": [{ "field": "Readiness Score", "aggregation": "Sum" }],
    "color": "Readiness Band",
    "filters": ["Status"],
    "title": "EV Charging Readiness by Site"
  }],
  "output": { "directory": "/abs/path/output", "package_twbx": true }
}

경로는 절대 경로 대신 단일 base_dir에 상대적일 수 있습니다. 상대 경로는 해당 디렉터리로 제한되지만 절대 경로는 그렇지 않습니다. docs/AUTHORING_SPEC.md 참조.

그런 다음: validate_workbook_spec (드라이 런) → build_workbookvalidate_in_tableau_publicpublish_to_tableau_public.

전체 스키마: schemas/workbook-spec-v0.1.jsondocs/AUTHORING_SPEC.md.

이런 구조가 된 이유

이 코드베이스의 구조 대부분은 Tableau가 실제로 한 행동에 대한 대응입니다. docs/LIMITATIONS.md는 제약 사항을 나열하고, docs/history/CHANGE_HISTORY.md는 릴리스 기록을 보관하며, 각 수정이 대응한 실패와 무엇이 수정되었는지 입증했는지를 기록합니다. docs/fixtures/는 컴파일러가 리버스 엔지니어링한 실제 게시 워크북의 포렌식 분석을 담고 있습니다.

게시

publish_to_tableau_public은 파괴적(destructive)으로 표시되어 있으며 confirm_publish: trueprofile (사용자의 Tableau Public 프로필 이름)을 모두 요구합니다. overwrite는 기본값이 false입니다. profile이 필요한 이유는 그것 없이는 서버가 해당 이름의 워크북이 이미 게시되어 있는지 확인할 수 없고, Tableau Public은 같은 이름의 워크북을 버전 기록 없이 되돌릴 수 없게 교체하기 때문입니다.

이 도구는 보이는 명령을 구동하며 자격 증명을 읽거나, 입력하거나, 저장하지 않습니다. 이미 로그인된 데스크톱 세션을 사용합니다. Tableau가 로그인을 요구하면 도구는 중단되고 수동으로 로그인하라고 안내합니다. 게시는 되돌릴 수 없으며 전 세계에 공개됩니다.

dry_run: true를 사용하면 먼저 정확히 어떤 일이 일어날지 확인할 수 있습니다.

테스트

uv run pytest                    # unit + integration (no Tableau needed)
uv run pytest -m live            # requires Tableau Public installed
uv run ruff check . && uv run ruff format --check .

livepublish 테스트는 일반 실행에서 제외되며 CI에서 절대 실행되어서는 안 됩니다.

보안

어디에도 자격 증명이 저장되지 않습니다. XML은 ElementTree를 통해 생성되며 (절대 문자열 연결이 아님), 아카이브는 ZIP-slip으로 보호되고, 경로는 트래버설 검사를 거치며, 생성된 워크북은 패키징 전에 기기 식별 데이터가 있는지 스캔됩니다. docs/SECURITY.mddocs/architecture/THREAT_MODEL.md 참조.

롤백

claude mcp remove --scope user tableau-public-authoring

이렇게 해도 다른 모든 MCP 서버는 영향을 받지 않습니다.

제거

claude mcp remove tableau-public-authoring -s user
claude mcp list          # your other servers should still be listed
rm -rf <this repo>/output   # generated workbooks are inert local files

이미 게시된 항목은 브라우저에서 사용자의 Tableau Public 프로필에서 직접 삭제해야 합니다. 이 서버는 설계상 삭제 기능이 없습니다. 게시는 서버 측에서 되돌릴 수 없기 때문에 confirm_publish를 요구하고 overwrite를 전달하지 않는 한 이름 충돌을 거부합니다.

라이선스

MIT - LICENSE 참조.

Available Tools

10 tools
build_workbookA

PRIMARY TOOL. Compile a specification into a .twb and packaged .twbx with Hyper extracts (required by Tableau Public). Writes files to the spec's output.directory. The .twb is byte-deterministic for an identical spec; the .twbx digest is not, because the embedded Hyper extract carries non-deterministic state.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYesDeclarative description of a Tableau workbook to generate. Unknown properties are rejected everywhere. Generated from tableau_public_authoring.models.spec.spec_json_schema(); edit that function, never this file. Structural validation only - the server additionally checks cross-references, field existence and encoding compatibility, so a valid document here can still be rejected.
overwriteNoReplace files in the output directory that this server did not generate. Rebuilding the same workbook does not require it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden. It discloses that files are written to the spec's output directory and notes the determinism of .twb versus .twbx. However, it lacks details on authorization, overwrite behavior, error conditions, or prerequisites beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with 'PRIMARY TOOL', and every sentence provides essential information (purpose, output location, determinism). No superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the input schema and the absence of an output schema and annotations, the description is minimal. It does not explain return values, error handling, the build process, or prerequisites, leaving the agent with potential gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed descriptions for both parameters (spec and overwrite) and all nested properties. The tool description does not add additional meaning beyond what the schema already provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is the 'PRIMARY TOOL' and specifies the action 'Compile a specification into .twb and .twbx with Hyper extracts'. It distinguishes itself from sibling tools like validation, inspection, and publishing by its primary build role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description labels the tool as 'PRIMARY' but does not provide explicit guidance on when to use it versus alternatives like validate_workbook_spec or inspect_local_workbook. No when-not-to or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_authoring_capabilitiesA

Report what this server can and cannot author, the detected Tableau Public installation, and the macOS permission state. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Read-only behavior is mentioned, which is transparent given no annotations. However, the description does not elaborate on potential nuances like data freshness or permission requirements, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no fluff, front-loaded with purpose. Every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple info tool, but lacks details on output format or the meaning of 'capabilities'. Given no output schema, more detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has zero parameters with 100% coverage, so description adds value by explaining the output categories. Baseline of 4 is appropriate as it compensates for lack of output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool reports three specific categories: authoring capabilities, Tableau Public installation, and macOS permission state. Verb 'report' and resource are specific and distinct from sibling tools which focus on workbook operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like 'get_tableau_public_app_status'. The read-only nature is noted but not contextualized relative to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tableau_public_app_statusA

Report Tableau Public installation, version, running state, open windows and Accessibility permission. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility. It explicitly states 'Read-only' and enumerates five specific aspects reported. It does not discuss prerequisites or error conditions, but for a status tool, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with front-loaded content. Every word adds value: 'Report', the list of items, and 'Read-only'. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists the reported items without specifying return format. This is adequate for an agent to understand what will be provided. Slightly incomplete as it doesn't mention failure modes or format, but acceptable for a status tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100% trivially. The description does not need to add parameter info. According to calibration, 0 parameters merits a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'report' and specific resources: installation, version, running state, open windows, and Accessibility permission. It distinguishes from siblings by focusing on status information rather than authoring or publishing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes 'Read-only' which implies safe usage without side effects. While it does not explicitly list when to use vs alternatives, the context is clear among sibling tools. Slightly lacking explicit when-not or alternative references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_local_workbookA

Safely inspect a local .twbx archive's contents. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute .twbx path

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description states safety and read-only nature but omits exactly what 'contents' means (e.g., file list vs metadata) and error behavior. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the purpose and behavior, with zero waste. Ideal conciseness for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description does not explain the return format or data. For a read-only inspection tool, the output is a critical missing piece.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with clear description ('Absolute .twbx path'). The tool description adds no extra parameter meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource (local .twbx archive) and action (inspect contents), with 'Read-only' distinguishing it from mutation tools like build_workbook or publish_to_tableau_public.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Safely inspect' and 'Read-only' imply usage for examining archives without modification. No explicit alternatives or exclusions, but the context from siblings makes the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_workbook_templatesA

List supported worksheet templates and their required shelves. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Only states 'Read-only' as behavioral info. No annotations exist, so description should disclose more (e.g., if requires auth, any side effects). Minimal for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no waste. Essential info is front-loaded. Efficient for a simple list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Describes output sufficiently for a parameterless list tool. Lacks mention of how output can be used with sibling tools (e.g., building a workbook), but given simplicity, adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, so schema coverage is 100%. Description adds context about return values (required shelves), which enhances understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States exact action (list) and resource (supported worksheet templates) with output details (required shelves). Clearly distinguishes from sibling tools that validate, build, or publish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use or alternatives. With siblings like get_authoring_capabilities and validate_workbook_spec, the description provides no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_in_tableau_publicA

Open a generated workbook in Tableau Public and wait for its window. Returns the load error verbatim if Tableau rejects the file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute .twb or .twbx path
timeout_sNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description does well to disclose key behaviors: it waits for the window and returns error verbatim. However, it does not explicitly state whether the tool modifies the workbook or the Tableau environment, though 'open' implies read-only. The waiting behavior is clearly mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the main action and immediately provides additional context about waiting and error handling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters and no output schema, the description covers the essential behavior: opening a workbook, waiting for the window, and returning errors. It is slightly ambiguous about what happens on success (presumably returns nothing or success indicator), but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no additional meaning to the parameters beyond what the input schema provides. The path parameter is already described as 'Absolute .twb or .twbx path' in the schema, and timeout_s has default/min/max bounds. The description's mention of 'Open a generated workbook' implicitly references the path but does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('open'), the resource ('generated workbook in Tableau Public'), and the specific behavior ('wait for its window', 'returns load error verbatim'). It distinguishes from sibling tools like 'publish_to_tableau_public' or 'validate_in_tableau_public' by focusing on opening and waiting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for opening a generated workbook, but lacks explicit guidance on when to use it versus alternatives like 'validate_in_tableau_public' or 'publish_to_tableau_public'. No when-not or exclusions provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_to_tableau_publicA

DESTRUCTIVE / PUBLIC. Publish an open workbook to the user's Tableau Public account through the visible Server > Tableau Public > Save to Tableau Public workflow. Publication is irreversible and world-visible. Requires confirm_publish=true. Never reads credentials; pauses for manual sign-in if required.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoReport what would happen without publishing.
profileYesYour Tableau Public profile name. Required to resolve and verify the resulting public URL after publication.
overwriteNoAllow overwriting an existing workbook of the same name.
set_titleNoType public_name into the dialog's Workbook Title field. If false, Tableau's pre-filled title (from the file name) is kept.
public_nameYesName for the published workbook (must be unique)
workbook_pathNoAbsolute path to the .twbx being published. Optional but recommended: it lets a minimized workbook be raised reliably with `open -a` instead of a coordinate click.
screenshot_dirNo
confirm_publishYesMust be true. Guards against accidental publication.
workbook_windowYesThe open workbook's exact name (its window title without the 'Tableau Public - ' prefix). Matched exactly, not as a substring, because publishing is irreversible: a substring match would let 'Q3_Sales' publish 'Q3_Sales_Draft'.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It explicitly labels the action as 'DESTRUCTIVE / PUBLIC,' states 'Publication is irreversible and world-visible,' highlights the guard (confirm_publish=true), and discloses manual sign-in behavior. This is comprehensive, though it could mention error handling or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first focuses on purpose and danger, the second on key details (irreversibility, guard, credential handling). No waste, front-loaded with the most critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 9-parameter tool with no output schema, the description covers the essential aspects: irreversible publication, required guard, credential handling, and exact window name matching. It could mention return behavior or failure scenarios, but it is sufficiently complete for safe usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 89%, so the schema already documents most parameters. The description adds little beyond what's in the schema (e.g., reiterates confirm_publish must be true and workbook_window exact matching). Baseline 3 is appropriate as it does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'DESTRUCTIVE / PUBLIC. Publish an open workbook to the user's Tableau Public account...' and clearly distinguishes the tool from siblings like validate_workbook_spec or verify_published_workbook. The verb 'Publish' and resource 'open workbook to Tableau Public' are precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states 'Requires confirm_publish=true' and 'Never reads credentials; pauses for manual sign-in if required,' providing clear usage context. However, it does not explicitly state when not to use the tool or suggest alternatives among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_in_tableau_publicC

Layer 3+4 validation: open the workbook in Tableau Public, detect error dialogs, and capture a screenshot proving rendered content.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
settle_sNo
screenshot_dirNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It states it opens the workbook and detects error dialogs, but fails to disclose behavioral aspects such as whether the tool modifies the workbook, whether it requires user interaction, how long it takes, or what happens to the screenshot after capture. The lack of side-effect clarity (e.g., destructive hint) is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the main purpose. However, it sacrifices necessary detail for brevity, leaving parameter semantics and usage unspecified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, no output schema, and no annotations, the description is incomplete. It does not explain 'Layer 3+4', what constitutes an error dialog, or how the screenshot is returned. The agent would need external context to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the three parameters (path, settle_s, screenshot_dir). The term 'settle_s' is ambiguous (likely a delay), and 'screenshot_dir' is not described. Without any clarification, the agent cannot correctly provide values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific purpose: 'Layer 3+4 validation: open the workbook in Tableau Public, detect error dialogs, and capture a screenshot proving rendered content.' It uses a specific verb (validate) and resource (workbook in Tableau Public), and distinguishes from related siblings like 'open_in_tableau_public' and 'verify_published_workbook' by defining its unique validation layer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, when not to use it, or how it differs from sibling validation tools like 'validate_workbook_spec' or 'verify_published_workbook'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_workbook_specA

Validate an authoring specification without writing any files (dry run). Returns actionable errors. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYesDeclarative description of a Tableau workbook to generate. Unknown properties are rejected everywhere. Generated from tableau_public_authoring.models.spec.spec_json_schema(); edit that function, never this file. Structural validation only - the server additionally checks cross-references, field existence and encoding compatibility, so a valid document here can still be rejected.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and discloses key behaviors: no files written (dry run) and read-only. It also mentions returning actionable errors. This is sufficient for a validation tool, though it omits details on rate limits or performance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. First sentence states the verb and resource; second adds key behavioral traits. Ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool, but lacks detail on output format of 'actionable errors' and prerequisites (e.g., valid JSON schema). Could be more complete given the complex spec parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with embedded descriptions for the single parameter 'spec'. The tool description adds only the dry-run context, not parameter-specific meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates an authoring specification as a dry run, being read-only. It distinguishes from the build tool but does not explicitly differentiate from the sibling 'validate_in_tableau_public', which may also validate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use as a pre-build check (dry run) but provides no explicit guidance on when to use this versus alternatives like 'validate_in_tableau_public' or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_published_workbookB

Layer 5 validation: load a public Tableau URL and confirm it responds. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

States it is read-only, which is crucial for safety. However, with no annotations provided, the description should disclose more behavioral traits such as error handling, timeout behavior, or what constitutes a successful response. The current description is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using a single sentence. It is front-loaded with 'Layer 5 validation', which may be jargon, but overall the structure is efficient. Could be slightly improved by moving the important 'read-only' claim earlier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description covers the basic action but lacks completeness. It does not explain what 'confirms it responds' means (e.g., HTTP status 200) nor how the output signals success or failure. Also fails to differentiate from siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'url' receives minimal additional meaning: it is described as a 'public Tableau URL'. With 0% schema description coverage, this is insufficient. The description should specify expected format (e.g., must start with 'https://public.tableau.com'), but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool loads a public Tableau URL and confirms a response. It identifies the resource (public Tableau URL) and action (verify). However, it does not explicitly differentiate from sibling tools like validate_in_tableau_public, which may perform similar checks, and the jargon 'Layer 5 validation' is not explained.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for verifying a published workbook is accessible, but provides no guidance on when to use this tool over alternatives (e.g., validate_in_tableau_public). No exclusions or prerequisites are mentioned, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.0
    • First observedbuild_workbook
    • First observedget_authoring_capabilities
    • First observedget_tableau_public_app_status
    • First observedinspect_local_workbook
    • First observedlist_workbook_templates
    • First observedopen_in_tableau_public
    • First observedpublish_to_tableau_public
    • First observedvalidate_in_tableau_public
    • First observedvalidate_workbook_spec
    • First observedverify_published_workbook

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: capabilities, templates, validation, building, inspection, app status, opening, in-app validation, publishing, and verification. No two tools overlap in function, and descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_authoring_capabilities, build_workbook, publish_to_tableau_public). No mixing of conventions, and verbs clearly indicate the action.

Tool Count5/5

Ten tools is well-scoped for the domain of authoring and publishing Tableau Public workbooks. Each tool serves a necessary step in the workflow, from capability reporting to verification.

Completeness5/5

The tool set covers the full authoring and publishing lifecycle: capabilities, templates, dry-run validation, building, local inspection, app status, opening, in-app validation, publishing, and web verification. No obvious gaps for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables discovery, querying, and exporting of Tableau Cloud dashboards and data sources. Supports searching workbooks, filtering data, and exporting views as PDF, PNG, PowerPoint, CSV, or JSON.
    -
  • F
    license
    A
    quality
    B
    maintenance
    MCP server that automates the publishing and validation of Tableau workbooks and data sources on Tableau Server or Tableau Cloud, enabling an AI agent to discover, build, validate, and publish content without human intervention.
    10
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Builds importable RUCKUS One Data Studio dashboards from a declarative spec, enabling users to create valid dashboards without learning Superset internals or guessing field names.
    2
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andyyaro/tableau-public-authoring-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server