// Copyright (c) Microsoft. All rights reserved. using System; using Microsoft.Extensions.AI; using Microsoft.Shared.Diagnostics; namespace Microsoft.Agents.ObjectModel; /// /// Extension methods for . /// internal static class McpServerToolExtensions { /// /// Creates a from a . /// /// Instance of internal static HostedMcpServerTool CreateHostedMcpTool(this McpServerTool tool) { Throw.IfNull(tool); Throw.IfNull(tool.ServerName?.LiteralValue); Throw.IfNull(tool.Connection); var connection = tool.Connection as AnonymousConnection ?? throw new ArgumentException("Only AnonymousConnection is supported for MCP Server Tool connections.", nameof(tool)); var serverUrl = connection.Endpoint?.LiteralValue; Throw.IfNullOrEmpty(serverUrl, nameof(connection.Endpoint)); return new HostedMcpServerTool(tool.ServerName.LiteralValue, serverUrl) { ServerDescription = tool.ServerDescription?.LiteralValue, AllowedTools = tool.AllowedTools?.LiteralValue, ApprovalMode = tool.ApprovalMode?.AsHostedMcpServerToolApprovalMode(), }; } }