Prompt Lab
Bucles de optimización de prompts y suites de pruebas de regresión para Claude Code, con una interfaz web complementaria.
Documentación
Servidor MCP de Prompt Lab
Bucles de optimización de prompts y suites de pruebas de regresión para Claude Code, con una interfaz web complementaria.
El agente se ejecuta dentro de tu sesión de Claude Code y gestiona todo el trabajo de LLM: puntuar respuestas, proponer prompts mejorados y aplicar sugerencias. El servidor mantiene el estado del espacio de trabajo y mantiene sincronizados al agente y la interfaz de Prompt Lab.
Inicio rápido
Copia mcp-connect.json de este repositorio a tu proyecto como .mcp.json:
{
"mcpServers": {
"prompt-lab": {
"type": "http",
"url": "https://prompt-lab-mcp.up.railway.app/mcp"
}
}
}
Claude Code se conecta automáticamente en el próximo inicio. Verifícalo con /mcp.
Ejemplo de sesión
# 1. Open a workspace — agent shares the UI URL
start_web_app()
→ "Open https://prompt-lab-mcp.vercel.app?s=abc123 to follow along."
# 2. Register an API key
register_api_key(workspaceId, "sk-ant-...")
# 3. Set a system prompt and a test case
set_system_prompt(workspaceId, "You are a concise customer support agent...")
add_test_cases(workspaceId, [{
query: "How do I reset my password?",
targetAnswer: "Click 'Forgot password' on the login page and follow the email link."
}])
# 4. Run the optimization loop
loop_optimization(workspaceId, threshold=85)
→ Iteration 1 — score 58: response too long, no mention of email link
→ Iteration 2 — score 74: better, but missing the exact step
→ Iteration 3 — score 91: SUCCESS — prompt updated to require step-by-step answers
La interfaz muestra la puntuación de cada iteración, el razonamiento del agente y el prompt de sistema revisado en tiempo real.
Cómo funciona
Prompt Lab UI (github.com/jurek-f/prompt-lab)
↕ HTTP
Prompt Lab MCP Server (Railway)
↕ MCP
Claude Code (your machine)
Claves de API
Las claves de API nunca se almacenan en la configuración del servidor MCP. En su lugar, pásalas a Claude Code como variables de entorno: el agente las lee y las registra con el servidor al inicio de cada sesión usando register_api_key.
Configura las claves de los proveedores que quieras usar. El agente detecta automáticamente el proveedor a partir del prefijo de la clave al llamar a register_api_key.
Si ya están en el entorno de tu sistema, Claude Code las hereda automáticamente: no hay nada más que hacer. De lo contrario, agrégalas a ~/.claude/env o a tu perfil de shell:
ANTHROPIC_API_KEY=sk-ant-...
GEMINI_API_KEY=AIza...
OPENAI_API_KEY=sk-...
Herramientas MCP
Configuración
| Herramienta | Descripción |
|---|---|
start_web_app(workspaceId?) | Crea un espacio de trabajo y devuelve la URL de la interfaz de Prompt Lab. |
register_api_key(workspaceId, apiKey, provider?) | Registra una clave de API para ejecuciones de prueba. El proveedor se detecta automáticamente a partir del prefijo de la clave. |
list_models(workspaceId) | Lista los modelos disponibles según las claves registradas. |
set_test_model(workspaceId, model) | Configura el modelo para las ejecuciones de prueba. Se sincroniza con el selector de modelos de la interfaz. |
delete_session(workspaceId) | Elimina un espacio de trabajo y todo su estado. Irreversible. |
Plantillas
Las plantillas son globales y aparecen en los menús desplegables de la interfaz en cuanto se publican.
| Herramienta | Descripción |
|---|---|
save_template(name, testCases) | Guarda una plantilla de suite de pruebas. Aparece en el menú desplegable "Cargar suite de pruebas…" de la interfaz. |
save_system_prompt_template(name, content) | Guarda una plantilla de prompt de sistema. Aparece en el menú desplegable "Cargar plantilla…" de la interfaz. |
Estado del espacio de trabajo
| Herramienta | Descripción |
|---|---|
get_workspace_state(workspaceId) | Lee el espacio de trabajo completo: prompt de sistema, casos de prueba, resultados, sugerencias y modelo. |
set_system_prompt(workspaceId, systemPrompt) | Configura el prompt de sistema sin incrementar el contador de iteraciones. |
add_test_cases(workspaceId, testCases, replace?) | Agrega casos de prueba. replace=true sobrescribe todos los existentes. |
post_test_result(workspaceId, testCaseId, response, score, reasoning, model) | Almacena un resultado de prueba puntuado. |
post_prompt_suggestion(workspaceId, prompt, reasoning, expectedGain?) | Pone en cola un prompt revisado para su revisión en la interfaz. |
apply_suggestion(workspaceId, suggestionId) | Aplica una sugerencia pendiente e incrementa el contador de iteraciones. |
get_regression_status(workspaceId, threshold?) | Resumen de aprobados/reprobados en todos los casos de prueba para el prompt de sistema actual. |
Optimización
Requiere un espacio de trabajo con al menos un caso de prueba.
| Herramienta | Descripción |
|---|---|
start_optimization_session(workspaceId, threshold?, maxIterations?) | Una sola pasada: puntúa los casos de prueba, publica una sugerencia y luego espera la revisión del usuario en la interfaz. |
loop_optimization(workspaceId, threshold?, maxIterations?) | Bucle automatizado: itera hasta que todas las puntuaciones alcancen el umbral o se llegue al máximo de iteraciones. |
Regresión
| Herramienta | Descripción |
|---|---|
run_regression_testsuite(workspaceId, threshold?) | Una sola pasada: puntúa todos los casos de prueba, sin cambios en el prompt. |
loop_regression(workspaceId, threshold?) | Bucle automatizado: se repite hasta que cada puntuación individual alcance el umbral. Un promedio alto que enmascara un caso fallido no se considera aprobado. |
Archivo
| Herramienta | Descripción |
|---|---|
pull_ui_history(workspaceId) | Obtiene todos los resúmenes de sesión y ejecuciones de regresión publicados por la interfaz. |
Autoalojamiento
Despliega en Railway y configura estas variables de entorno:
| Variable | Descripción |
|---|---|
UPSTASH_REDIS_REST_URL | URL de Upstash Redis para persistencia |
UPSTASH_REDIS_REST_TOKEN | Token de Upstash Redis |
PROMPT_LAB_UI_URL | URL de tu implementación de la interfaz de Prompt Lab |
npm install
npm run dev # starts on :3000
Endpoint MCP: http://localhost:3000/mcp
Licencia
MIT — consulta LICENCIA.
© 2026 Jurek Föllmer