MCP 服务器
Tabular Editor 3 可以充当 MCP(Model Context Protocol)服务器。支持 MCP 的代理(例如 Claude Code、GitHub Copilot、VS Code 代理模式、Codex 或 Cursor)可连接到正在运行的实例,读取、查询并分析你当前打开的语义模型;如果你授予写入权限,还可以修改它。首先,选择 工具 > MCP 服务器... 并注册你的代理。
MCP 服务器不会使用你在 Tabular Editor 中配置的 AI 提供程序或 API 密钥;你的代理会使用它自己的提供程序和订阅。
代理处理的是 Tabular Editor 当前打开的模型,包括尚未保存的更改。它可以是 Power BI Desktop 模型、PBIP 项目、TMDL (Tabular Model Definition Language) 文件夹、.bim 文件、Workspace 数据库,或到 Analysis Services、Azure Analysis Services 或 Fabric 的实时连接。无论模型处于已连接还是脱机状态,代理使用的工具都是相同的,但需要实时连接的工具(例如 DAX 查询)除外。
代理的更改会通过 Tabular Object Model (TOM) 包装器 和 C# Script 脚本引擎应用,并与手动编辑一样,经过相同的验证、公式自动修正和撤销堆栈处理。这些更改会显示为未保存的更改,并在 TOM Explorer 和属性视图 中标记;在你保存之前,不会将任何内容写回源文件。
开始之前
- Tabular Editor 3.27.0 或更高版本,任何版本均可。
- 已安装 AI 功能 组件。从 3.27.0 开始,它已包含在默认安装中。如果你以集中方式部署 Tabular Editor,请参阅 @installation-activation-basic;如果管理员已关闭 AI 功能,请参阅 @policies。
- 支持通过可流式传输的 HTTP 使用 MCP 的代理。
启动服务器
- 选择 工具 > MCP 服务器...。
- 检查权限设置。见 设置代理权限。
- 点击 启动服务器。
该对话框会显示服务器侦听的地址:http://127.0.0.1:42100/,除非你已更改端口。状态栏指示器会从 MCP 已停止 变为 MCP 已启动,其工具提示中会显示该地址。


无论是否打开模型,服务器都可以运行。如果没有打开模型,工具结果会明确说明;而且你可以随时打开模型,无需重启服务器。
右键单击状态栏指示器可启动或停止服务器、复制注册配置,或打开 MCP 服务器偏好设置。左键单击它可打开对话框,而不会启动或停止服务器。

MCP 偏好
打开 工具 > 偏好 > AI 功能 > MCP 服务器,设置服务器的启动、身份验证和端口选项。

| 偏好 | 默认值 | 作用 |
|---|---|---|
| 启用 MCP 服务器 | 开 | 取消勾选后,会停止正在运行的服务器,并移除菜单项和状态栏指示器 |
| 自动启动 MCP 服务器 | 关 | 在 Tabular Editor 启动时启动服务器 |
| 需要访问令牌 | 关 | 代理必须提供服务器对话框中显示的访问令牌。参见 在共享计算机上运行 |
| 端口 | 42100 | 服务器侦听的回环端口,范围为 1024 到 49151。更改后会使现有的代理注册失效 |
注册代理
在服务器对话框中,从 导出配置 中选择你的代理,然后将复制的配置粘贴到你的代理中。每个代理只需注册一次,该配置会以 tabular-editor 这个名称注册服务器。

