@microsoft/agents-a365-tooling 0.1.0-preview.95 → 0.2.0-preview.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/cjs/McpToolServerConfigurationService.d.ts +75 -7
  2. package/dist/cjs/McpToolServerConfigurationService.d.ts.map +1 -1
  3. package/dist/cjs/McpToolServerConfigurationService.js +193 -15
  4. package/dist/cjs/McpToolServerConfigurationService.js.map +1 -1
  5. package/dist/cjs/Utility.d.ts +32 -6
  6. package/dist/cjs/Utility.d.ts.map +1 -1
  7. package/dist/cjs/Utility.js +59 -19
  8. package/dist/cjs/Utility.js.map +1 -1
  9. package/dist/cjs/configuration/ToolingConfiguration.d.ts +51 -0
  10. package/dist/cjs/configuration/ToolingConfiguration.d.ts.map +1 -0
  11. package/dist/cjs/configuration/ToolingConfiguration.js +118 -0
  12. package/dist/cjs/configuration/ToolingConfiguration.js.map +1 -0
  13. package/dist/cjs/configuration/ToolingConfigurationOptions.d.ts +23 -0
  14. package/dist/cjs/configuration/ToolingConfigurationOptions.d.ts.map +1 -0
  15. package/dist/cjs/configuration/ToolingConfigurationOptions.js +5 -0
  16. package/dist/cjs/configuration/ToolingConfigurationOptions.js.map +1 -0
  17. package/dist/cjs/configuration/index.d.ts +9 -0
  18. package/dist/cjs/configuration/index.d.ts.map +1 -0
  19. package/dist/cjs/configuration/index.js +28 -0
  20. package/dist/cjs/configuration/index.js.map +1 -0
  21. package/dist/cjs/contracts.d.ts +6 -0
  22. package/dist/cjs/contracts.d.ts.map +1 -1
  23. package/dist/cjs/index.d.ts +1 -0
  24. package/dist/cjs/index.d.ts.map +1 -1
  25. package/dist/cjs/index.js +3 -0
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/esm/McpToolServerConfigurationService.d.ts +75 -7
  28. package/dist/esm/McpToolServerConfigurationService.d.ts.map +1 -1
  29. package/dist/esm/McpToolServerConfigurationService.js +194 -16
  30. package/dist/esm/McpToolServerConfigurationService.js.map +1 -1
  31. package/dist/esm/Utility.d.ts +32 -6
  32. package/dist/esm/Utility.d.ts.map +1 -1
  33. package/dist/esm/Utility.js +59 -19
  34. package/dist/esm/Utility.js.map +1 -1
  35. package/dist/esm/configuration/ToolingConfiguration.d.ts +51 -0
  36. package/dist/esm/configuration/ToolingConfiguration.d.ts.map +1 -0
  37. package/dist/esm/configuration/ToolingConfiguration.js +113 -0
  38. package/dist/esm/configuration/ToolingConfiguration.js.map +1 -0
  39. package/dist/esm/configuration/ToolingConfigurationOptions.d.ts +23 -0
  40. package/dist/esm/configuration/ToolingConfigurationOptions.d.ts.map +1 -0
  41. package/dist/esm/configuration/ToolingConfigurationOptions.js +4 -0
  42. package/dist/esm/configuration/ToolingConfigurationOptions.js.map +1 -0
  43. package/dist/esm/configuration/index.d.ts +9 -0
  44. package/dist/esm/configuration/index.d.ts.map +1 -0
  45. package/dist/esm/configuration/index.js +11 -0
  46. package/dist/esm/configuration/index.js.map +1 -0
  47. package/dist/esm/contracts.d.ts +6 -0
  48. package/dist/esm/contracts.d.ts.map +1 -1
  49. package/dist/esm/index.d.ts +1 -0
  50. package/dist/esm/index.d.ts.map +1 -1
  51. package/dist/esm/index.js +3 -0
  52. package/dist/esm/index.js.map +1 -1
  53. package/package.json +3 -3
@@ -1,34 +1,85 @@
1
- import { TurnContext } from '@microsoft/agents-hosting';
2
- import { OperationResult } from '@microsoft/agents-a365-runtime';
1
+ import { TurnContext, Authorization } from '@microsoft/agents-hosting';
2
+ import { OperationResult, IConfigurationProvider } from '@microsoft/agents-a365-runtime';
3
3
  import { MCPServerConfig, McpClientTool, ToolOptions } from './contracts';
4
4
  import { ChatHistoryMessage } from './models/index';
5
+ import { ToolingConfiguration } from './configuration';
5
6
  /**
6
7
  * Service responsible for discovering and normalizing MCP (Model Context Protocol)
7
8
  * tool servers and producing configuration objects consumable by the Claude SDK.
8
9
  */
