Promptheus wraps an LLM-powered prompt refinement engine as MCP tools. You get four main operations: refine_prompt for iterative optimization with clarification questions, tweak_prompt for surgical edits to existing prompts, list_models and list_providers for discovery, and validate_environment for connectivity checks. The refinement flow is interactive: you send a rough prompt, it asks followup questions through answer mappings, you respond, and it returns a polished version. Works with six backends including Gemini, Claude, GPT-4, Groq, Qwen, and OpenRouter. Reach for this when you're building agents that need to improve user input before sending it downstream, or when you want programmatic access to prompt engineering without writing your own question generation logic.
Refine and optimize prompts for LLMs
pip install promptheus
# Interactive session
promptheus
# Single prompt
promptheus "Write a technical blog post"
# Skip clarifying questions
promptheus -s "Explain Kubernetes"
# Use web UI
promptheus web
from promptheus import refine_prompt
result = refine_prompt("Write a technical blog post", skip_questions=True)
print(result["refined_prompt"])
If you're already in an async application (e.g., FastAPI), call refine_prompt_async instead of the sync helper.
Promptheus analyzes your prompts and refines them with:
| Provider | Models | Setup |
|---|---|---|
| Google Gemini | gemini-2.0-flash, gemini-1.5-pro | API Key |
| Anthropic Claude | claude-3-5-sonnet, claude-3-opus | Console |
| OpenAI | gpt-4o, gpt-4-turbo | API Key |
| Groq | llama-3.3-70b, mixtral-8x7b | Console |
| Alibaba Qwen | qwen-max, qwen-plus | DashScope |
| Zhipu GLM | glm-4-plus, glm-4-air | Console |
| OpenRouter | openrouter/auto (auto-routing) | Dashboard |
OpenRouter integration in Promptheus is optimized around the openrouter/auto routing model:
OPENROUTER_MODEL or --model if your key has access.🧠 Adaptive Task Detection Automatically detects whether your task needs refinement or direct optimization
⚡ Interactive Refinement Ask targeted questions to elicit requirements and improve outputs
📝 Pipeline Integration Works seamlessly in Unix pipelines and shell scripts
🔄 Session Management Track, load, and reuse past prompts automatically
📊 Telemetry & Analytics Anonymous usage and performance metrics tracking for insights (local storage only, can be disabled)
🌐 Web Interface Beautiful UI for interactive prompt refinement and history management
Create a .env file with at least one provider API key:
GOOGLE_API_KEY=your_key_here
ANTHROPIC_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
Or run the interactive setup:
promptheus auth
Content Generation
promptheus "Write a blog post about async programming"
# System asks: audience, tone, length, key topics
# Generates refined prompt with all specifications
Code Analysis
promptheus -s "Review this function for security issues"
# Skips questions, applies direct enhancement
Interactive Session
promptheus
/set provider anthropic
/set model claude-3-5-sonnet
# Process multiple prompts, switch providers/models with /commands
Pipeline Integration
echo "Create a REST API schema" | promptheus | jq '.refined_prompt'
cat prompts.txt | while read line; do promptheus "$line"; done
Testing & Examples: See sample_prompts.md for test prompts demonstrating adaptive task detection (analysis vs generation).
Telemetry & Analytics
# View telemetry summary (anonymous metrics about usage and performance)
promptheus telemetry summary
# Disable telemetry if desired
export PROMPTHEUS_TELEMETRY_ENABLED=0
# Customize history storage location
export PROMPTHEUS_HISTORY_DIR=~/.custom_promptheus
Promptheus includes a Model Context Protocol (MCP) server that exposes prompt refinement capabilities as standardized tools for integration with MCP-compatible clients.
The Promptheus MCP server provides:
# Start the MCP server
promptheus mcp
# Or run directly with Python
python -m promptheus.mcp_server
Prerequisites:
pip install mcp (included in requirements.txt)refine_promptIntelligent prompt refinement with optional clarification questions.
Inputs:
prompt (required): The initial prompt to refineanswers (optional): Dictionary mapping question IDs to answers {q0: "answer", q1: "answer"}answer_mapping (optional): Maps question IDs to original question textprovider (optional): Override provider (e.g., "google", "openai")model (optional): Override model nameResponse Types:
{"type": "refined", "prompt": "...", "next_action": "..."}: Success with refined prompt{"type": "clarification_needed", "questions_for_ask_user_question": [...], "answer_mapping": {...}}: Questions needed{"type": "error", "error_type": "...", "message": "..."}: Error occurredtweak_promptApply targeted modifications to existing prompts.
Inputs:
prompt (required): Current prompt to modifymodification (required): Description of changes (e.g., "make it shorter")provider, model (optional): Provider/model overridesReturns:
{"type": "refined", "prompt": "..."}: Modified promptlist_modelsDiscover available models from configured providers.
Inputs:
providers (optional): List of provider names to querylimit (optional): Max models per provider (default: 20)include_nontext (optional): Include vision/embedding modelsReturns:
{"type": "success", "providers": {"google": {"available": true, "models": [...]}}}list_providersCheck provider configuration status.
Returns:
{"type": "success", "providers": {"google": {"configured": true, "model": "..."}}}validate_environmentTest environment configuration and API connectivity.
Inputs:
providers (optional): Specific providers to validatetest_connection (optional): Test actual API connectivityReturns:
{"type": "success", "validation": {"google": {"configured": true, "connection_test": "passed"}}}The MCP server supports a structured clarification workflow for optimal prompt refinement:
{
"tool": "refine_prompt",
"arguments": {
"prompt": "Write a blog post about machine learning"
}
}
{
"type": "clarification_needed",
"task_type": "generation",
"message": "To refine this prompt effectively, I need to ask...",
"questions_for_ask_user_question": [
{
"question": "Who is your target audience?",
"header": "Q1",
"multiSelect": false,
"options": [
{"label": "Technical professionals", "description": "Technical professionals"},
{"label": "Business executives", "description": "Business executives"}
]
}
],
"answer_mapping": {
"q0": "Who is your target audience?"
}
}
Use your MCP client's AskUserQuestion tool with the provided questions, then map answers to question IDs.
{
"tool": "refine_prompt",
"arguments": {
"prompt": "Write a blog post about machine learning",
"answers": {"q0": "Technical professionals"},
"answer_mapping": {"q0": "Who is your target audience?"}
}
}
Response:
{
"type": "refined",
"prompt": "Write a comprehensive technical blog post about machine learning fundamentals targeted at software engineers and technical professionals. Include practical code examples and architectural patterns...",
"next_action": "This refined prompt is now ready to use. If the user asked you to execute/run the prompt, use this refined prompt directly with your own capabilities..."
}
The MCP server operates in two modes:
Interactive Mode (when AskUserQuestion is available):
Structured Mode (fallback for all clients):
clarification_needed response with formatted questionsanswer_mapping dictionaryQuestion Format:
Each question in questions_for_ask_user_question includes:
question: The question text to displayheader: Short identifier (Q1, Q2, etc.)multiSelect: Boolean for multi-select optionsoptions: Array of {label, description} for radio/checkbox questionsAnswer Mapping:
q0, q1, q2, etc.{"q0": "answer", "q1": "answer"}answer_mapping preserves original question text for provider contextMCP Package Not Installed
Error: The 'mcp' package is not installed. Please install it with 'pip install mcp'.
Fix: pip install mcp or install Promptheus with dev dependencies: pip install -e .[dev]
Missing Provider API Keys
{
"type": "error",
"error_type": "ConfigurationError",
"message": "No provider configured. Please set API keys in environment."
}
Diagnosis: Use list_providers or validate_environment tools to check configuration status
Provider Misconfiguration
{
"type": "success",
"providers": {
"google": {"configured": false, "error": "GOOGLE_API_KEY not found"},
"openai": {"configured": true, "model": "gpt-4o"}
}
}
Fix: Set missing API keys in .env file or environment variables
Connection Test Failures
{
"type": "success",
"validation": {
"google": {
"configured": true,
"connection_test": "failed: Authentication error"
}
}
}
Fix: Verify API keys are valid and have necessary permissions
Quick reference: promptheus --help
Comprehensive guides:
git clone https://github.com/abhichandra21/Promptheus.git
cd Promptheus
pip install -e ".[dev]"
pytest -q
See CLAUDE.md for detailed development guidance.
MIT License - see LICENSE for details
Contributions welcome! Please see our development guide for contribution guidelines.
Questions? Open an issue | Live demo: promptheus web
GOOGLE_API_KEYsecretGoogle Gemini API key (optional, at least one provider required)
ANTHROPIC_API_KEYsecretAnthropic Claude API key (optional, at least one provider required)
OPENAI_API_KEYsecretOpenAI API key (optional, at least one provider required)
GROQ_API_KEYsecretGroq API key (optional, at least one provider required)
QWEN_API_KEYsecretAlibaba Qwen API key (optional, at least one provider required)
GLM_API_KEYsecretZhipu GLM API key (optional, at least one provider required)
PROMPTHEUS_PROVIDEROverride provider selection (gemini, anthropic, openai, groq, qwen, glm)
PROMPTHEUS_MODELOverride model selection for the chosen provider
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent