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.

Eine Anmerkung zu den Begriffen: Was Sie installieren, ist ein MCP-Server (@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

Verbindung
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 read

Der 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:

shell
pnpm --filter @promptflow/engine build && pnpm --filter @promptflow/mcp-server build
VS Code / Copilot: .vscode/mcp.json
{
  "servers": {
    "promptflow": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/checkout/packages/mcp-server/dist/bin.js"]
    }
  }
}
Claude Desktop, Cursor und andere Clients
{
  "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.

UmgebungsvariableStandardZweck
PROMPTFLOW_MCP_MAX_PROMPT_CHARS100000Maximale Zeichenzahl pro Textargument (harte Obergrenze 2.000.000).
PROMPTFLOW_MCP_LOGnicht gesetztdebug protokolliert Tool-Name, Eingabegröße, Ergebnis und Dauer auf stderr. Nie Inhalte.

Funktionen: Tools (19)

ToolBeschreibung
optimize_promptOptimize 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_pipelineRun 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_promptRemove exact duplicate sentences and extra whitespace without rewriting any wording.
validate_promptCheck 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_tokensCount 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_promptDetect intent, task type, technical domain, requested output, requirements, and entities (languages, frameworks, file paths, identifiers).
extract_entitiesExtract languages, frameworks, libraries, cloud platforms, services, technologies, file paths, identifiers, URLs, and commands.
summarize_contextExtractive summary: the first N unique, non-empty sentences of a context block, in order. Does not rank or rewrite.
score_promptScore 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_promptFull 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_promptsCompare two prompts: token and estimated cost delta, quality delta per dimension, and which findings were resolved or introduced.
scan_prompt_securityPrompt-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_dataScan text for credentials, cloud secrets, and PII with local deterministic detectors. Returns offsets and per-category counts, never the sensitive values.
sanitize_promptReplace 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_promptTurn 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_payloadConvert 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_costSimulate 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_budgetMeasure 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_testsRun 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:

Sie
Use promptflow to restructure this before you start:
"fix login issue and make google login work and don't break anything"
tools/call, den der Client sendet
{
  "name": "restructure_prompt",
  "arguments": { "prompt": "fix login issue and make google login work and don't break anything" }
}
Ergebnis (gekürzt)
{
  "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:

shell
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.js

Fehler 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-prompt schließ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.