diff --git a/markdown-to-html/src/McpSamples.MarkdownToHtml.HybridApp/McpSamples.MarkdownToHtml.HybridApp.csproj b/markdown-to-html/src/McpSamples.MarkdownToHtml.HybridApp/McpSamples.MarkdownToHtml.HybridApp.csproj index 70d94966..3b05b1b9 100644 --- a/markdown-to-html/src/McpSamples.MarkdownToHtml.HybridApp/McpSamples.MarkdownToHtml.HybridApp.csproj +++ b/markdown-to-html/src/McpSamples.MarkdownToHtml.HybridApp/McpSamples.MarkdownToHtml.HybridApp.csproj @@ -15,6 +15,7 @@ + diff --git a/markdown-to-html/src/McpSamples.MarkdownToHtml.HybridApp/Tools/HtmlToMarkdownTool.cs b/markdown-to-html/src/McpSamples.MarkdownToHtml.HybridApp/Tools/HtmlToMarkdownTool.cs new file mode 100644 index 00000000..39443940 --- /dev/null +++ b/markdown-to-html/src/McpSamples.MarkdownToHtml.HybridApp/Tools/HtmlToMarkdownTool.cs @@ -0,0 +1,47 @@ +using System.ComponentModel; +using ReverseMarkdown; + +using ModelContextProtocol.Server; + +namespace McpSamples.MarkdownToHtml.HybridApp.Tools; + +/// +/// This provides interfaces for the HTML to markdown tool. +/// +public interface IHtmlToMarkdownTool +{ + /// + /// Converts HTML text to markdown. + /// + /// + /// + Task ConvertAsync(string html); +} + +/// +/// This represents the tool entity for converting HTML to markdown. +/// +/// +[McpServerToolType] +public class HtmlToMarkdownTool(ILogger logger) : IHtmlToMarkdownTool +{ + [McpServerTool(Name = "convert_html_to_markdown", Title = "Convert HTML to Markdown")] + [Description("Converts HTML text to Markdown.")] + public async Task ConvertAsync([Description("The HTML text")] string html) + { + var converter = new Converter(); + var markdown = default(string); + + try + { + markdown = converter.Convert(html); + } + catch (Exception ex) + { + logger.LogError(ex, "Error converting HTML to Markdown"); + markdown = $"Error: {ex.Message}"; + } + + return await Task.FromResult(markdown); + } +}