结论Conclusion
0五个工具中在 ADC 容器内部实现的数量。ADC 负责把 bundle 中的 MCP 配置交给 Copilot session。Of the five tools are implemented inside the ADC container. ADC passes the bundle's MCP configuration into the Copilot session. [E3] [E4]
关键区分:Key distinction:
fabric-sqlendpoint-execute_query 是模型侧常见显示名;服务端声明的原始 MCP tool name 是 execute_query。当前可见源码只能证明原始名称,不能证明 prefix 的具体拼接实现。
fabric-sqlendpoint-execute_query is the common model-visible name; the server declares the raw MCP tool name as execute_query. The visible source proves the raw name but not the exact prefix-construction implementation.
[E22] [E27]
→
workload-copilot
校验用户上下文,准备 sandbox 和下游 tokenValidates user context and prepares sandbox/downstream tokens
[E6] [E7]
校验用户上下文,准备 sandbox 和下游 tokenValidates user context and prepares sandbox/downstream tokens
[E6] [E7]
→
fabric-adc-agent
把 MCP servers 注入 Copilot SDK sessionInjects MCP servers into the Copilot SDK session
[E4]
把 MCP servers 注入 Copilot SDK sessionInjects MCP servers into the Copilot SDK session
[E4]
→
Fabric API MCP proxy
egress proxy 注入 Fabric API bearerEgress proxy injects a Fabric API bearer
[E8] [E9]
egress proxy 注入 Fabric API bearerEgress proxy injects a Fabric API bearer
[E8] [E9]
→
五个工具:实现、输入和下游Five tools: implementation, inputs, and downstream calls
| 模型可见名称Model-visible name | 实际实现Implementation | 输入 contractInput contract | 下游和输出Downstream and output | 源码Source |
|---|---|---|---|---|
| GetSemanticModelSchema | FabricAIHub 注册 GetSemanticModelSchemaJmesPathTool;wrapper 委派 GetSemanticModelSchemaToolHandler,handler 解析 workspace/model 并读取 enriched schema。FabricAIHub registers GetSemanticModelSchemaJmesPathTool; the wrapper delegates to GetSemanticModelSchemaToolHandler, which resolves workspace/model and reads enriched schema. |
artifactId: GUIDqueries?: string[≤5] |
调用 Power BI Explore .../enrichedmetadata;返回模型 schema、custom instructions、verified answers、citation,并支持 JMESPath/大结果摘要。Calls Power BI Explore .../enrichedmetadata; returns model schema, custom instructions, verified answers, citation, and supports JMESPath/large-result summaries. |
[E13] [E14] |
| GetReportMetadata | FabricAIHub 注册自己的 JMESPath wrapper;wrapper 委派 Power BI GetReportMetadataToolHandler,handler 通过 report schema cache 组装结果。FabricAIHub registers its JMESPath wrapper, which delegates to Power BI's GetReportMetadataToolHandler; the handler assembles the result through the report schema cache. |
reportObjectId: GUIDqueries?: string[≤5] |
调用 Power BI Explore .../reportmetadata;返回 workspace、semantic model、pages、visuals、filters 和 citation,并支持 JMESPath/摘要。Calls Power BI Explore .../reportmetadata; returns workspace, semantic model, pages, visuals, filters, and citation, with JMESPath/summary support. |
[E15] [E16] |
| ValueSearch | ValueSearchTool 解析 report/model 到 semantic model、校验参数,然后调用 ValueSearchToolService;scope 当前在客户端过滤。ValueSearchTool resolves report/model to a semantic model, validates inputs, then calls ValueSearchToolService; scope is currently filtered client-side. |
artifactId: GUIDsearchTerms: string[1..20]scope? |
调用 Explore .../instanceLookup;返回精确 table/column/value 位置、score 和 citation。Calls Explore .../instanceLookup; returns exact table/column/value locations, scores, and citation. |
[E17] [E18] |
| ExecuteQuery | ExecuteDaxQueryTool 执行 1–4 条含单个 EVALUATE 的 DAX;根据 flight 选择 Shared Explore API 或 direct AS provider。ExecuteDaxQueryTool executes 1–4 DAX queries containing one EVALUATE; a flight selects Shared Explore API or a direct AS provider. |
artifactId: GUIDdaxQueries: string[1..4]maxRows?: number |
Shared 路径调用 .../executequery;默认 250 行、通常上限 1000 行(large-result flight 可提高上限)。The shared path calls .../executequery; the default is 250 rows and the normal cap is 1,000 rows (a large-result flight can raise it). |
[E19] [E20] |
| fabric-sqlendpoint-execute_query (raw: execute_query) |
XDW SqlEndpointMcpController 接收 MCP POST,ExecuteQueryToolWrapper 校验参数,ExecuteQueryTool 调 SqlEndpointQueryExecutor 通过 TDS 执行。XDW's SqlEndpointMcpController receives the MCP POST, ExecuteQueryToolWrapper validates inputs, and ExecuteQueryTool calls SqlEndpointQueryExecutor to execute through TDS. |
workspaceId: GUIDitemId: GUIDquery: non-empty T-SQL |
默认最多 10,000 行、300 秒;返回 metadata text 和 embedded text/csv resource。Defaults to 10,000 rows and 300 seconds; returns metadata text plus an embedded text/csv resource. |
[E21] [E22] [E23] [E24] |
如何注册到 UCCHow the tools are registered into UCC
fabric-adc-agent固定 GitHub Copilot SDK1.0.0-beta.10和Microsoft.Fabric.Copilot.AdcSkills 0.3.12,并把 package 中完整skills-for-fabricpayload 复制到 publish output。fabric-adc-agentpins GitHub Copilot SDK1.0.0-beta.10andMicrosoft.Fabric.Copilot.AdcSkills 0.3.12, then copies the package's completeskills-for-fabricpayload into publish output. [E1] [E2]- 该 bundle 的
.mcp.json声明两个 HTTP MCP servers:FabricIQ指向 FabricAIHub M365 endpoint 并带X-VARIANTS: Fabric.Routing.PowerBIDataExploration;fabric-sqlendpoint指向 SQL Endpoint endpoint,并只允许 raw toolexecute_query。The bundle's.mcp.jsondeclares two HTTP MCP servers:FabricIQtargets the FabricAIHub M365 endpoint withX-VARIANTS: Fabric.Routing.PowerBIDataExploration;fabric-sqlendpointtargets the SQL Endpoint endpoint and allows only the rawexecute_querytool. [E27] SkillBundleLoader.LoadMcpServers()解析.mcp.json为 SDKMcpServerConfig;缺失、空或解析失败时返回null,session 将没有 MCP servers。SkillBundleLoader.LoadMcpServers()parses.mcp.jsoninto SDKMcpServerConfig; missing, empty, or invalid configuration returnsnull, leaving the session without MCP servers. [E3]- ADC 创建正常 session 或恢复非 ephemeral session 时把结果写入
SessionConfig.McpServers/ResumeSessionConfig.McpServers。ADC writes the result toSessionConfig.McpServers/ResumeSessionConfig.McpServerswhen creating a normal session or resuming a non-ephemeral session. [E4] - FabricIQ 的 routing variant 映射到稳定的
powerbi-data-explorationtoolset;该 toolset 明确包含四个 Power BI tools,DI 注册又把每个模型名绑定到对应 tool type。FabricIQ's routing variant maps to the stablepowerbi-data-explorationtoolset; that toolset explicitly includes the four Power BI tools, and DI registration binds each model name to its tool type. [E11] [E12] - SQL Endpoint 路径由 XDW 的 MCP controller 接收,并仅为该 controller 注册 MWC-token authenticator;tool wrapper 通过
[McpServerTool(Name="execute_query")]暴露原始工具。The SQL Endpoint path is received by XDW's MCP controller, which is registered only with an MWC-token authenticator; the tool wrapper exposes the raw tool through[McpServerTool(Name="execute_query")]. [E21] [E22] [E25]
认证与用户委托链Authentication and user-delegation chain
| 跳转Hop | 入站认证Inbound auth | 转换/转发Transformation / forwarding | 源码可证明内容What source proves | 证据Evidence |
|---|---|---|---|---|
| Browser → workload-copilot | Authorization: MwcToken <v2 token> + resource moniker | Portal host 先取 user token,再 mint workspace-scoped MWC v2 token。The portal host first obtains a user token, then mints a workspace-scoped MWC v2 token. | 客户端 header 构造和 workload 的 MWC v2 验证均可见。Both client header construction and workload MWC v2 validation are visible. | [E5] [E6] |
| workload-copilot → ADC | 独立 sandbox ingress bearerSeparate sandbox ingress bearer | workload 准备 sandbox、刷新 session token,并流式调用 ADC。The workload prepares the sandbox, refreshes session tokens, and streams the call to ADC. | 这是 sandbox 入口凭据,不是下游 Fabric MCP bearer。This is a sandbox-ingress credential, not the downstream Fabric MCP bearer. | [E7] |
| ADC runtime → Fabric API MCP | .mcp.json 本身不含静态 Authorization。.mcp.json contains no static Authorization. | sandbox egress policy 为 Fabric API /v1/* 请求注入 SecretRef-backed Bearer。The sandbox egress policy injects a SecretRef-backed Bearer for Fabric API /v1/* requests. | original-token 路径调用 Shared OBO;refresh-token 路径明确使用 Power BI resource。The original-token path calls Shared OBO; the refresh-token path explicitly uses the Power BI resource. | [E8] [E9] [E27] |
| Fabric API → FabricAIHub → Power BI | FabricAIHub controller 默认 S2sObo,request context 读取原始用户 AAD context。The FabricAIHub controller defaults to S2sObo, and request context reads original user AAD context. | Power BI client 调用 metadata/query API。The Power BI client calls metadata/query APIs. | controller auth mode、tool implementation 和 API 路径可见;gateway 内部 token exchange 不可见。Controller auth mode, tool implementation, and API paths are visible; the gateway's internal token exchange is not. | [E10] [E14] [E16] [E20] |
| Fabric API → XDW → SQL | XDW controller 只注册 MWC authenticator。The XDW controller registers only the MWC authenticator. | executor 从 MWC/AAD context 取原始 AAD token,必要时先换到 PBI audience,再 mint SQL-audience MWC token。The executor extracts the original AAD token from MWC/AAD context, optionally pre-exchanges to the PBI audience, then mints a SQL-audience MWC token. | 最终 token 写入 SqlConnection.AccessToken;代码注释明确 SQL audience 为 https://database.windows.net/。The final token is assigned to SqlConnection.AccessToken; source comments identify the SQL audience as https://database.windows.net/. | [E25] [E26] |
证据边界:不能声称的内容Evidence limits: claims that cannot be made
当前可见 GitHub Copilot SDK 源码没有包含 bundled runtime 的 HTTP MCP discovery、
tools/list/tools/call transport 或 server-name prefix 拼接实现。因此本文只把 execute_query 视为源码确认的 raw name,把 fabric-sqlendpoint-execute_query 标为模型侧常见名称。The visible GitHub Copilot SDK source does not include the bundled runtime's HTTP MCP discovery, tools/list/tools/call transport, or server-name prefix construction. Therefore this page treats execute_query as the source-confirmed raw name and labels fabric-sqlendpoint-execute_query as the common model-visible name. [E4] [E22]GetOBOAadTokenForSharedAsync 的内部实现和精确 target audience 位于外部平台依赖;不能仅凭方法名推断。可确认的是调用发生,以及 refresh-token 路径使用默认 Power BI resource https://analysis.windows.net/powerbi/api。The implementation and exact target audience of GetOBOAadTokenForSharedAsync are in an external platform dependency and cannot be inferred from the method name alone. What is confirmed is that the call occurs and that the refresh-token path uses the default Power BI resource https://analysis.windows.net/powerbi/api. [E9]Fabric API gateway 从外部 Bearer 到 FabricAIHub/XDW 内部 S2S/OBO/MWC token 的具体交换实现不在已读源码中;本文只描述 gateway 两端可见的认证 contract。The Fabric API gateway's concrete exchange from the external Bearer to FabricAIHub/XDW internal S2S/OBO/MWC tokens is not present in the reviewed source; this page describes only the visible authentication contracts on both sides of the gateway. [E8] [E10] [E21]
源码 commit 是 2026-08-26 审计时各目标分支的固定快照;没有 deployment manifest 证明这些 commit 与当前生产部署完全一致。若要将置信度提升到生产级,需要一次脱敏 live trace,关联 ADC MCP event、egress rule、Fabric API route 和 FabricAIHub/XDW correlation ID。The source commits are fixed snapshots of the target branches at the 2026-08-26 audit; no deployment manifest proves they exactly match the current production deployment. Production-level confidence requires a sanitized live trace correlating ADC MCP events, egress rules, Fabric API routes, and FabricAIHub/XDW correlation IDs.
源码索引(全部固定到 commit)Source index (all pinned to commits)
- [E1] fabric-adc-agent @
a1a8b3847bc818b8aeeaf8a2874cddb3577d947a—Directory.Packages.props:6-10. - [E2] fabric-adc-agent —
Microsoft.Fabric.Copilot.AdcAgent.csproj:52-92. - [E3] fabric-adc-agent —
SkillBundleLoader.cs:11-103. - [E4] fabric-adc-agent —
CopilotAgentService.cs:559-572and709-740. - [E5] PowerBIClients @
18b59a632f08288efb403f430c6c423662c26068—unified-copilot-pane.module.ts:53-95andcopilot-api.service.ts:213-230. - [E6] workload-copilot @
4036c75691e5834c3336e188411b42666d50c193—MessagesController.cs:32-75andCopilotMwcTokenV2AadAuthenticator.cs:20-58. - [E7] workload-copilot —
MessagesService.cs:143-192andIngressProxyAuthHandler.cs:17-51. - [E8] workload-copilot —
EgressPolicyRulesProvider.cs:779-845. - [E9] workload-copilot —
AadTokenProvider.cs:145-215andAdcSandboxOptions.cs:319-333. - [E10] workload-fabricaihub @
721c41560c6e7b7dae0b4dccb596b9cc2b5e30f6—M365McpServerController.cs:22-115. - [E11] workload-fabricaihub —
M365McpServerConfig.cs:125-163and318-330. - [E12] workload-fabricaihub —
M365McpServerDependencies.cs:777-812. - [E13] workload-powerbi @
645d7f529326f5416cec97ebf1694bd0eca8650d—GetSemanticModelSchemaJmesPathTool.cs:14-65. - [E14] workload-powerbi —
GetSemanticModelSchemaToolHandler.cs:146-200andEnrichedModelSchemaCache.cs:286-304. - [E15] workload-fabricaihub —
GetReportMetadataJmesPathTool.cs:14-65. - [E16] workload-powerbi —
GetReportMetadataToolHandler.cs:105-226andReportSchemaCache.cs:224-236. - [E17] workload-powerbi —
ValueSearchTool.cs:25-160. - [E18] workload-powerbi —
ValueSearchToolService.cs:177-207. - [E19] workload-powerbi —
ExecuteDaxQueryTool.cs:40-155. - [E20] workload-powerbi —
ExecuteDaxQueryToolService.cs:20-105. - [E21] workload-xdw @
16169febb6bd73fe9ea9b6be540e8e0d6f4dca92—SqlEndpointMcpController.cs:31-170. - [E22] workload-xdw —
ExecuteQueryToolWrapper.cs:20-88. - [E23] workload-xdw —
ExecuteQueryOptions.cs:12-22andExecuteQueryTool.cs:42-187. - [E24] workload-xdw —
McpToolResponseHelper.cs:24-120. - [E25] workload-xdw —
ControllerAuthenticatorsMap.cs:31-54. - [E26] workload-xdw —
SqlEndpointQueryExecutor.cs:82-94and240-394. - [E27] skills-for-fabric @
3c8a1805061e97ca13ba5ddc773dcb9cbc83aa8e/ AdcSkills 0.3.12 —.mcp.jsonandsqldw-cli/SKILL.md.