Claude Code:在终端中运行复制的命令:
claude mcp add --transport http tabular-editor http://127.0.0.1:42100/
VS Code:添加到你的 MCP 配置中:
{
"servers": {
"tabular-editor": {
"type": "http",
"url": "http://127.0.0.1:42100/"
}
}
}
Copilot CLI:将以下内容添加到 ~/.copilot/mcp-config.json:
{
"mcpServers": {
"tabular-editor": {
"type": "http",
"url": "http://127.0.0.1:42100/"
}
}
}
Codex:将以下内容添加到 ~/.codex/config.toml:
[mcp_servers.tabular-editor]
url = "http://127.0.0.1:42100/"
Cursor:将以下内容添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"tabular-editor": {
"url": "http://127.0.0.1:42100/"
}
}
}
启用 需要访问令牌 后,导出的配置会按各客户端的格式包含令牌。从对话框中复制配置,不要手动编写。
任何其他 MCP 客户端都可通过 streamable HTTP 连接到 http://127.0.0.1:42100/。启用 需要访问令牌 后,请在 Authorization: Bearer <token> 标头中携带令牌。
检查是否成功
向你的代理提问:
我在 Tabular Editor 中连接到了哪个模型?
代理会回答模型名称、模型的加载方式、是否有未保存的更改及其兼容级别;或者会发送一条 Report,说明当前未打开任何模型。 Tabular Editor 中不会出现任何提示。
设置代理权限
权限决定代理可以使用哪些工具,而 AI Assistant 也使用同一套权限。可在 工具 > MCP 服务器... 对话框中设置,也可在 工具 > 偏好 > AI 功能 > 权限 下设置;两者编辑的是同一项设置。

将鼠标悬停在某项权限的标签或下拉列表上,即可查看各个级别允许的操作。如果管理员已通过策略为某项资源设置了上限,下拉列表会变为只读,并显示该策略。
每项资源都有一个访问级别:
| 资源 | 默认值 | 代理获得的内容 |
|---|---|---|
| 模型元数据 | 读取 | 读取:表、列、度量值、表达式、描述、关系,以及 VertiPaq分析器统计信息。写入:能够通过 C# Script 脚本更改模型 |
| 模型数据 | 禁止 | 读取:DAX 查询结果(来自你的模型的数据值)。需要实时连接 |
| Best Practice Analyzer | 读取 | 读取:规则集和分析结果。写入:添加和修改规则 |
| 文档 | 写入 | 读取:你打开的 DAX 查询、C# Script 和 DAX 脚本的内容。写入:修改这些内容,并创建 C# Script 和 DAX 查询 |
| 宏 | 写入 | 读取:你的宏库,包括名称、说明和代码。写入:此版本中没有额外工具 |
写入(在下拉列表中标为 读/写)包含“读取”权限,而 模型数据 没有“写入”级别。
文档 默认设置为“写入”,这允许代理创建选项卡,并覆盖已打开的 DAX 查询、C# Script 和 DAX 脚本的内容。代理不会运行它们,模型也不会更改。如果这些选项卡里有未保存的工作,就把 文档 设为“读取”。
将这些授权提升到默认值以上,会让智能体获得更多访问权限:
- 模型数据 > 读取会将模型中的值发送给智能体,并经由智能体发送给其提供方。只在智能体需要用真实值核对结果时才授予这个权限。
- 模型元数据 > 写入允许智能体通过 C# Script 修改模型。保护措施请参阅智能体如何更改你的模型。
Important
服务器启动时会读取权限,而智能体会在连接时获取其工具列表。更改授权后,先停止并重新启动服务器,再重新连接代理。在此之前,智能体会继续保留它连接时生效的权限。
代理可以做什么
智能体可用的工具取决于你的授权。下表列出了你可以提出的请求,以及每项请求所需的授权。
| 请求 | 所需授权 |
|---|---|
| 识别 Tabular Editor 实例及其当前打开的模型 | 无 |
| 搜索 Tabular Editor 文档、博客以及 GitHub 的 Issues 和 Discussions | 无 |
| 查阅脚本 API:了解你当前运行的 Tabular Editor 版本中模型对象的属性、方法和签名 | 无 |
| 获取表的概览,包括每个表的列数、度量值数量以及所有关系 | 模型元数据 > 读取 |
| 获取指定名称对象的完整信息,包括表达式、说明、格式字符串和数据类型 | 模型元数据 > 读取 |
| 按名称、说明、DAX 或 M 表达式、格式字符串或批注搜索模型 | 模型元数据 > 读取 |
| 获取完整模型。这会消耗大量令牌,工具说明中也会提醒智能体 | 模型元数据 > 读取 |
| 在 TOM Explorer 中查看所选对象 | 模型元数据 > 读取 |
| 获取 VertiPaq分析器统计信息:表大小、列基数和内存使用情况 | 模型元数据 > 读取 |
| 列出有效的 Best Practice Analyzer 规则,包括你自定义的规则,并运行分析 | Best Practice Analyzer > 读取 |
| 在本地规则集中添加或修改规则 | Best Practice Analyzer > 写入 |
| 运行 DAX 查询并返回结果行。查询默认返回 100 行,最多返回 500 行 | 模型数据 > 读取 和 模型元数据 > 读取 |
| 列出你当前打开的 DAX 查询、C# Script 和 DAX 脚本 | 模型元数据 > 读取 |
| 读取已打开标签页的内容 | 文档 > 读取 |
| 编辑标签页,或打开新的 C# Script 或 DAX 查询以供审阅 | 文档 > 写入 |
| 读取你的宏库 | 宏 > 读取 |
| 更改模型。查看 代理如何更改你的模型 | 模型元数据 > 写入 |
在提示中引用对象之前,请先在 TOM Explorer 中选中它们,例如在请求“将这些对象的格式统一”之前。
在代理生成的 C# Script 或 DAX 查询以文档形式打开之前,Tabular Editor 会先编译脚本或根据当前打开的模型验证查询,并将所有错误返回给代理。 DAX 查询验证需要 Tabular Editor 连接到 Analysis Services 或 Power BI。
Note
查询数据需要实时连接;而 VertiPaq 统计信息则需要连接,或使用你事先已收集的统计信息。工具的可用性在代理连接时确定,因此如果你在之后才连接模型,请重新连接代理。
代理如何更改你的模型
拥有 模型元数据 > 写入 权限时,代理会通过在后台创建 C# Script 来更改你的模型。 Tabular Editor 会编译该脚本,检查其安全性,并针对当前打开的模型运行它。
脚本可以执行 C# Script API 支持的任何操作,例如添加度量值、列、计算组、透视、翻译、关系和刷新策略,或批量重命名并设置对象格式。由代理运行的脚本具有以下特性:
- 其所有更改会合并为一条名为 C# Script (MCP) 的撤销记录;按 Ctrl+Z 会撤销整个脚本。当文档处于焦点时,按 Ctrl+Z 可撤销在文档中输入的内容。请先单击 TOM Explorer,或在 Edit 菜单中选择 Undo C# Script (MCP)。请参阅文本编辑器中的撤销。
- 如果脚本执行到一半时引发异常,其所有更改都会回滚。
- 代理会收到一个列表,其中包含脚本新增、更改或删除的每个对象,以及脚本输出的所有内容。
- 来自
Output、Info、Warning或Error的信息会作为结果的一部分返回给代理,且不会弹出任何对话框。 - 长时间调用运行时,会显示 请稍候 指示器,并忽略你在 Tabular Editor 中的点击操作。
- 在你保存之前,TOM Explorer 和属性视图中会标记已更改的对象和属性。显示更改 会将两个视图筛选为只显示更改项;右键单击 还原 可撤销单个属性、单个对象或整个分支。

