Just Prompt

Una interfaz unificada para varios proveedores de modelos de lenguaje grandes (LLM), incluyendo OpenAI, Anthropic, Google Gemini, Groq, DeepSeek y Ollama.

Documentación

Just Prompt - Un servidor MCP ligero para proveedores de LLM

just-prompt es un servidor de Protocolo de Control de Modelos (MCP) que proporciona una interfaz unificada para varios proveedores de Modelos de Lenguaje Grande (LLM), incluyendo OpenAI, Anthropic, Google Gemini, Groq, DeepSeek y Ollama. Mira cómo usamos la herramienta ceo_and_board para hacer decisiones difíciles fáciles con o3 aquí.

Just Prompt Logo Just Prompt Logo

Herramientas

Las siguientes herramientas MCP están disponibles en el servidor:

  • prompt: Envía un prompt a múltiples modelos de LLM

    • Parámetros:
      • text: El texto del prompt
      • models_prefixed_by_provider (opcional): Lista de modelos con prefijos de proveedor. Si no se proporciona, usa los modelos predeterminados.
  • prompt_from_file: Envía un prompt desde un archivo a múltiples modelos de LLM

    • Parámetros:
      • abs_file_path: Ruta absoluta al archivo que contiene el prompt (debe ser una ruta absoluta, no relativa)
      • models_prefixed_by_provider (opcional): Lista de modelos con prefijos de proveedor. Si no se proporciona, usa los modelos predeterminados.
  • prompt_from_file_to_file: Envía un prompt desde un archivo a múltiples modelos de LLM y guarda las respuestas como archivos markdown

    • Parámetros:
      • abs_file_path: Ruta absoluta al archivo que contiene el prompt (debe ser una ruta absoluta, no relativa)
      • models_prefixed_by_provider (opcional): Lista de modelos con prefijos de proveedor. Si no se proporciona, usa los modelos predeterminados.
      • abs_output_dir (predeterminado: "."): Ruta de directorio absoluta para guardar los archivos markdown de respuesta (debe ser una ruta absoluta, no relativa)
  • ceo_and_board: Envía un prompt a múltiples modelos 'miembros de la junta' y hace que un modelo 'CEO' tome una decisión basada en sus respuestas

    • Parámetros:
      • abs_file_path: Ruta absoluta al archivo que contiene el prompt (debe ser una ruta absoluta, no relativa)
      • models_prefixed_by_provider (opcional): Lista de modelos con prefijos de proveedor para actuar como miembros de la junta. Si no se proporciona, usa los modelos predeterminados.
      • abs_output_dir (predeterminado: "."): Ruta de directorio absoluta para guardar los archivos de respuesta y la decisión del CEO (debe ser una ruta absoluta, no relativa)
      • ceo_model (predeterminado: "openai:o3"): Modelo a usar para la decisión del CEO en formato "proveedor:modelo"
  • list_providers: Lista todos los proveedores de LLM disponibles

    • Parámetros: Ninguno
  • list_models: Lista todos los modelos disponibles para un proveedor de LLM específico

    • Parámetros:
      • provider: Proveedor para listar modelos (por ejemplo, 'openai' o 'o')

Prefijos de Proveedor

cada modelo debe tener el prefijo del nombre del proveedor

usa el nombre corto para referencias más rápidas

  • o o openai: OpenAI
    • o:gpt-4o-mini
    • openai:gpt-4o-mini
  • a o anthropic: Anthropic
    • a:claude-3-5-haiku
    • anthropic:claude-3-5-haiku
  • g o gemini: Google Gemini
    • g:gemini-2.5-pro-exp-03-25
    • gemini:gemini-2.5-pro-exp-03-25
  • q o groq: Groq
    • q:llama-3.1-70b-versatile
    • groq:llama-3.1-70b-versatile
  • d o deepseek: DeepSeek
    • d:deepseek-coder
    • deepseek:deepseek-coder
  • l o ollama: Ollama
    • l:llama3.1
    • ollama:llama3.1

Características

  • API unificada para múltiples proveedores de LLM
  • Soporte para prompts de texto desde cadenas o archivos
  • Ejecuta múltiples modelos en paralelo
  • Corrección automática del nombre del modelo usando el primer modelo en la lista --default-models
  • Capacidad de guardar respuestas en archivos
  • Listado fácil de proveedores y modelos disponibles

Instalación

# Clone the repository
git clone https://github.com/yourusername/just-prompt.git
cd just-prompt

# Install with pip
uv sync

Variables de Entorno

Crea un archivo .env con tus claves de API (puedes copiar el archivo .env.sample):

cp .env.sample .env

Luego edita el archivo .env para agregar tus claves de API (o expórtalas en tu shell):

OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
GEMINI_API_KEY=your_gemini_api_key_here
GROQ_API_KEY=your_groq_api_key_here
DEEPSEEK_API_KEY=your_deepseek_api_key_here
OLLAMA_HOST=http://localhost:11434

Instalación con Claude Code

En todos estos ejemplos, reemplaza el directorio con la ruta al directorio just-prompt.

Modelos predeterminados configurados en openai:o3:high, openai:o4-mini:high, anthropic:claude-opus-4-20250514, anthropic:claude-sonnet-4-20250514, gemini:gemini-2.5-pro-preview-03-25 y gemini:gemini-2.5-flash-preview-04-17.

Si usas Claude Code directamente desde el repositorio, puedes ver en el archivo .mcp.json que configuramos los modelos predeterminados en...

{
  "mcpServers": {
    "just-prompt": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        ".",
        "run",
        "just-prompt",
        "--default-models",
        "openai:o3:high,openai:o4-mini:high,anthropic:claude-opus-4-20250514,anthropic:claude-sonnet-4-20250514,gemini:gemini-2.5-pro-preview-03-25,gemini:gemini-2.5-flash-preview-04-17"
      ],
      "env": {}
    }
  }
}

El parámetro --default-models establece los modelos a usar cuando no se proporcionan explícitamente a los endpoints de la API. El primer modelo en la lista también se usa para la corrección del nombre del modelo cuando es necesario. Esta puede ser una lista de modelos separados por comas.

Al iniciar el servidor, verificará automáticamente qué claves de API están disponibles en tu entorno y te informará qué proveedores puedes usar. Si falta una clave, el proveedor se listará como no disponible, pero el servidor aún se iniciará y podrá usarse con los proveedores que estén disponibles.

Usando mcp add-json

Copia esto y pégalo en claude code, pero NO lo ejecutes hasta que copies el json

claude mcp add just-prompt "$(pbpaste)"

JSON para copiar

{
    "command": "uv",
    "args": ["--directory", ".", "run", "just-prompt"]
}

Con un modelo predeterminado personalizado configurado en openai:gpt-4o.

{
    "command": "uv",
    "args": ["--directory", ".", "run", "just-prompt", "--default-models", "openai:gpt-4o"]
}

Con múltiples modelos predeterminados:

{
    "command": "uv",
    "args": ["--directory", ".", "run", "just-prompt", "--default-models", "openai:o3:high,openai:o4-mini:high,anthropic:claude-opus-4-20250514,anthropic:claude-sonnet-4-20250514,gemini:gemini-2.5-pro-preview-03-25,gemini:gemini-2.5-flash-preview-04-17"]
}

Usando mcp add con alcance de proyecto

# With default models
claude mcp add just-prompt -s project \
  -- \
    uv --directory . \
    run just-prompt

# With custom default model
claude mcp add just-prompt -s project \
  -- \
  uv --directory . \
  run just-prompt --default-models "openai:gpt-4o"

# With multiple default models
claude mcp add just-prompt -s user \
  -- \
  uv --directory . \
  run just-prompt --default-models "openai:o3:high,openai:o4-mini:high,anthropic:claude-opus-4-20250514,anthropic:claude-sonnet-4-20250514,gemini:gemini-2.5-pro-preview-03-25,gemini:gemini-2.5-flash-preview-04-17"

mcp remove

claude mcp remove just-prompt

Ejecutando Pruebas

uv run pytest

Estructura del Código

.
├── ai_docs/                   # Documentation for AI model details
│   ├── extending_thinking_sonny.md
│   ├── llm_providers_details.xml
│   ├── openai-reasoning-effort.md
│   └── pocket-pick-mcp-server-example.xml
├── example_outputs/           # Example outputs from different models
├── list_models.py             # Script to list available LLM models
├── prompts/                   # Example prompt files
├── pyproject.toml             # Python project configuration
├── specs/                     # Project specifications
│   ├── init-just-prompt.md
│   ├── new-tool-llm-as-a-ceo.md
│   └── oai-reasoning-levels.md
├── src/                       # Source code directory
│   └── just_prompt/
│       ├── __init__.py
│       ├── __main__.py
│       ├── atoms/             # Core components
│       │   ├── llm_providers/ # Individual provider implementations
│       │   │   ├── anthropic.py
│       │   │   ├── deepseek.py
│       │   │   ├── gemini.py
│       │   │   ├── groq.py
│       │   │   ├── ollama.py
│       │   │   └── openai.py
│       │   └── shared/        # Shared utilities and data types
│       │       ├── data_types.py
│       │       ├── model_router.py
│       │       ├── utils.py
│       │       └── validator.py
│       ├── molecules/         # Higher-level functionality
│       │   ├── ceo_and_board_prompt.py
│       │   ├── list_models.py
│       │   ├── list_providers.py
│       │   ├── prompt.py
│       │   ├── prompt_from_file.py
│       │   └── prompt_from_file_to_file.py
│       ├── server.py          # MCP server implementation
│       └── tests/             # Test directory
│           ├── atoms/         # Tests for atoms
│           │   ├── llm_providers/
│           │   └── shared/
│           └── molecules/     # Tests for molecules
│               ├── test_ceo_and_board_prompt.py
│               ├── test_list_models.py
│               ├── test_list_providers.py
│               ├── test_prompt.py
│               ├── test_prompt_from_file.py
│               └── test_prompt_from_file_to_file.py
└── ultra_diff_review/         # Diff review outputs

Preparación del Contexto

LEE README.md, pyproject.toml, luego ejecuta git ls-files, y 'eza --git-ignore --tree' para entender el contexto del proyecto.

Esfuerzo de Razonamiento con OpenAI o‑Series

Para los modelos de razonamiento o‑series de OpenAI (o4-mini, o3-mini, o3) puedes controlar cuánto razonamiento interno realiza el modelo antes de producir una respuesta visible.

Agrega uno de los siguientes sufijos al nombre del modelo (después del prefijo de proveedor):

  • :low   – razonamiento interno mínimo (más rápido, más barato)
  • :medium – equilibrado (predeterminado si se omite)
  • :high  – razonamiento exhaustivo (más lento, más tokens)

Ejemplos:

  • openai:o4-mini:low
  • o:o4-mini:high

Cuando un sufijo de razonamiento está presente, just‑prompt cambia automáticamente a la API de Responses de OpenAI (cuando está disponible) y establece el parámetro reasoning.effort correspondiente. Si el SDK de OpenAI instalado es más antiguo, vuelve elegantemente al endpoint de Chat Completions e incorpora una instrucción de sistema interna para aproximar el nivel de esfuerzo solicitado.

Tokens de Pensamiento con Claude

Los modelos de Anthropic Claude claude-opus-4-20250514 y claude-sonnet-4-20250514 admiten capacidades de pensamiento extendido usando tokens de pensamiento. Esto permite a Claude realizar procesos de pensamiento más exhaustivos antes de responder.

Puedes habilitar los tokens de pensamiento agregando un sufijo al nombre del modelo en este formato:

  • anthropic:claude-opus-4-20250514:1k - Usa 1024 tokens de pensamiento para Opus 4
  • anthropic:claude-sonnet-4-20250514:4k - Usa 4096 tokens de pensamiento para Sonnet 4
  • anthropic:claude-opus-4-20250514:8000 - Usa 8000 tokens de pensamiento para Opus 4

Notas:

  • Los tokens de pensamiento son compatibles con los modelos claude-opus-4-20250514, claude-sonnet-4-20250514 y claude-3-7-sonnet-20250219
  • Los presupuestos válidos de tokens de pensamiento van de 1024 a 16000
  • Los valores fuera de este rango se ajustarán automáticamente para estar dentro del rango
  • Puedes especificar el presupuesto con notación k (1k, 4k, etc.) o con números exactos (1024, 4096, etc.)

Presupuesto de Pensamiento con Gemini

El modelo de Google Gemini gemini-2.5-flash-preview-04-17 admite capacidades de pensamiento extendido usando presupuesto de pensamiento. Esto permite a Gemini realizar un razonamiento más exhaustivo antes de proporcionar una respuesta.

Puedes habilitar el presupuesto de pensamiento agregando un sufijo al nombre del modelo en este formato:

  • gemini:gemini-2.5-flash-preview-04-17:1k - Usa 1024 de presupuesto de pensamiento
  • gemini:gemini-2.5-flash-preview-04-17:4k - Usa 4096 de presupuesto de pensamiento
  • gemini:gemini-2.5-flash-preview-04-17:8000 - Usa 8000 de presupuesto de pensamiento

Notas:

  • El presupuesto de pensamiento solo es compatible con el modelo gemini-2.5-flash-preview-04-17
  • El rango válido de presupuesto de pensamiento va de 0 a 24576
  • Los valores fuera de este rango se ajustarán automáticamente para estar dentro del rango
  • Puedes especificar el presupuesto con notación k (1k, 4k, etc.) o con números exactos (1024, 4096, etc.)

Recursos

Codificación Maestra con IA

Aprende a codificar con IA con los Principios fundamentales de Codificación con IA

Sigue el canal de youtube IndyDevDan para más consejos y trucos de codificación con IA.