csharp-sdk/docs/concepts/logging/samples/server/Tools/LoggingTools.cs
Jeff Handley 314bdb2f49
Refine 2.0.0 concept documentation (#1742)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 782b5bad-4046-49ec-93a6-72768b5b7521
Copilot-Session: 4b938335-418c-4ee7-8287-6c70d9148b89
2026-07-27 20:15:16 -07:00

45 lines
1.5 KiB
C#

using System.ComponentModel;
using ModelContextProtocol.Protocol;
using ModelContextProtocol.Server;
namespace Logging.Tools;
[McpServerToolType]
public class LoggingTools
{
[McpServerTool, Description("Demonstrates a tool that produces log messages")]
public static async Task<string> LoggingTool(
RequestContext<CallToolRequestParams> context,
int duration = 10,
int steps = 10)
{
var progressToken = context.Params.ProgressToken;
var stepDuration = duration / steps;
// <snippet_LoggingConfiguration>
ILoggerProvider loggerProvider = context.Server.AsClientLoggerProvider();
ILogger logger = loggerProvider.CreateLogger("LoggingTools");
// </snippet_LoggingConfiguration>
for (int i = 1; i <= steps; i++)
{
await Task.Delay(stepDuration * 1000);
try
{
logger.LogCritical("A critical log message");
logger.LogError("An error log message");
logger.LogWarning("A warning log message");
logger.LogInformation("An informational log message");
logger.LogDebug("A debug log message");
logger.LogTrace("A trace log message");
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred while logging messages");
}
}
return $"Long running tool completed. Duration: {duration} seconds. Steps: {steps}.";
}
}