AI 助手聊天运行脚本的方式相同:同样只有一个撤销步骤,并支持回滚;其撤销记录为 C# Script (AI Assistant)。代理脚本没有预览对话框,也没有 取消 按钮。之后可在 TOM Explorer 和属性视图中检查这些更改。
被阻止的操作
无论你授予了哪些权限,以下操作都会被阻止:
- 在由代理运行的脚本中,用于执行原始 TMSL 或 XMLA 的
ExecuteCommand始终会失败。 - 访问文件系统、发送 Web 请求或引用外部程序集的代理脚本不会运行。这项检查使用的分析与
BlockUnsafeScripts策略相同;完整列表见 哪些情况算作保持在模型范围内。脚本会如何处理,取决于你的权限和策略:- 拥有 文档 > 写入 权限时,脚本会以 代理脚本(审阅) 文档的形式打开,工具结果会告知代理让你审阅并运行它。
- 如果没有 文档 > 写入,脚本不会运行,也不会打开任何文档。
- 启用
BlockUnsafeScripts策略后,脚本不会运行,也不会打开任何文档。
- 脚本中的 DAX 辅助功能同样需要 模型数据 > 读取 权限,与查询工具一致。
示例任务
修复 Best Practice Analyzer 违规项
打开一个模型,然后提问:
运行 Best Practice Analyzer,告诉我哪些问题值得优先修复,按严重程度从高到低排列。
然后继续输入“修复格式字符串违规项”。如果已授予 模型元数据 > 写入,代理会编写并运行一段脚本,并在 TOM Explorer 中以橙色高亮显示已更改的对象。在属性视图中,点击 显示更改 可按属性查看更改前后的值。右键点击任何你不想保留的更改,选择 还原,然后保存。
根据规格说明添加度量值
让代理读取规格说明、工单或包含度量值定义的电子表格:
把 requirements.md 中的度量值添加到 Sales 表。沿用那里已有的命名和格式字符串。
代理会从其自身的 Workspace 中读取 requirements.md。
用查询验证结果
授予 模型数据 > 读取 后,代理可以运行 DAX 来检查自己的工作:
确认新的 Margin % 度量值在 2025 年得出的总计与旧计算相同。
它会编写并运行 DAX 查询,然后对比结果。
起草脚本而不运行
有了 文档 > 写入 权限,代理可以将 C# Script 或 DAX 查询写入文档,供你审阅后自行运行;例如,你可以在实际运行前先检查更改,或稍后在另一个模型上运行:
帮我写一个脚本,把每个度量值重命名为句首大写的 sentence case 格式,但不要运行它。
该脚本会作为文档在 Tabular Editor 中打开,并已完成编译和安全检查。读完后再运行。
Tip
在任务之间先审阅并保存,让每次未保存的更改都尽量少一些。
同时运行多个实例
每个 Tabular Editor 实例都会在各自的端口上托管自己的服务器。要同时处理两个模型,请分别在各自的实例中打开,并为每个实例连接一个代理。
要启动第二个服务器,请启动第二个实例,打开 Tools > MCP Server...,然后单击 Start server。如果配置的端口已被占用,系统会提示使用后续 20 个端口中第一个可用的端口;如果都不可用,则会显示错误。你也可以在 Tools > 偏好 > AI Features > MCP Server 中设置其他端口。
以单独的名称在代理中注册第二个端口,并在提示中写明你指的是哪个实例。
在共享计算机上运行
服务器监听在 127.0.0.1 上,其他机器无法访问。它还会拒绝带有非本地 Origin 标头的浏览器请求。
当 要求访问令牌 处于关闭状态时,本机上的任何进程都可以在无需凭据的情况下连接。在多个用户同时登录的主机上(例如远程桌面或 Citrix 服务器),这也包括其他用户会话中的进程。
在 工具 > 偏好 > AI 功能 > MCP 服务器 中选择 要求访问令牌,然后重新启动服务器。此后,代理必须提供服务器对话框中显示的令牌;未提供令牌的请求将被拒绝。
选择 重新生成令牌(令牌旁边的刷新按钮)以生成新令牌;这会使现有注册失效,并重新启动正在运行的服务器。如果令牌已泄露,请重新生成令牌并重新注册你的代理。管理员可以通过 RequireMcpAccessToken 策略强制所有人都使用令牌,同时也会锁定该偏好设置。参见 @policies。
哪些内容会离开你的计算机
使用 MCP 服务器时,Tabular Editor 不会联系任何 AI 提供商,只会通过回环连接响应来自你本机进程的工具调用。代理搜索的知识库是 Tabular Editor 随附的本地数据库,并通过 Tabular Editor 的服务进行更新。
你的代理会按照你的订阅和该提供商的条款,将数据发送给相应的提供商;发送哪些数据由代理的设置决定。当 Model data 保持默认值 Deny 时,代理将无法从 Tabular Editor 获取任何 DAX 查询结果。在模型定义中输入的值,例如 DATATABLE 表达式或 Enter data 表,属于模型元数据,代理可通过 Model metadata > Read 访问这些内容。
更全面的说明请参阅 @security-privacy,其中也包括 AI 助手;它会直接调用提供商,并且需要单独配置。
管理员控制
MCP 服务器默认启用,任何用户都可以将其关闭。管理员可以使用以下 策略 来控制 MCP 的运行方式:
| 策略 | 版本 | 作用 |
|---|---|---|
DisableMcpServer |
所有版本 | 移除 MCP 服务器。 AI 助手聊天不受影响 |
DisableAi |
所有版本 | 关闭所有 AI 功能,包括 MCP 服务器。将 REG_DWORD 的值设为 1 后,安装程序在全新安装时也不会安装 AI 组件,并会在升级时将其移除 |
RequireMcpAccessToken |
所有版本 | 强制使用令牌进行身份验证,并锁定该偏好 |
DisableCSharpScripts |
全部 | 阻止代理运行 C# Script,并禁止将脚本草拟到文档中。起草 DAX 查询以及所有只读工具都不受影响 |
BlockUnsafeScripts |
企业版 | 在 Tabular Editor 中,所有脚本都只能在模型内部运行。访问文件、网络、其他进程或外部程序集的代理脚本不会运行,也不会打开任何审阅文档 |
Max... 和 McpMax... 权限限制 |
企业版 | 为每种资源设置上限。 Max... 限制适用于 AI Assistant 和 MCP 服务器。 McpMax... 限制仅适用于 MCP 服务器,并且只能将 Max... 限制调低 |
AiAuditLogPath, AiAuditLogRetentionDays |
企业版 | 设置 审计日志 的位置和保留期 |
AiProvider 及相关值 |
企业版 | 锁定 AI Assistant 的提供程序。 MCP 服务器不受影响 |
Warning
如果没有 Enterprise 许可证,任何 Enterprise 策略设置都会阻止 AI Assistant 和 MCP 服务器启动,并移除菜单项和状态栏指示器。 BlockUnsafeScripts 值还会阻止所有脚本和宏,因此只能将 Enterprise 策略部署到具有 Enterprise 许可证的计算机上(请参阅没有企业版时会发生什么)。
在企业版中,Tabular Editor 会在本地保留 AI Assistant 和 MCP 服务器活动的审计日志,其中包括代理调用的每个工具,以及其运行的任何 C# Script 的完整文本。提示词、回复和数据值不会被记录。在服务器对话框中点击 打开审计文件夹,或在 工具 > 偏好 > AI 功能 中点击同名按钮,都会打开日志文件夹。在 Desktop 版和商业版中,不会记录任何内容,这两个按钮也都不会显示。
有关完整列表、注册表布局和管理模板,请参阅 @policies。
故障排查
| 你看到的现象 | 实际情况 |
|---|---|
| 代理提示它没有可用于 Tabular Editor 的工具 | 服务器没有运行,或者代理在服务器启动前就已连接。确认状态栏显示 MCP 已启动,然后重新连接代理 |
| 智能体看不到你刚授予的权限 | 授权会在服务器启动时读取,工具列表会在连接时确定。停止并重新启动服务器,然后重新连接智能体 |
| 长时间中断后,代理会丢失连接 | 如果 20 分钟内没有任何请求且没有打开的流,服务器会关闭会话。重新连接智能体 |
| 智能体报告未打开任何模型 | 服务器独立于你的模型运行。请在 Tabular Editor 中打开一个模型,然后再问一次。你不需要重启任何东西 |
| 智能体无法运行 DAX 查询 | 模型数据 默认设置为 Deny。查询也需要实时连接:如果模型是从磁盘打开的,不管授予什么权限,查询工具都不可用 |
| 连接被 401 拒绝 | 要求访问令牌 已开启,但智能体没有发送该令牌。请再次从对话框中复制注册配置。其中包含令牌 |
| 端口已被占用 | 另一个 Tabular Editor 实例或其他应用程序正在使用它。在提示中接受下一个可用端口,并更新代理的注册信息。如果启用了 自动启动 MCP 服务器,启动时发生冲突将不会弹出提示,指示器会显示 MCP Stopped |
| 菜单中没有 工具 > MCP 服务器... | 在偏好中未选中 启用 MCP 服务器,未安装 AI 功能组件,管理员设置了 DisableMcpServer 或 DisableAi,或者在未获得相应许可的计算机上设置了 Enterprise 策略值。见 @policies |
后续步骤
- 完整权限模型和内置聊天见 @ai-assistant。
- 通过 未保存更改指示符 查看并撤销智能体所做的更改。
- 有关脚本以及因此代理能更改哪些内容,见 @csharp-scripts。
- 如需了解如何在组织范围内对服务器进行治理,请参阅 @policies。
- 如果你的代理处理 repository 或管道中的模型文件,见 @te-cli-skill。