mcpField
B
biztory-tableau-knowledge-mcp

biztory-tableau-knowledge-mcp

本地服务
github.com/biztory数据与分析01 周前更新

关于 biztory-tableau-knowledge-mcp

biztory-tableau-knowledge-mcp 将 Tableau Cloud Knowledge 图谱提供给 AI 助手,适用于探索 Tableau 元数据和业务背景的团队。它结合语义查询、图谱管理,以及 Apache Ossie 语义层导入和导出。

主要功能

  1. 01语义搜索与节点查询
  2. 02沿袭和影响分析
  3. 03图谱健康度与上下文管理
  4. 04管理图谱及其数据源
  5. 05导入和导出 Apache Ossie 模型
  6. 06校验 Business Preferences 文件

适用场景

  1. 01按业务含义查找字段
  2. 02变更前追踪仪表板依赖
  3. 03为图谱节点添加业务说明
  4. 04迁移数据源语义模型

MCP 相关

它提供 23 个 MCP 工具,用于查询、更新和管理 Tableau Knowledge 图谱,并支持 Apache Ossie 模型校验与转换。MCP 客户端可借此搜索图谱、分析沿袭、添加上下文和管理数据源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"biztory-biztory-tableau-knowledge": {
"command": "uvx",
"args": [
"biztory-tableau-knowledge-mcp"
],
"env": {
"TABLEAU_SERVER": "<TABLEAU_SERVER>",
"TABLEAU_SITE_CONTENT_URL": "<TABLEAU_SITE_CONTENT_URL>",
"TABLEAU_PAT_NAME": "<TABLEAU_PAT_NAME>",
"TABLEAU_PAT_SECRET": "<TABLEAU_PAT_SECRET>",
"TABLEAU_KNOWLEDGE_GRAPH_ID": "<TABLEAU_KNOWLEDGE_GRAPH_ID>",
"TABLEAU_LOG_LEVEL": "<TABLEAU_LOG_LEVEL>"
}
}
}
}
启动命令uvx biztory-tableau-knowledge-mcp
需要配置的环境变量
TABLEAU_SERVERhttps://<pod>.online.tableau.com (Tableau Knowledge is a Tableau Cloud feature)
TABLEAU_SITE_CONTENT_URLSite content-url slug (the part after /#/site/)
TABLEAU_PAT_NAMEPersonal Access Token name
TABLEAU_PAT_SECRET密钥Personal Access Token secret (the whole string)
TABLEAU_KNOWLEDGE_GRAPH_IDDefault graph id; empty = the site's primary graph
TABLEAU_LOG_LEVELDEBUG, INFO (default), WARNING or ERROR; DEBUG logs each HTTP call (method + URL) to stderr

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypibiztory-tableau-knowledge-mcp0.4.0

工具

17

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

Biztory 的 Tableau 知识

biztory-tableau-knowledge-mcp

让任何 AI 助手都能利用你的 Tableau 知识图谱。
按含义搜索、追踪数据沿袭和影响,并补充业务背景。

CI CodeQL Fuzz OpenSSF 最佳实践 OpenSSF 评分卡 Ruff PyPI Python 版本 兼容 MCP MIT 许可证 Tableau Cloud + Knowledge 精简依赖

mcprush 上的 Biztory Tableau Knowledge MCP 服务

添加到 Cursor 添加到 VS Code

与我们预约会议


biztory-tableau-knowledge-mcp 将你站点的 Tableau Knowledge Graph API 转换为 23 个 MCP 工具,让 AI 助手(Claude、Cursor、VS Code、Cline 等)可以用自然语言操作图谱:

  • “哪些字段表示收入?它们来自哪里?”
  • “如果 Superstore 数据源发生变化,会影响哪些工作簿和仪表板?”
  • “Profit 关联了哪些业务背景?添加:“Profit 扣除退货后计算,单位为 EUR。””
  • “我们的图谱健康状况如何?影响最大的五项修复措施是什么?”
  • “将 Superstore 导出为 Apache Ossie,以便我们将其迁移到 Snowflake。”
  • “为 P&L 仪表板编写 Business Preferences。”
  • “将此站点上的所有 Superstore 数据源添加到 Sales 图谱。”
  • “询问 Tableau 的 Agent 图谱中有多少个数据源,并核实它的回答。”

它提供 九个读取工具(语义搜索、节点查询、边查询、血缘关系、影响分析、数据源、语义上下文、图谱健康状况和连接探测),以及 四个用于语义上下文的写入工具。语义上下文是让人和 AI 都能有效使用图谱的业务陈述(其中一个工具可将文档转换为上下文)。还有五个工具用于管理图谱本身:添加和移除数据源与工作簿、创建和更新图谱,以及向 Tableau 自带的 Agent 提问来测试它的回答。这些工具通过 Tableau Knowledge Web 应用背后的 API 调用,而 Tableau 并未公开其文档。另外还有四个工具通过 Apache Ossie 迁移语义层(该标准前身为 Open Semantic Interchange,简称 OSI),Snowflake、dbt、Power BI、Databricks、Tableau Next 等产品都可与之进行格式转换。还有一个工具可逐行检查 Business Preferences 文件,对照 Agent 实际会看到的字段进行核验。

实际演示

Claude 使用 list_sources(site_search) 查找站点上的 13 个 Superstore 数据源,使用 add_sources 添加缺失的 12 个,并确认摄取已完成

Claude 询问 Tableau 的 Agent 图谱中有多少个数据源,然后使用 list_sources 核实回答:Agent 说有 11 个,但图谱中有 13 个

Claude 使用 create_semantic_context_from_document 上传 KPI 术语表文件;Tableau 会将每一行转换为适用于整个图谱的陈述

来自测试站点的真实工具结果回放,已移除站点专属名称。使用 docs/images/render_demo_gifs.py 重新生成。

与众不同之处
  • 按含义查询,而不是按 ID 查询。 每个读取工具都接受节点 ID 或 描述(“净销售额字段”)。描述通过图谱自身的语义搜索进行解析,回答会说明选中了哪个节点、匹配分数以及其他候选项,因此错误猜测会显现出来,而不会悄无声息地发生。
  • 提供答案,而不是载荷。 impact_analysis 按类型汇总并统计所有下游内容;lineage 会补充节点和边的计数;graph_health 会将数百条建议缩减至最重要的几条,同时保留所有总数。
  • 错误会告诉模型下一步该怎么做。 Tableau 的错误代码会转化为具体步骤(site_not_entitled → 管理员必须启用 Knowledge;no_active_graph → 传入 graph_id;没有嵌入器 → 使用精确 ID),并保留 trace_id 以便寻求支持。遇到速率限制时会根据 Retry-After 重试。
  • 值得信赖的写入。 只有语义上下文和图谱的数据源可以写入(后者通过 Tableau Knowledge 未公开的 Web 应用 API 实现,该 API 可能随时变更)。写入工具要求提供精确 ID(模糊匹配绝不会决定写入目标),会在发送前进行验证,并提供诚实的 MCP 注释,让客户端先征求确认;delete_semantic_context 会返回已删除的内容。
  • 迁移语义层。 export_to_ossie 会将已发布的数据源转换为经过验证的 Ossie 模型;对于可以精确转换的 Tableau 计算,会将其转换为可移植的 SQL,并提供其余内容的损失报告。import_from_ossie 会将任意 Ossie 模型中的描述、同义词和定义导入 Tableau Knowledge,并先提供可供审核的计划。
  • 轻量且安全可靠。 仅使用 Stdio(无入站端口),密钥仅从环境变量读取,强制使用 HTTPS,拒绝重定向,对 ID 进行编码,使其绝不可能到达其他端点,并对解析器进行模糊测试;运行时依赖仅有两项:MCP SDK 和 PyYAML(HTTP 使用标准库 urllib)。

要求

Tableau Knowledge 是一项 Tableau Cloud 功能(适用于 2026 年 9 月及之后的版本,需要 Tableau+ 许可证);Tableau Server 不提供此功能。任何用户都可以读取图谱,但会根据其内容权限进行筛选。写入语义上下文需要 Creator 角色。

快速开始

你需要 uv(curl -LsSf https://astral.sh/uv/install.sh | sh)和 Tableau 个人访问令牌。

Claude Code,一行命令:

claude mcp add tableau-knowledge \
  -e TABLEAU_SERVER=https://10ax.online.tableau.com \
  -e TABLEAU_SITE_CONTENT_URL=YourSite \
  -e TABLEAU_PAT_NAME=my-token \
  -e TABLEAU_PAT_SECRET=the-full-secret \
  -- uvx biztory-tableau-knowledge-mcp

就这么简单。uvx 会从 PyPI 获取软件包,并在隔离环境中运行;无需克隆或安装任何内容。然后询问:“使用 server_info:我的站点有哪些图谱?”

配置

所有配置均通过环境变量完成(在客户端的 env 块中设置,切勿在命令行中设置)。

环境变量必填默认值描述
TABLEAU_SERVER是n/ahttps://<pod>.online.tableau.com。浏览器中的任何 URL 都可使用;路径会被移除。
TABLEAU_SITE_CONTENT_URL是""站点标识(/#/site/ 之后的部分)。
TABLEAU_PAT_NAME是¹n/a个人访问令牌的名称。
TABLEAU_PAT_SECRET是¹n/aPAT 密钥:使用完整字符串,不要按 : 拆分。
TABLEAU_KNOWLEDGE_GRAPH_ID否主图谱每个工具使用的默认图谱。server_info 会列出站点的图谱;每个工具也都接受 graph_id。
TABLEAU_TIMEOUT否60每次请求的超时时间(秒)。
TABLEAU_API_VERSION否自动登录时使用的 REST 版本;否则从 serverinfo 读取。(Knowledge API 本身始终为 v1。)
TABLEAU_ALLOW_HTTP否关闭设置为 1,即可允许在受信任的网络中使用纯 http:// 服务。否则仅允许 HTTPS(或环回地址)。
TABLEAU_LOG_LEVEL否INFODEBUG 会将每次 HTTP 调用(方法 + URL;绝不记录标头、正文或密钥)写入 stderr。
TABLEAU_AUTH_TOKEN否n/a高级选项:使用预先获取的 X-Tableau-Auth 会话令牌,而非 PAT。

¹ 提供 PAT(TABLEAU_PAT_NAME + TABLEAU_PAT_SECRET)或 TABLEAU_AUTH_TOKEN。

Claude Desktop

编辑 claude_desktop_config.json(macOS:~/Library/Application Support/Claude/,Windows:%APPDATA%\Claude\):

{
  "mcpServers": {
    "tableau-knowledge": {
      "command": "uvx",
      "args": ["biztory-tableau-knowledge-mcp"],
      "env": {
        "TABLEAU_SERVER": "https://10ax.online.tableau.com",
        "TABLEAU_SITE_CONTENT_URL": "YourSite",
        "TABLEAU_PAT_NAME": "my-token",
        "TABLEAU_PAT_SECRET": "the-full-secret"
      }
    }
  }
}

完全退出并重新打开 Claude Desktop,然后查看工具菜单。

Cursor · VS Code · Cline · Windsurf

使用上方的添加到 Cursor / 添加到 VS Code 按钮并填写 env 值,或将与 Claude Desktop 相同的代码块添加到:

  • Cursor:~/.cursor/mcp.json(全局)或 .cursor/mcp.json(项目)。
  • VS Code:.vscode/mcp.json(其中顶层键为 servers,而非 mcpServers)。
  • Cline:在 MCP Servers 面板中选择 Configure,然后编辑 cline_mcp_settings.json。
  • Windsurf:~/.codeium/windsurf/mcp_config.json。

在 Windows 上,如果 GUI 应用找不到 uvx,请使用其绝对路径(例如 %USERPROFILE%\.local\bin\uvx.exe)。

工具

node 参数接受节点 ID 或自然语言描述。每个限定图谱范围的工具也都接受可选的 graph_id。

工具功能关键参数
server_info站点、版本、身份验证、是否启用了 Knowledge、站点的功能开关,以及所有图谱(ID、名称、状态、是否为主图谱、统计信息,包括上下文覆盖率)。适合作为首次调用。无
search_nodes对图谱进行语义搜索(搜索“revenue”可找到“Net Sales”),并按分数排序。query、node_type、scope_id、limit、threshold
get_node获取单个节点:属性、附加的语义陈述和子节点。node、include_children
list_edges获取某个节点周围的边,包括方向和另一端的节点。node、edge_type、direction
lineage沿沿袭/依赖边获取上游和下游邻域(10 步),并提供数量统计。node
impact_analysis获取所有直接或间接依赖某个节点的内容,按类型分组并统计数量。node
list_sources获取图谱所基于的已发布数据源和工作簿,以及最新的摄取状态。使用 site_search 可在整个站点中查找数据源(LUID,以及是否已加入图谱)。node_type、site_search
search_semantic_contexts获取图谱上的业务陈述:全部、仅限整个图谱,或附加到某个节点的陈述。node、is_global
graph_health获取健康评分、覆盖率指标和按优先级排序的改进建议。pds_id、severity、suggestion_type、limit
create_semantic_context(写入)将陈述附加到某个节点(精确 ID)或整个图谱。statements、target_node_id / is_global、name
update_semantic_context(写入)替换陈述、重命名、重新附加,或设为整个图谱范围。ctx_id、statements、name、attach_to / make_global
delete_semantic_context(写入)删除用户管理的上下文;返回已删除的内容。ctx_id
create_semantic_context_from_document(写入)上传 .txt/.md/.csv/.pdf/.docx/.xlsx 文件(最大 2 MB);Tableau 会将每一行转为一条陈述。未公开的 Web 应用 API。file_path、target_node_id / is_global
add_sources(写入)通过精确 LUID 将数据源/工作簿添加到图谱;Tableau 会在后台摄取它们。未公开的 Web 应用 API。pds_luids、workbook_luids、graph_id
remove_sources(写入)从图谱中移除数据源/工作簿(及其节点);返回已移除的内容。未公开的 Web 应用 API。pds_luids、workbook_luids、graph_id
create_graph(写入)创建空知识图谱;使用 add_sources 填充图谱。未公开的 Web 应用 API。name、description
update_graph(写入)重命名图谱、替换其描述,或将其设为主图谱。未公开的 Web 应用 API。graph_id、name、make_primary
ask_tableau_agent向 Tableau 自带的 Agent 询问有关图谱的问题,例如根据答案要点测试上下文;后续提问使用 conversation_id。未公开的 Web 应用 API。question、conversation_id
export_to_ossie将已发布的数据源导出为 Apache Ossie 模型(YAML),并提供验证结果和损失报告。datasource、include_hidden、default_aggregation_metrics
validate_ossie根据官方架构和规范规则检查任意 Ossie 模型(YAML/JSON)。仅限本地。document、model_name
import_from_ossie(写入)规划并应用 Ossie 模型将添加到数据源的语义上下文。document、target_datasource_id、apply
ossie_guideOssie 参考指南:对象模型、表达式、Tableau 映射、转换器和移植指南。仅限本地。topic
check_business_preferences检查 Business Preferences 文件(格式、限制、措辞),并核对其中命名的每个字段是否与仪表板标题相符。不提供文本时,返回规则手册。text、target、product

写入工具标注为 readOnlyHint: false(更新、删除和导入工具还标注为 destructiveHint: true),因此客户端可以在每次调用前征求确认。由 Tableau 管理的(SEMANTIC_CONTEXT_EXTERNAL)上下文为只读。

使用 Apache Ossie 迁移语义层

Apache Ossie(孵化中,前身为 Open Semantic Interchange)是一种厂商中立的语义模型 YAML 标准。此前没有适用于经典版 Tableau 的转换器;本服务基于 Knowledge 图谱构建了一个转换器,因此业务上下文也能一并迁移。

Tableau → Ossie(export_to_ossie):

Tableau KnowledgeOssie
已发布的数据源模型(name、description、ai_context)
逻辑表数据集
列字段字段(sql = 源列;dimension、datatype)
行级计算字段;Tableau 公式使用 TABLEAU 方言,若能精确转换则同时提供可移植的 sql
聚合计算指标(限定于数据集,或在跨表时使用带限定名的模型级指标)
{FIXED [d]: SUM([x])}SUM(x) OVER (PARTITION BY d)
度量的默认聚合指标(total_sales = SUM(sales))
描述和语义上下文description 和 ai_context
ID、标题、角色、原始公式custom_extensions,厂商为 TABLEAU(用于精确往返转换)

导出会验证自身输出并返回 losses 列表。Knowledge 不包含物理表路径或连接键,因此需要补充 source 和 relationships。INCLUDE/EXCLUDE LOD、表计算、参数和部分函数仍仅适用于 Tableau,并会在报告中逐项列出。

Ossie → Tableau Knowledge(import_from_ossie):Knowledge API 可以写入语义上下文,因此 Ossie 模型会转换为语义上下文。描述、ai_context 指令、同义词(“也称为……”)、示例问题和指标定义会写入对应节点,每个节点各有一个 ossie:<model> 上下文。匹配时优先使用上次导出中的 ID,然后再使用名称。对于 API 仅接受图谱级上下文的网站,相同语句会合并为一个全局 ossie:<model> 上下文,并为每条语句添加描述对象前缀(Superstore / Sales: Also known as: revenue.);scope 可强制指定为 node 或 global。首次调用会返回计划(创建/更新/不变,以及所有未匹配项),只有设置 apply=true 后才会写入任何内容。Tableau 中已有的语句会被跳过,因此重新导入未编辑过的导出内容不会写入任何内容。

斜杠命令。 此服务附带 MCP 提示词,可引导完成每个工作流:将数据源导出到 Ossie、将 Ossie 模型导入 Tableau Knowledge 和 编写业务偏好设置。在 Claude Code 中,它们显示为 /mcp__tableau-knowledge__export_datasource_to_ossie 和 /mcp__tableau-knowledge__import_ossie_into_tableau_knowledge(使用你选择的服务名称)。

继续迁移到其他平台。 Snowflake、dbt、Power BI、Databricks、Tableau Next、Cube、ThoughtSpot、Omni、Sigma 等平台均有转换器。目前这些转换器都尚未发布到 PyPI,因此 ossie_guide(主题 converters)会提供精确命令,并固定到经过审核的提交。待这些转换器发布后,此服务会将它们封装为工具。

编写可行的 Business Preferences

Business Preferences 文件是一组 # rule 行,Tableau 的 Agent 会在回答前读取这些规则:Tableau Cloud 上每个仪表板对应一个文件(50 条规则,8,000 个字符),Tableau Next 上每个语义模型对应一个文件(30,000 个字符)。它会影响 Agent 如何规划答案,因此每一行都必须是它能遵循的规则。check_business_preferences 汇集了实测经验,内容来自 Business Preferences in Tableau Cloud: What We Learned(Celia Fryar,XeoMatrix,2026 年 9 月):

  • Tableau 会静默忽略的格式错误:# 前有空格,或其后没有空格。
  • 限制:预留余量;不要添加标题、空行或重复规则,也不要出现矛盾。
  • 会误导 Agent 的措辞:没有“仅使用此值”字样的阈值、渗入查询的格式规则、对话式语句、可能被过度解读的缺失项、含糊的排序和平均值。缺少两条基准规则时,它还会建议补上(保持查询为数值型,如实报告失败)。
  • 实时检查字段名称:提供仪表板后,每个 [Field] 都必须是 Agent 能看到的可见标题,并附上“你是否想找”的建议。它还会标记工作簿问题:重复字段(Account ID (Account))、通用字段(Amount)和辅助字段。

write_business_preferences 提示词会运行完整流程。它会收集实际标题,询问术语、阈值和策略,然后起草并反复检查,直到内容没有问题,最后返回 v1,并提供上传后发布和测试建议。不提供文本调用 check_business_preferences,即可获取完整规则手册。

描述如何变成节点

# illustrative
"the net sales field"
   │  1. exact lookup: GET /nodes/{id}           → found? use it, no guessing
   │  2. not an id: semantic search (top 4)      → best match + runners-up
   ▼
{ "id": "field:…:Net Sales", …,
  "resolution": { "match": {"name": "Net Sales", "type": "FIELD", "score": 0.82},
                  "alternatives": [ … ],
                  "note": "Not an exact id: resolved by semantic search …" } }

模型会看到分数和其他候选项,因此可以向你确认,也可以用其他候选项的 ID 重试。写入工具会完全跳过此步骤,并要求提供准确的 ID。

提示词示例

  • "Use server_info:此站点有哪些图表,哪个是主图?"
  • "找到表示收入的字段,然后展示最佳匹配项的沿袭关系。"
  • "对 Superstore 数据源运行 impact_analysis:哪些工作簿和仪表板依赖它?"
  • "Profit 字段附带了哪些语义上下文?"
  • "显示图表的健康评分和五条高严重性建议,以及它们针对的节点。"
  • "向 Profit 字段添加一条说明:'Profit is calculated after returns and reported in EUR.'"

架构

架构

此服务通过 stdio 使用 MCP 与客户端通信,并通过 HTTPS 连接 Tableau:它使用你的 PAT 登录以获取 X-Tableau-Auth 会话(过期时会刷新),然后调用 /api/v1/knowledge。不会存储任何内容;每个回答都是实时获取的。

你应该了解的 API 特性

  • 搜索按含义进行。 分数是相对值;最高分约为 0.4-0.5 时,仍可能对应正确节点,因此请检查其他候选项。
  • 沿袭关系反映依赖,而非包含关系。 单个字段的沿袭关系通常只有它自身;list_edges 会显示它所属的表。
  • 上下文搜索目前不会按文本筛选。 search_semantic_contexts 按节点或 is_global 筛选;使用 search_nodes 按含义查找说明。
  • 不同端点对未知 ID 的处理方式不同。 API 的沿袭查询对未知 ID 会返回空图;此服务会先解析节点,因此始终会给出明确错误。
  • 删除操作具有幂等性。 删除未知 ID 会成功,但不会产生任何效果。
  • 某些站点只接受图级上下文。 创建附加到节点的上下文可能会失败,并返回 node_semantic_context_disabled(“节点范围的上下文由 Tableau 管理,并通过摄取流程添加”);BiztoryPulse 就是如此。请使用 is_global=true,并在说明中写明字段名称。import_from_ossie 会自动回退到这种方式。
  • API 有速率限制。 逐个遍历大型图中的节点会触发 HTTP 429;此服务会采用退避策略重试,但建议优先使用 lineage 和 impact_analysis,而不是大量调用 get_node。

安全性

  • 写入仅限语义上下文,使用精确 ID,发送前会进行验证,并附加标注,以便客户端先行询问。Viewer 或 Explorer PAT 实际上会使服务处于只读状态。
  • 仅限本地和 stdio。 不会开放入站网络端口。
  • 密钥仅从环境变量读取。 绝不通过工具参数传递、绝不记录日志、绝不返回。
  • 凭据只会发送到你的 Tableau 主机。 必须使用 HTTPS,证书会经过验证,并且会拒绝重定向。
  • 无法通过 ID 注入内容。 节点和上下文 ID 会编码为单个路径段;发送前会根据 Tableau 的模式检查 graph_id。CI 会对两个不可信输入解析器进行模糊测试。
  • 安全解析 YAML。 Ossie 文档通过 yaml.safe_load 解析(不支持标签或代码),并设有 5 MB 上限;validate_ossie 和 ossie_guide 不会联系 Tableau。
  • 可验证的发布版本。 每个 GitHub 发布版本都包含 Sigstore 签名和 CycloneDX SBOM,PyPI 上传使用 Trusted Publishing。
  • 在生产环境中固定版本:uvx biztory-tableau-knowledge-mcp==0.4.0。

有关威胁模型、数据处理、披露政策以及如何验证发布版本,请参阅 SECURITY.md。

故障排除

症状解决方法
未显示服务完全退出并重新启动客户端;检查配置路径和 JSON 有效性。
spawn uvx ENOENT安装 uv,或使用 uvx 的绝对路径。
登录失败(401,401001)PAT 无效或已过期(15 天未使用)。请创建新的 PAT,并检查 TABLEAU_SITE_CONTENT_URL。
site_not_entitled该站点未启用 Tableau Knowledge;必须由 Tableau Cloud Manager 管理员启用。
no_active_graph该站点没有主图谱:请传入 server_info 提供的 graph_id。
“语义搜索不可用”该图谱没有嵌入器。请使用精确 ID(list_sources → get_node)。
写入时出现 tableau_forbidden写入语义上下文需要 Creator 角色。
重试后收到 HTTP 429你触发了 Tableau 的速率限制;请等待一分钟,并减少调用次数、扩大每次调用的范围。

使用 MCP Inspector 直接检查服务:

npx @modelcontextprotocol/inspector uvx biztory-tableau-knowledge-mcp

开发

git clone https://github.com/biztory/biztory-tableau-knowledge-mcp && cd biztory-tableau-knowledge-mcp
uv sync --all-extras
uv run biztory-tableau-knowledge-mcp                   # run from source (needs the env vars above)
uv run pytest --cov=biztory_tableau_knowledge_mcp      # tests + coverage (offline; no Tableau needed)
uv run ruff check . && uv run ruff format --check . && uv run mypy

工具测试通过真实客户端对进程内的 Knowledge API 模拟对象运行(tests/conftest.py),因此会全面测试 URL 构建、ID 编码和错误映射。实时测试需选择启用:设置 TABLEAU_LIVE=1 会运行只读测试;设置 TABLEAU_LIVE_WRITE=1 会额外运行一轮测试,创建、更新并删除一个临时上下文。

CI 中也会运行相同的检查(Linux/macOS/Windows,Python 3.10 至 3.13):ruff check、ruff format --check、mypy --strict,以及设有覆盖率下限的 pytest。CodeQL 会扫描每次推送,OpenSSF Scorecard 每周运行一次,模糊测试任务(fuzz/)会攻击不可信输入解析器。此软件包包含 PEP 561 py.typed 标记文件。

欢迎贡献:请参阅 CONTRIBUTING.md 和 行为准则。

路线图

  • 导出到 Apache Ossie,并从 Apache Ossie 导入(原名 OSI)
  • 将 Ossie 转换器(Snowflake、dbt、Power BI、Databricks)封装为工具,待其发布到 PyPI 后实现
  • Knowledge API 开放相关信息后,根据 Tableau 联接键生成 Ossie 关系
  • 在本 README 中添加演示录制
  • 可选地按会话缓存 server_info 和已解析节点

欢迎在 Discussions 中提出想法并投票。

许可证

MIT © Biztory。姊妹项目:tableau-graphql-mcp,用于通过 Tableau Metadata API 获取数据沿袭。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。