diff --git a/Program.cs b/Program.cs index 641dd42..135193c 100644 --- a/Program.cs +++ b/Program.cs @@ -116,20 +116,30 @@ async Task PostWithRetryAsync(string requestUri, object bod name: "tavily_search", description: "A search engine optimized for comprehensive, accurate, and trusted results."); -// Microsoft Learn's remote MCP server exposes docs search/fetch tools the -// Researcher can call alongside Tavily for authoritative Microsoft/Azure content. -await using McpClient microsoftLearnMcp = await McpClient.CreateAsync( - new HttpClientTransport(new HttpClientTransportOptions - { - Endpoint = new Uri("https://learn.microsoft.com/api/mcp"), - Name = "microsoft-learn", - })); -IList microsoftLearnTools = await microsoftLearnMcp.ListToolsAsync(); - -List researcherTools = [tavilyTool, .. microsoftLearnTools]; - // Creating a callable object using ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); +ILogger startupLogger = loggerFactory.CreateLogger("BlogWriter.Startup"); + +// Microsoft Learn's remote MCP server exposes docs search/fetch tools the +// Researcher can call alongside Tavily for authoritative Microsoft/Azure content. +// If the remote endpoint is unreachable/slow/erroring at startup, don't let it +// take down the whole app — fall back to Tavily-only tools. +List researcherTools = [tavilyTool]; +try +{ + McpClient microsoftLearnMcp = await McpClient.CreateAsync( + new HttpClientTransport(new HttpClientTransportOptions + { + Endpoint = new Uri("https://learn.microsoft.com/api/mcp"), + Name = "microsoft-learn", + })); + IList microsoftLearnTools = await microsoftLearnMcp.ListToolsAsync(); + researcherTools.AddRange(microsoftLearnTools); +} +catch (Exception ex) +{ + startupLogger.LogWarning(ex, "Microsoft Learn MCP server unavailable; continuing with Tavily-only research tools."); +} var bloggerAgent = new BloggerAgent(llm, chatOptions, loggerFactory.CreateLogger()); var researcherAgent = new ResearcherAgent(llm, chatOptions, researcherTools, loggerFactory.CreateLogger()); diff --git a/ResearcherAgent.cs b/ResearcherAgent.cs index 65f6bd5..0d809af 100644 --- a/ResearcherAgent.cs +++ b/ResearcherAgent.cs @@ -58,9 +58,8 @@ public ResearcherAgent(IChatClient llm, ChatOptions chatOptions, IEnumerable { _logger.LogInformation( - "Researcher invoking tool '{Tool}' with arguments {Arguments}", - context.Function.Name, - context.Arguments); + "Researcher invoking tool '{Tool}'...", + context.Function.Name); return await next(context, cancellationToken); })