9
10
  export declare class McpToolServerConfigurationService {
10
11
  private readonly logger;
12
+ private readonly configProvider;
11
13
  /**
12
14
  * Construct a McpToolServerConfigurationService.
15
+ * @param configProvider Optional configuration provider. Defaults to defaultToolingConfigurationProvider if not specified.
13
16
  */
14
- constructor();
17
+ constructor(configProvider?: IConfigurationProvider<ToolingConfiguration>);
15
18
  /**
16
19
  * Return MCP server definitions for the given agent. In development (NODE_ENV=Development) this reads the local ToolingManifest.json; otherwise it queries the remote tooling gateway.
17
20
  *
21
+ * @deprecated Use the overload with TurnContext and Authorization parameters instead to enable x-ms-agentid header support and automatic token generation.
18
22
  * @param agenticAppId The agentic app id for which to discover servers.
19
- * @param authToken Optional bearer token used when querying the remote tooling gateway.
23
+ * @param authToken Bearer token used when querying the remote tooling gateway.
20
24
  * @returns A promise resolving to an array of normalized MCP server configuration objects.
21
25
  */
22
26
  listToolServers(agenticAppId: string, authToken: string): Promise<MCPServerConfig[]>;
23
27
  /**
24
28
  * Return MCP server definitions for the given agent. In development (NODE_ENV=Development) this reads the local ToolingManifest.json; otherwise it queries the remote tooling gateway.
25
29
  *
30
+ * @deprecated Use the overload with TurnContext and Authorization parameters instead to enable x-ms-agentid header support and automatic token generation.
26
31
  * @param agenticAppId The agentic app id for which to discover servers.
27
- * @param authToken Optional bearer token used when querying the remote tooling gateway.
32
+ * @param authToken Bearer token used when querying the remote tooling gateway.
28
33
  * @param options Optional tool options when calling the gateway.
29
34
  * @returns A promise resolving to an array of normalized MCP server configuration objects.
30
35
  */
31
36
  listToolServers(agenticAppId: string, authToken: string, options?: ToolOptions): Promise<MCPServerConfig[]>;
37
+ /**
38
+ * Return MCP server definitions for the given agent. In development (NODE_ENV=Development) this reads the local ToolingManifest.json; otherwise it queries the remote tooling gateway.
39
+ * This overload automatically resolves the agenticAppId from the TurnContext and generates the auth token if not provided.
40
+ *
41
+ * @param turnContext The TurnContext of the current request.
42
+ * @param authorization Authorization object for token exchange.
43
+ * @param authHandlerName The name of the auth handler to use for token exchange.
44
+ * @param authToken Optional bearer token. If not provided, will be auto-generated via token exchange.
45
+ * @param options Optional tool options when calling the gateway.
46
+ * @returns A promise resolving to an array of normalized MCP server configuration objects.
47
+ */
48
+ listToolServers(turnContext: TurnContext, authorization: Authorization, authHandlerName: string, authToken?: string, options?: ToolOptions): Promise<MCPServerConfig[]>;
49
+ /**
50
+ * Acquire one token per unique audience across the provided server list and attach
51
+ * the correct `Authorization: Bearer` header to each server's headers.
52
+ * V1 servers (no `audience` field, or ATG AppId) all share the same token (one exchange).
53
+ * V2 servers each get a token scoped to their own audience GUID.
54
+ * Token acquisition is delegated to `acquire`, enabling different strategies in dev
55
+ * (env vars via createDevTokenAcquirer) and prod (OBO via createOboTokenAcquirer)
56
+ * while keeping scope resolution, deduplication, and header attachment identical.
57
+ */
58
+ private attachPerAudienceTokens;
59
+ /**
60
+ * Returns a TokenAcquirer that resolves tokens from environment variables (local dev only).
61
+ * Resolution order per server:
62
+ * 1. BEARER_TOKEN_<MCPSERVERNAME_UPPER> — per-server token (effective for V2 unique audiences)
63
+ * 2. BEARER_TOKEN — shared fallback (V1 servers share one token)
64
+ * Returns null when neither variable is set; no Authorization header is attached.
65
+ * Emits a warning when a V2 server (distinct audience) falls back to the shared BEARER_TOKEN,
66
+ * because that token is scoped to the shared ATG audience and will cause a 401 at the server.
67
+ */
68
+ private createDevTokenAcquirer;
69
+ /**
70
+ * Returns a TokenAcquirer for the deprecated legacy (agenticAppId, authToken) overload in prod.
71
+ * V1 servers (ATG shared scope) receive the caller-supplied authToken directly.
72
+ * V2 servers (per-audience scope) throw immediately — OBO exchange requires Authorization and
73
+ * authHandlerName which the legacy signature does not provide; callers must migrate to the
74
+ * TurnContext-based overload.
75
+ */
76
+ private createLegacyProdTokenAcquirer;
77
+ /**
78
+ * Returns a TokenAcquirer that performs OBO token exchange via AgenticAuthenticationService.
79
+ * Throws if the exchange returns null so callers receive an explicit error rather than a
80
+ * silently missing Authorization header.
81
+ */
82
+ private createOboTokenAcquirer;
32
83
  /**
33
84
  * Connect to the MCP server and return tools with names prefixed by the server name.
34
85
  * Throws if the server URL is missing or the client fails to list tools.
@@ -69,6 +120,7 @@ export declare class McpToolServerConfigurationService {
69
120
  *
70
121
  * @param agenticAppId The agentic app id used by the tooling gateway to scope results.
71
122
  * @param authToken Optional Bearer token to include in the Authorization header when calling the gateway.
123
+ * @param turnContext Optional TurnContext for extracting agent blueprint ID for request headers.
72
124
  * @param options Optional tool options when calling the gateway.
73
125
  * @throws Error when the gateway call fails or returns an unexpected payload.
74
126
  */
@@ -100,10 +152,26 @@ export declare class McpToolServerConfigurationService {
100
152
  */
101
153
  private getMCPServerConfigsFromManifest;
102
154
  /**
103
- * Detect if the process is running in a development scenario based on environment variables.
155
+ * Detect if the process is running in a development scenario based on configuration.
104
156
  *
105
- * @returns {boolean} True when running in a development environment.
157
+ * @returns {boolean} True when running in a development environment (NODE_ENV=Development).
106
158
  */
107
159
  private isDevScenario;
160
+ /**
161
+ * Gets the base URL for MCP platform from configuration.
162
+ */
163
+ private getMcpPlatformBaseUrl;
164
+ /**
165
+ * Construct the tooling gateway URL for a given agent identity.
166
+ */
167
+ private getToolingGatewayUrl;
168
+ /**
169
+ * Build the full URL for accessing a specific MCP server.
170
+ */
171
+ private buildMcpServerUrl;
172
+ /**
173
+ * Constructs the endpoint URL for sending chat history.
174
+ */
175
+ private getChatHistoryEndpoint;
108
176
  }
109
177
  //# sourceMappingURL=McpToolServerConfigurationService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpToolServerConfigurationService.d.ts","sourceRoot":"","sources":["../../src/McpToolServerConfigurationService.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAkB,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,eAAe,EAA0B,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAsB,MAAM,gBAAgB,CAAC;AAMxE;;;GAGG;AACH,qBAAa,iCAAiC;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAElC;;OAEG;;IAIH;;;;;;OAMG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAE1F;;;;;;;OAOG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAOjH;;;OAGG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA8B1G;;;;;;;;;;;;OAYG;IACG,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAEpH;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAyE3I;;;;;;;;OAQG;YACW,qCAAqC;IAsBnD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,+BAA+B;IAoC7C;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAItB"}
1
+ {"version":3,"file":"McpToolServerConfigurationService.d.ts","sourceRoot":"","sources":["../../src/McpToolServerConfigurationService.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAkB,sBAAsB,EAA2D,MAAM,gCAAgC,CAAC;AAClK,OAAO,EAAE,eAAe,EAA0B,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAsB,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAmE,MAAM,iBAAiB,CAAC;AAWxH;;;GAGG;AACH,qBAAa,iCAAiC;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+C;IAE9E;;;OAGG;gBACS,cAAc,CAAC,EAAE,sBAAsB,CAAC,oBAAoB,CAAC;IAIzE;;;;;;;OAOG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAE1F;;;;;;;;OAQG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAEjH;;;;;;;;;;OAUG;IACG,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkF7K;;;;;;;;OAQG;YACW,uBAAuB;IAuBrC;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IAcrC;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;OAGG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA8B1G;;;;;;;;;;;;OAYG;IACG,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAEpH;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAyE3I;;;;;;;;;OASG;YACW,qCAAqC;IA8BnD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,+BAA+B;IAuC7C;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAG/B"}
@@ -11,6 +11,7 @@ const path_1 = __importDefault(require("path"));
11
11
  const axios_1 = __importDefault(require("axios"));
12
12
  const agents_a365_runtime_1 = require("@microsoft/agents-a365-runtime");
13
13
  const Utility_1 = require("./Utility");
14
+ const configuration_1 = require("./configuration");
14
15
  const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
15
16
  const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
16
17
  /**
@@ -20,13 +21,155 @@ const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
20
21
  class McpToolServerConfigurationService {
21
22
  /**
22
23
  * Construct a McpToolServerConfigurationService.
24
+ * @param configProvider Optional configuration provider. Defaults to defaultToolingConfigurationProvider if not specified.
23
25
  */
24
- constructor() {
26
+ constructor(configProvider) {
25
27
  this.logger = console;
28
+ this.configProvider = configProvider ?? configuration_1.defaultToolingConfigurationProvider;
26
29
  }
27
- async listToolServers(agenticAppId, authToken, options) {
28
- return await (this.isDevScenario() ? this.getMCPServerConfigsFromManifest() :
29
- this.getMCPServerConfigsFromToolingGateway(agenticAppId, authToken, options));
30
+ async listToolServers(agenticAppIdOrTurnContext, authTokenOrAuthorization, optionsOrAuthHandlerName, authTokenOrOptions, options) {
31
+ // Detect which signature is being used based on the type of the first parameter
32
+ if (typeof agenticAppIdOrTurnContext === 'string') {
33
+ // LEGACY PATH: listToolServers(agenticAppId, authToken, options?)
34
+ const agenticAppId = agenticAppIdOrTurnContext;
35
+ // Runtime validation for legacy signature parameters
36
+ if (typeof authTokenOrAuthorization !== 'string') {
37
+ throw new Error('authToken must be a string when using the legacy listToolServers(agenticAppId, authToken) signature');
38
+ }
39
+ const authToken = authTokenOrAuthorization;
40
+ const toolOptions = optionsOrAuthHandlerName;
41
+ const servers = await (this.isDevScenario()
42
+ ? this.getMCPServerConfigsFromManifest()
43
+ : this.getMCPServerConfigsFromToolingGateway(agenticAppId, authToken, undefined, toolOptions));
44
+ // Apply per-audience tokens on the legacy path too, using the same structural path as the
45
+ // new overload so V2 servers are never silently missing an Authorization header.
46
+ // Dev: reads from BEARER_TOKEN_<NAME> / BEARER_TOKEN env vars, supports V1 and V2.
47
+ // Prod: uses the shared authToken for V1 servers; throws for V2 servers (OBO requires
48
+ // Authorization and authHandlerName — use the TurnContext-based overload instead).
49
+ const acquire = this.isDevScenario()
50
+ ? this.createDevTokenAcquirer()
51
+ : this.createLegacyProdTokenAcquirer(authToken);
52
+ return await this.attachPerAudienceTokens(servers, acquire);
53
+ }
54
+ else {
55
+ // NEW PATH: listToolServers(turnContext, authorization, authHandlerName, authToken?, options?)
56
+ const turnContext = agenticAppIdOrTurnContext;
57
+ // Runtime validation for new signature parameters
58
+ if (typeof authTokenOrAuthorization === 'string') {
59
+ throw new Error('authorization must be an Authorization object when using the new listToolServers(turnContext, authorization, authHandlerName) signature');
60
+ }
61
+ if (typeof optionsOrAuthHandlerName !== 'string') {
62
+ throw new Error('authHandlerName must be a string when using the new listToolServers(turnContext, authorization, authHandlerName) signature');
63
+ }
64
+ const authorization = authTokenOrAuthorization;
65
+ const authHandlerName = optionsOrAuthHandlerName;
66
+ let authToken = authTokenOrOptions;
67
+ const toolOptions = options;
68
+ // Auto-generate token if not provided
69
+ if (!authToken) {
70
+ const scopes = [this.configProvider.getConfiguration().mcpPlatformAuthenticationScope];
71
+ authToken = await agents_a365_runtime_1.AgenticAuthenticationService.GetAgenticUserToken(authorization, authHandlerName, turnContext, scopes);
72
+ if (!authToken) {
73
+ throw new Error('Failed to obtain authentication token from token exchange');
74
+ }
75
+ }
76
+ // Note: Token validation (format/expiration) is performed inside getMCPServerConfigsFromToolingGateway()
77
+ // to avoid duplicate validation (it's also called by the legacy path)
78
+ // Resolve agenticAppId from TurnContext
79
+ const agenticAppId = agents_a365_runtime_1.Utility.ResolveAgentIdentity(turnContext, authToken);
80
+ // Discover servers: manifest in dev, gateway in prod
81
+ const servers = await (this.isDevScenario()
82
+ ? this.getMCPServerConfigsFromManifest()
83
+ : this.getMCPServerConfigsFromToolingGateway(agenticAppId, authToken, turnContext, toolOptions));
84
+ // Acquire and attach per-server tokens via the same structural path in both envs.
85
+ // Token source differs: env vars in dev, OBO in prod.
86
+ const acquire = this.isDevScenario()
87
+ ? this.createDevTokenAcquirer()
88
+ : this.createOboTokenAcquirer(authorization, authHandlerName, turnContext);
89
+ return await this.attachPerAudienceTokens(servers, acquire);
90
+ }
91
+ }
92
+ /**
93
+ * Acquire one token per unique audience across the provided server list and attach
94
+ * the correct `Authorization: Bearer` header to each server's headers.
95
+ * V1 servers (no `audience` field, or ATG AppId) all share the same token (one exchange).
96
+ * V2 servers each get a token scoped to their own audience GUID.
97
+ * Token acquisition is delegated to `acquire`, enabling different strategies in dev
98
+ * (env vars via createDevTokenAcquirer) and prod (OBO via createOboTokenAcquirer)
99
+ * while keeping scope resolution, deduplication, and header attachment identical.
100
+ */
101
+ async attachPerAudienceTokens(servers, acquire) {
102
+ // Fetch once so scope resolution and the legacy-path guard use the same value.
103
+ const sharedScope = this.configProvider.getConfiguration().mcpPlatformAuthenticationScope;
104
+ const tokenCache = new Map(); // scope → token (null = no token available)
105
+ const result = [];
106
+ for (const server of servers) {
107
+ const scope = (0, configuration_1.resolveTokenScopeForServer)(server, sharedScope);
108
+ if (!tokenCache.has(scope)) {
109
+ tokenCache.set(scope, await acquire(server, scope));
110
+ }
111
+ const token = tokenCache.get(scope);
112
+ result.push(token
113
+ ? { ...server, headers: { ...server.headers, Authorization: `Bearer ${token}` } }
114
+ : server // no token available — dev no-op; prod acquirer would have thrown already
115
+ );
116
+ }
117
+ return result;
118
+ }
119
+ /**
120
+ * Returns a TokenAcquirer that resolves tokens from environment variables (local dev only).
121
+ * Resolution order per server:
122
+ * 1. BEARER_TOKEN_<MCPSERVERNAME_UPPER> — per-server token (effective for V2 unique audiences)
123
+ * 2. BEARER_TOKEN — shared fallback (V1 servers share one token)
124
+ * Returns null when neither variable is set; no Authorization header is attached.
125
+ * Emits a warning when a V2 server (distinct audience) falls back to the shared BEARER_TOKEN,
126
+ * because that token is scoped to the shared ATG audience and will cause a 401 at the server.
127
+ */
128
+ createDevTokenAcquirer() {
129
+ const sharedScope = this.configProvider.getConfiguration().mcpPlatformAuthenticationScope;
130
+ return (server, scope) => {
131
+ const serverName = server.mcpServerName ?? '';
132
+ const config = this.configProvider.getConfiguration();
133
+ const token = config.getBearerTokenForServer(serverName);
134
+ if (token && !config.hasPerServerBearerToken(serverName) && scope !== sharedScope) {
135
+ this.logger.warn(`Dev: MCP server '${serverName}' requires scope '${scope}' but only BEARER_TOKEN is set. ` +
136
+ `The shared token is scoped to a different audience and will likely cause a 401. ` +
137
+ `Set BEARER_TOKEN_${serverName.toUpperCase()} to a token acquired for the correct audience.`);
138
+ }
139
+ return Promise.resolve(token ?? null);
140
+ };
141
+ }
142
+ /**
143
+ * Returns a TokenAcquirer for the deprecated legacy (agenticAppId, authToken) overload in prod.
144
+ * V1 servers (ATG shared scope) receive the caller-supplied authToken directly.
145
+ * V2 servers (per-audience scope) throw immediately — OBO exchange requires Authorization and
146
+ * authHandlerName which the legacy signature does not provide; callers must migrate to the
147
+ * TurnContext-based overload.
148
+ */
149
+ createLegacyProdTokenAcquirer(authToken) {
150
+ const sharedScope = this.configProvider.getConfiguration().mcpPlatformAuthenticationScope;
151
+ return (server, scope) => {
152
+ if (scope !== sharedScope) {
153
+ throw new Error(`MCP server '${server.mcpServerName}' requires a per-audience token (scope: '${scope}'). ` +
154
+ `Per-audience token exchange is not supported by the deprecated listToolServers(agenticAppId, authToken) overload. ` +
155
+ `Migrate to listToolServers(turnContext, authorization, authHandlerName) instead.`);
156
+ }
157
+ return Promise.resolve(authToken);
158
+ };
159
+ }
160
+ /**
161
+ * Returns a TokenAcquirer that performs OBO token exchange via AgenticAuthenticationService.
162
+ * Throws if the exchange returns null so callers receive an explicit error rather than a
163
+ * silently missing Authorization header.
164
+ */
165
+ createOboTokenAcquirer(authorization, authHandlerName, turnContext) {
166
+ return async (server, scope) => {
167
+ const token = await agents_a365_runtime_1.AgenticAuthenticationService.GetAgenticUserToken(authorization, authHandlerName, turnContext, [scope]);
168
+ if (!token) {
169
+ throw new Error(`Failed to obtain token for MCP server '${server.mcpServerName}' (scope: ${scope})`);
170
+ }
171
+ return token;
172
+ };
30
173
  }
31
174
  /**
32
175
  * Connect to the MCP server and return tools with names prefixed by the server name.
@@ -74,7 +217,7 @@ class McpToolServerConfigurationService {
74
217
  throw new Error('User message is required but not found in turn context');
75
218
  }
76
219
  // Get the endpoint URL
77
- const endpoint = Utility_1.Utility.GetChatHistoryEndpoint();
220
+ const endpoint = this.getChatHistoryEndpoint();
78
221
  this.logger.info(`Sending chat history to endpoint: ${endpoint}`);
79
222
  // Create the request payload
80
223
  const request = {
@@ -117,19 +260,28 @@ class McpToolServerConfigurationService {
117
260
  *
118
261
  * @param agenticAppId The agentic app id used by the tooling gateway to scope results.
119
262
  * @param authToken Optional Bearer token to include in the Authorization header when calling the gateway.
263
+ * @param turnContext Optional TurnContext for extracting agent blueprint ID for request headers.
120
264
  * @param options Optional tool options when calling the gateway.
121
265
  * @throws Error when the gateway call fails or returns an unexpected payload.
122
266
  */
123
- async getMCPServerConfigsFromToolingGateway(agenticAppId, authToken, options) {
267
+ async getMCPServerConfigsFromToolingGateway(agenticAppId, authToken, turnContext, options) {
124
268
  // Validate the authentication token
125
269
  Utility_1.Utility.ValidateAuthToken(authToken);
126
- const configEndpoint = Utility_1.Utility.GetToolingGatewayForDigitalWorker(agenticAppId);
270
+ const configEndpoint = this.getToolingGatewayUrl(agenticAppId);
127
271
  try {
128
272
  const response = await axios_1.default.get(configEndpoint, {
129
- headers: Utility_1.Utility.GetToolRequestHeaders(authToken, undefined, options),
273
+ headers: Utility_1.Utility.GetToolRequestHeaders(authToken, turnContext, options),
130
274
  timeout: 10000 // 10 seconds timeout
131
275
  });
132
- return (response.data) || [];
276
+ const rawServers = response.data || [];
277
+ return rawServers.map(s => ({
278
+ mcpServerName: s.mcpServerName,
279
+ url: s.url,
280
+ headers: s.headers,
281
+ audience: s.audience,
282
+ scope: s.scope,
283
+ publisher: s.publisher,
284
+ }));
133
285
  }
134
286
  catch (err) {
135
287
  const error = err;
@@ -183,8 +335,11 @@ class McpToolServerConfigurationService {
183
335
  }
184
336
  return {
185
337
  mcpServerName: serverName,
186
- url: s.url || Utility_1.Utility.BuildMcpServerUrl(serverName),
187
- headers: s.headers
338
+ url: s.url || this.buildMcpServerUrl(serverName),
339
+ headers: s.headers,
340
+ audience: s.audience,
341
+ scope: s.scope,
342
+ publisher: s.publisher,
188
343
  };
189
344
  });
190
345
  }
@@ -195,13 +350,36 @@ class McpToolServerConfigurationService {
195
350
  }
196
351
  }
197
352
  /**
198
- * Detect if the process is running in a development scenario based on environment variables.
353
+ * Detect if the process is running in a development scenario based on configuration.
199
354
  *
200
- * @returns {boolean} True when running in a development environment.
355
+ * @returns {boolean} True when running in a development environment (NODE_ENV=Development).
201
356
  */
202
357
  isDevScenario() {
203
- const environment = process.env.NODE_ENV || '';
204
- return environment.toLowerCase() === 'development';
358
+ return this.configProvider.getConfiguration().useToolingManifest;
359
+ }
360
+ /**
361
+ * Gets the base URL for MCP platform from configuration.
362
+ */
363
+ getMcpPlatformBaseUrl() {
364
+ return this.configProvider.getConfiguration().mcpPlatformEndpoint;
365
+ }
366
+ /**
367
+ * Construct the tooling gateway URL for a given agent identity.
368
+ */
369
+ getToolingGatewayUrl(agenticAppId) {
370
+ return `${this.getMcpPlatformBaseUrl()}/agents/v2/${agenticAppId}/mcpServers`;
371
+ }
372
+ /**
373
+ * Build the full URL for accessing a specific MCP server.
374
+ */
375
+ buildMcpServerUrl(serverName) {
376
+ return `${this.getMcpPlatformBaseUrl()}/agents/servers/${serverName}/`;
377
+ }
378
+ /**
379
+ * Constructs the endpoint URL for sending chat history.
380
+ */
381
+ getChatHistoryEndpoint() {
382
+ return `${this.getMcpPlatformBaseUrl()}/agents/real-time-threat-protection/chat-message`;
205
383
  }
206
384
  }
207
385
  exports.McpToolServerConfigurationService = McpToolServerConfigurationService;
@@ -1 +1 @@
1
- {"version":3,"file":"McpToolServerConfigurationService.js","sourceRoot":"","sources":["../../src/McpToolServerConfigurationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"McpToolServerConfigurationService.js","sourceRoot":"","sources":["../../src/McpToolServerConfigurationService.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  import { TurnContext } from '@microsoft/agents-hosting';
2
+ import { IConfigurationProvider } from '@microsoft/agents-a365-runtime';
2
3
  import { ToolOptions } from './contracts';
4
+ import { ToolingConfiguration } from './configuration';
3
5
  export declare class Utility {
4
6
  static readonly HEADER_CHANNEL_ID = "x-ms-channel-id";
5
7
  static readonly HEADER_SUBCHANNEL_ID = "x-ms-subchannel-id";
6
8
  static readonly HEADER_USER_AGENT = "User-Agent";
9
+ /** Header name for sending the agent identifier to MCP platform for logging/analytics. */
10
+ static readonly HEADER_AGENT_ID = "x-ms-agentid";
7
11
  /**
8
12
  * Compose standard headers for MCP tooling requests.
9
13
  * Includes Authorization bearer token when provided, and optionally includes channel and subchannel identifiers for routing.
@@ -14,6 +18,18 @@ export declare class Utility {
14
18
  * @returns A headers record suitable for HTTP requests.
15
19
  */
16
20
  static GetToolRequestHeaders(authToken?: string, turnContext?: TurnContext, options?: ToolOptions): Record<string, string>;
21
+ /**
22
+ * Resolves the best available agent identifier for the x-ms-agentid header.
23
+ * Priority: TurnContext.agenticAppBlueprintId > token claims (xms_par_app_azp > appid > azp) > application name
24
+ *
25
+ * Note: This differs from RuntimeUtility.ResolveAgentIdentity() which resolves the agenticAppId
26
+ * for URL construction. This method resolves the identifier specifically for the x-ms-agentid header.
27
+ *
28
+ * @param authToken The authentication token to extract claims from.
29
+ * @param turnContext Optional TurnContext to extract agent blueprint ID from.
30
+ * @returns Agent ID string or undefined if not available.
31
+ */
32
+ private static resolveAgentIdForHeader;
17
33
  /**
18
34
  * Validates a JWT authentication token.
19
35
  * Checks that the token is a valid JWT and is not expired.
@@ -36,18 +52,22 @@ export declare class Utility {
36
52
  *
37
53
  * Example:
38
54
  * Utility.GetToolingGatewayForDigitalWorker(agenticAppId)
39
- * // => "https://agent365.svc.cloud.microsoft/agents/{agenticAppId}/mcpServers"
55
+ * // => "https://agent365.svc.cloud.microsoft/agents/v2/{agenticAppId}/mcpServers"
40
56
  *
41
57
  * @param agenticAppId - The unique identifier for the agent identity.
58
+ * @param configProvider - Optional configuration provider. Defaults to defaultToolingConfigurationProvider.
42
59
  * @returns A fully-qualified URL pointing at the tooling gateway for the agent.
60
+ * @deprecated This method is for internal use only. Use McpToolServerConfigurationService.listToolServers() instead.
43
61
  */
44
- static GetToolingGatewayForDigitalWorker(agenticAppId: string): string;
62
+ static GetToolingGatewayForDigitalWorker(agenticAppId: string, configProvider?: IConfigurationProvider<ToolingConfiguration>): string;
45
63
  /**
46
64
  * Get the base URL used to query MCP environments.
47
65
  *
66
+ * @param configProvider - Optional configuration provider. Defaults to defaultToolingConfigurationProvider.
48
67
  * @returns The base MCP environments URL.
68
+ * @deprecated This method is for internal use only. Use McpToolServerConfigurationService instead.
49
69
  */
50
- static GetMcpBaseUrl(): string;
70
+ static GetMcpBaseUrl(configProvider?: IConfigurationProvider<ToolingConfiguration>): string;
51
71
  /**
52
72
  * Build the full URL for accessing a specific MCP server.
53
73
  *
@@ -56,25 +76,31 @@ export declare class Utility {
56
76
  * // => "https://agent365.svc.cloud.microsoft/agents/servers/MyServer/"
57
77
  *
58
78
  * @param serverName - The MCP server resource name.
79
+ * @param configProvider - Optional configuration provider. Defaults to defaultToolingConfigurationProvider.
59
80
  * @returns The fully-qualified MCP server URL including trailing slash.
81
+ * @deprecated This method is for internal use only. Use McpToolServerConfigurationService instead.
60
82
  */
61
- static BuildMcpServerUrl(serverName: string): string;
83
+ static BuildMcpServerUrl(serverName: string, configProvider?: IConfigurationProvider<ToolingConfiguration>): string;
62
84
  /**
63
- * Gets the base URL for MCP platform, defaults to production URL if not set.
85
+ * Gets the base URL for MCP platform from configuration.
64
86
  *
87
+ * @param configProvider - Optional configuration provider. Defaults to defaultToolingConfigurationProvider.
65
88
  * @returns The base URL for MCP platform.
89
+ * @deprecated This method is for internal use only. Use ToolingConfiguration.mcpPlatformEndpoint instead.
66
90
  */
67
91
  private static getMcpPlatformBaseUrl;
68
92
  /**
69
93
  * Constructs the endpoint URL for sending chat history to the MCP platform for real-time threat protection.
70
94
  *
95
+ * @param configProvider - Optional configuration provider. Defaults to defaultToolingConfigurationProvider.
71
96
  * @returns An absolute URL that tooling components can use to send or retrieve chat messages for
72
97
  * real-time threat protection scenarios.
73
98
  * @remarks
74
99
  * Call this method when constructing HTTP requests that need to access the chat-message history
75
100
  * for real-time threat protection. The returned URL already includes the MCP platform base address
76
101
  * and the fixed path segment `/agents/real-time-threat-protection/chat-message`.
102
+ * @deprecated This method is for internal use only. Use McpToolServerConfigurationService.sendChatHistory() instead.
77
103
  */
78
- static GetChatHistoryEndpoint(): string;
104
+ static GetChatHistoryEndpoint(configProvider?: IConfigurationProvider<ToolingConfiguration>): string;
79
105
  }
80
106
  //# sourceMappingURL=Utility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Utility.d.ts","sourceRoot":"","sources":["../../src/Utility.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,qBAAa,OAAO;IAClB,gBAAuB,iBAAiB,qBAAqB;IAC7D,gBAAuB,oBAAoB,wBAAwB;IACnE,gBAAuB,iBAAiB,gBAAgB;IAExD;;;;;;;;OAQG;WACW,qBAAqB,CACjC,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAyBzB;;;;;;OAMG;WACW,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIpE;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAqChC;;;;;;;;;;OAUG;WACW,iCAAiC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAK7E;;;;OAIG;WACW,aAAa,IAAI,MAAM;IAIrC;;;;;;;;;MASE;WACY,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAI,MAAM;IAK5D;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAQpC;;;;;;;;;OASG;WACW,sBAAsB,IAAI,MAAM;CAG/C"}
1
+ {"version":3,"file":"Utility.d.ts","sourceRoot":"","sources":["../../src/Utility.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAA6B,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAuC,MAAM,iBAAiB,CAAC;AAE5F,qBAAa,OAAO;IAClB,gBAAuB,iBAAiB,qBAAqB;IAC7D,gBAAuB,oBAAoB,wBAAwB;IACnE,gBAAuB,iBAAiB,gBAAgB;IACxD,0FAA0F;IAC1F,gBAAuB,eAAe,kBAAkB;IAExD;;;;;;;;OAQG;WACW,qBAAqB,CACjC,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA+BzB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAsBtC;;;;;;OAMG;WACW,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIpE;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAqChC;;;;;;;;;;;;OAYG;WACW,iCAAiC,CAC7C,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,GAC5D,MAAM;IAIT;;;;;;OAMG;WACW,aAAa,CAAC,cAAc,CAAC,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,GAAG,MAAM;IAIlG;;;;;;;;;;;MAWE;WACY,iBAAiB,CAC7B,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,GAC5D,MAAM;IAKT;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAKpC;;;;;;;;;;;OAWG;WACW,sBAAsB,CAAC,cAAc,CAAC,EAAE,sBAAsB,CAAC,oBAAoB,CAAC,GAAG,MAAM;CAG5G"}