Продукт
Интеграция с клиентами MCP
PromptFlowEngine поддерживает Model Context Protocol, поэтому любой клиент MCP (режим агента GitHub Copilot, Claude Desktop, Claude Code, Cursor или ваш собственный агент) может вызывать движок как инструмент. Ваш ассистент сам проверяет, реструктурирует и маскирует промпты как часть своей работы, а не вы вручную.
@promptflow/mcp-server v2.1.0, имя сервера promptflow-engine). Подключающийся к нему AI-инструмент — клиент MCP.Настройка Claude Code, Windsurf и Gemini CLI, пример клиента на TypeScript и разбор неполадок: Подключение PromptFlowEngine.
Как подключиться
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Транспорт — только stdio. Сервер работает как дочерний процесс клиента на вашем компьютере, читает только полученные аргументы и не выполняет сетевых вызовов.
Аутентификация
Не требуется и не поддерживается: нет ключей API, учётных записей и токенов. Доступ определяется вашей операционной системой, потому что с сервером по стандартным вводу и выводу может общаться только запущенный вами процесс. Размещённого или HTTP-эндпоинта MCP нет; для удалённого использования вызывайте HTTP API.
Настройка
Соберите из клона репозитория PromptFlowEngine (публикация в npm ещё впереди) и укажите клиенту 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"] }
}
}Расширение для VS Code поставляется с тем же сервером и записывает первую конфигурацию за вас.
| Переменная | По умолчанию | Назначение |
|---|---|---|
PROMPTFLOW_MCP_MAX_PROMPT_CHARS | 100000 | Максимум символов в каждом текстовом аргументе (жёсткий предел 2 000 000). |
PROMPTFLOW_MCP_LOG | не задано | debug записывает в stderr имя инструмента, размер ввода, результат и длительность. Содержимое — никогда. |
Возможности: инструменты (19)
| Инструмент | Описание |
|---|---|
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. |
Все инструменты помечены как только для чтения и идемпотентные. Первые одиннадцать сохраняют поля результатов из расширения 1.5.x, поэтому существующие конфигурации агентов продолжают работать.
Ресурсы и промпты
promptflow://rules: каталог правил, измерения и штрафы оценки.promptflow://models: модели, кодировки токенов и справочные цены.- Промпт
review-prompt: просит ассистента оценить и оптимизировать промпт, который передаётся как данные внутри тегов.
Пример
В чате с агентом попросите обычными словами, а клиент выберет инструмент:
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 }
}Чтобы попробовать без клиента, подайте JSON-RPC в процесс через конвейер:
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Ошибки и безопасность
- Аргументы проверяются по схеме. Неверные или слишком большие аргументы возвращают ошибку инструмента (
isError) с указанием причины, а не ошибку протокола, чтобы агент мог исправиться и повторить попытку. - Ни один инструмент не возвращает обнаруженные значения секретов: результаты по чувствительным данным содержат только категории и места.
- Текст промпта, переданный инструменту, считается данными. Сервер никогда его не выполняет, а шаблон
review-promptоборачивает его в теги, прежде чем отдать модели. - У сервера нет файловых, shell- или сетевых инструментов, поэтому агент, подвергшийся инъекции в промпте, не может с его помощью ни до чего добраться.