This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-mcp-server.git

commit 02e911a1b3b778e260d42c3c3c95fdd6441b018a
Author: Robert Munteanu <[email protected]>
AuthorDate: Fri Dec 12 17:23:19 2025 +0100

    feat(mcp-server): do not output front matter when rendering prompt, only 
replace args with non-empty values
---
 .../impl/contribs/DiscoveredPromptBuilder.java      | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/mcp/server/impl/contribs/DiscoveredPromptBuilder.java
 
b/src/main/java/org/apache/sling/mcp/server/impl/contribs/DiscoveredPromptBuilder.java
index ca2f9a7..99f2335 100644
--- 
a/src/main/java/org/apache/sling/mcp/server/impl/contribs/DiscoveredPromptBuilder.java
+++ 
b/src/main/java/org/apache/sling/mcp/server/impl/contribs/DiscoveredPromptBuilder.java
@@ -18,7 +18,6 @@
  */
 package org.apache.sling.mcp.server.impl.contribs;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -40,6 +39,7 @@ import 
org.commonmark.ext.front.matter.YamlFrontMatterExtension;
 import org.commonmark.ext.front.matter.YamlFrontMatterVisitor;
 import org.commonmark.node.Node;
 import org.commonmark.parser.Parser;
+import org.commonmark.renderer.markdown.MarkdownRenderer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -133,16 +133,27 @@ class DiscoveredPromptBuilder {
                 if (encoding == null) {
                     encoding = StandardCharsets.UTF_8.name();
                 }
+
+                Parser parser = Parser.builder()
+                        .extensions(List.of(YamlFrontMatterExtension.create()))
+                        .build();
+
                 try (InputStream stream = 
promptResource.adaptTo(InputStream.class)) {
-                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                    stream.transferTo(baos);
-                    String contents = baos.toString(encoding);
+
+                    Node node = parser.parseReader(new 
InputStreamReader(stream, encoding));
+
+                    // Render markdown without the front matter extension for 
clarity and for keeping
+                    // the context usage low
+                    MarkdownRenderer renderer = 
MarkdownRenderer.builder().build();
+                    String contents = renderer.render(node);
 
                     for (PromptArgument arg : arguments) {
                         String placeholder = "{" + arg.name() + "}";
                         Object requestedArg = req.arguments().get(arg.name());
                         String value = requestedArg != null ? 
requestedArg.toString() : "";
-                        contents = contents.replace(placeholder, value);
+                        if (!value.isEmpty()) {
+                            contents = contents.replace(placeholder, value);
+                        }
                     }
 
                     return List.of(new PromptMessage(Role.ASSISTANT, new 
TextContent(contents)));

Reply via email to