poml-mcp
Version:
MCP server that enhances user prompts using POML-style structure
41 lines (36 loc) • 1.47 kB
JavaScript
// 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>`
);
}