UNPKG

poml-mcp

Version:

MCP server that enhances user prompts using POML-style structure

41 lines (36 loc) 1.47 kB
// Centralized POML conventions and helpers used by the MCP server // Upstream reference: https://github.com/microsoft/poml export const DEFAULT_OUTPUT_FORMAT = [ "Title", "Introduction (purpose/context)", "Main Content (well-structured sections)", "Examples (if relevant)", "Conclusion (summary + next steps)", ]; export const DEFAULT_STYLE_BASICS = [ "Clarity: concise, concrete, unambiguous", "Structure: use headings, lists, tables where helpful", ]; export const DEFAULT_CONSTRAINTS_BASICS = [ "Cite assumptions and ask for missing info succinctly", "Avoid hallucinations; say 'not available' for missing data", ]; export function buildPoml({ task, outputFormatItems = [], styleItems = [], includeItems = [], constraintItems = [] }) { const list = (items) => items.map((i) => ` <item>${i}</item>`).join("\n"); const section = (caption, items) => items.length ? `\n<cp className="instruction" caption="${caption}" captionSerialized="${caption.toLowerCase()}">\n<list>\n${list(items)}\n</list>\n</cp>` : ""; const outputFormat = outputFormatItems.length ? `\n<output-format className="instruction">\n<list>\n${list(outputFormatItems)}\n</list>\n</output-format>` : ""; return ( `<poml>\n` + `<task className="instruction">${task}</task>` + outputFormat + section("Style", styleItems) + section("Include", includeItems) + section("Constraints", constraintItems) + `\n</poml>` ); }