Produkt
MCP-Client-Integration
PromptFlowEngine spricht das Model Context Protocol, sodass jeder MCP-Client (GitHub-Copilot-Agentenmodus, Claude Desktop, Claude Code, Cursor oder Ihr eigener Agent) die Engine als Tools aufrufen kann. Ihr Assistent kann dann einen Prompt als Schritt seiner eigenen Arbeit prüfen, umstrukturieren und bereinigen, statt dass Sie das von Hand tun.
@promptflow/mcp-server v2.1.0, Servername promptflow-engine). Ihr KI-Tool ist der MCP-Client, der sich damit verbindet.Einrichtung für Claude Code, Windsurf und Gemini CLI, ein TypeScript-Client-Beispiel und Fehlerbehebung: PromptFlowEngine verbinden.
So verbindet es sich
MCP client (Copilot, Claude, Cursor, your agent)
│ spawns a local process and talks JSON-RPC over stdio
▼
promptflow-mcp (node packages/mcp-server/dist/bin.js)
│ validates arguments, runs the engine in-process
▼
@promptflow/engine no network, no model calls, no files readDer Transport ist ausschließlich stdio. Der Server läuft auf Ihrem Rechner als Kindprozess des Clients, liest nur die übergebenen Argumente und macht keine Netzwerkaufrufe.
Authentifizierung
Sie wird weder benötigt noch unterstützt: Es gibt keinen API-Schlüssel, kein Konto und kein Token. Der Zugriff wird von Ihrem Betriebssystem gesteuert, da nur ein von Ihnen gestarteter Prozess über stdin und stdout mit dem Server sprechen kann. Es gibt keinen gehosteten oder HTTP-MCP-Endpunkt; für die Nutzung aus der Ferne rufen Sie stattdessen die HTTP-API auf.
Konfigurieren
Bauen Sie ihn aus einem Checkout des PromptFlowEngine-Repositorys (die npm-Veröffentlichung steht noch aus) und richten Sie Ihren Client auf dist/bin.js:
pnpm --filter @promptflow/engine build && pnpm --filter @promptflow/mcp-server build{
"servers": {
"promptflow": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/checkout/packages/mcp-server/dist/bin.js"]
}
}
}{
"mcpServers": {
"promptflow": { "command": "node", "args": ["/absolute/path/to/checkout/packages/mcp-server/dist/bin.js"] }
}
}Die VS-Code-Erweiterung enthält denselben Server und schreibt den ersten Eintrag für Sie.
| Umgebungsvariable | Standard | Zweck |
|---|---|---|
PROMPTFLOW_MCP_MAX_PROMPT_CHARS | 100000 | Maximale Zeichenzahl pro Textargument (harte Obergrenze 2.000.000). |
PROMPTFLOW_MCP_LOG | nicht gesetzt | debug protokolliert Tool-Name, Eingabegröße, Ergebnis und Dauer auf stderr. Nie Inhalte. |
Funktionen: Tools (19)
| Tool | Beschreibung |
|---|---|
optimize_prompt | Optimize a prompt with deterministic, verified transforms (duplicates, filler, optional sections). Every candidate is checked to preserve all sentences, requirements, code, and variables; the original is kept if nothing is better. Returns the selected prompt, token savings, quality score, and what changed. |
optimize_prompt_pipeline | Run the optimization pipeline and return per-stage results plus token and estimated cost metrics, in the result shape used by the PromptFlow VS Code extension. |
compress_prompt | Remove exact duplicate sentences and extra whitespace without rewriting any wording. |
validate_prompt | Check a prompt for missing objective or output format, ambiguity, conflicting instructions, duplicates, prompt-injection patterns, secrets, and undelimited variables. isValid is false only when a critical issue exists. |
estimate_tokens | Count tokens and estimate input cost for a model. "exact" is true only for OpenAI models with a loaded tokenizer; other providers are approximate. Costs are estimates from a reference price table. |
analyze_prompt | Detect intent, task type, technical domain, requested output, requirements, and entities (languages, frameworks, file paths, identifiers). |
extract_entities | Extract languages, frameworks, libraries, cloud platforms, services, technologies, file paths, identifiers, URLs, and commands. |
summarize_context | Extractive summary: the first N unique, non-empty sentences of a context block, in order. Does not rank or rewrite. |
score_prompt | Score prompt quality 0-100: 100 minus a penalty per issue (critical 30, warning 10, info 3; capped at 50 with any critical issue), with per-dimension scores and suggestions. |
evaluate_prompt | Full quality report: overall score, grade, eight quality dimensions with the checks that failed, and every finding with why it matters and how to fix it. |
compare_prompts | Compare two prompts: token and estimated cost delta, quality delta per dimension, and which findings were resolved or introduced. |
scan_prompt_security | Prompt-injection risk (0-100, signature-based, with threat ids), sensitive-data counts by category, undelimited template variables, and destructive operations. Never returns detected secret values. |
scan_sensitive_data | Scan text for credentials, cloud secrets, and PII with local deterministic detectors. Returns offsets and per-category counts, never the sensitive values. |
sanitize_prompt | Replace detected sensitive data with placeholders such as [REDACTED_API_KEY]. Returns the sanitized text and counts, never the original values. Use before sending a prompt to an external model. |
restructure_prompt | Turn a loosely written request into a sectioned engineering prompt: Role, Objective, Context, Requirements, Constraints, Edge cases, Testing, Acceptance criteria, Expected output. Only sections with content appear. The author's clauses are kept and reordered; for software tasks, fixed engineering guidance chosen by intent and topic is added, and every line is labeled "prompt" or "engine" so additions can be reviewed. Set scaffold=false to reorganize without adding guidance. |
convert_structured_payload | Convert a JSON payload to TOON (Token-Oriented Object Notation) and say whether to use it. Returns token counts for pretty JSON, compact JSON and TOON, a round-trip check (the TOON must decode back to the same value), and the recommendation: "toon" only when it round-trips and saves at least 5 % over compact JSON, otherwise "json". Lossless or it keeps JSON. |
simulate_cost | Simulate what a prompt costs across models at a request volume, from catalog list prices (labelled simulated, never a bill). Optionally optimizes the prompt first and reports hypothetical savings. Flags models whose context window is too small. |
analyze_context_budget | Measure the context sources you intend to send with a prompt: tokens and share per source, context-window usage with an output reserve, sensitive data (categories and counts only), instruction-like text in retrieved sources, and duplicates. Reads only the text passed in; never reads files. |
run_prompt_tests | Run a regression suite against a prompt. Assertions check the prompt (contains, not_contains, matches, max_tokens, min_quality, no_finding, max_severity, has_variables, max_injection_risk, no_sensitive_data, output_format) and, when a case carries a recorded model response, the response (response_valid_json, response_has_keys, response_contains, response_max_chars). With baseline_prompt, also runs the suite on the baseline and lists cases that regressed. No model is called. |
Alle Tools sind als schreibgeschützt und idempotent annotiert. Die ersten elf behalten exakt die Ergebnisfelder, die sie in der Erweiterung 1.5.x hatten, sodass bestehende Agent-Konfigurationen weiter funktionieren.
Ressourcen und Prompts
promptflow://rules: der Regelkatalog, die Dimensionen und die Bewertungsabzüge.promptflow://models: Modelle, Token-Kodierungen und Referenzpreise.- Prompt
review-prompt: bittet den Assistenten, einen Prompt zu bewerten und zu optimieren, wobei der Prompt als Daten in Tags eingeschlossen ist.
Beispiel
Fragen Sie in einem Agent-Chat in normaler Sprache, und der Client wählt das Tool:
Use promptflow to restructure this before you start:
"fix login issue and make google login work and don't break anything"{
"name": "restructure_prompt",
"arguments": { "prompt": "fix login issue and make google login work and don't break anything" }
}{
"restructuredPrompt": "## Role\nAct as a senior software engineer.\n\n## Objective\nFix login issue and make Google login work.\n…",
"intent": "debugging",
"topics": ["authentication"],
"counts": { "prompt": 4, "engine": 20, "codebase": 0 }
}Zum Ausprobieren ohne Client leiten Sie JSON-RPC per Pipe an den Prozess:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"cli","version":"1"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"estimate_tokens","arguments":{"prompt":"Hello, world!","model":"gpt-4o"}}}' \
| node packages/mcp-server/dist/bin.jsFehler und Sicherheit
- Argumente werden per Schema validiert. Fehlerhafte oder zu große Argumente liefern einen Tool-Fehler (
isError) mit der Begründung statt eines Protokollfehlers, damit Agenten korrigieren und es erneut versuchen können. - Kein Tool liefert erkannte geheime Werte: Ergebnisse zu sensiblen Daten enthalten nur Kategorien und Positionen.
- An ein Tool übergebener Prompt-Text wird als Daten behandelt. Der Server führt ihn nie aus, und die Vorlage
review-promptschließt ihn für das Modell in Tags ein. - Der Server hat keine Datei-, Shell- oder Netzwerk-Tools, sodass ein durch Prompt Injection manipulierter Agent damit nichts erreichen kann.