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í.
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 promptmodels_prefixed_by_provider(opcional): Lista de modelos con prefijos de proveedor. Si no se proporciona, usa los modelos predeterminados.
- Parámetros:
-
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.
- Parámetros:
-
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)
- Parámetros:
-
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"
- Parámetros:
-
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')
- Parámetros:
Prefijos de Proveedor
cada modelo debe tener el prefijo del nombre del proveedor
usa el nombre corto para referencias más rápidas
ooopenai: OpenAIo:gpt-4o-miniopenai:gpt-4o-mini
aoanthropic: Anthropica:claude-3-5-haikuanthropic:claude-3-5-haiku
gogemini: Google Geminig:gemini-2.5-pro-exp-03-25gemini:gemini-2.5-pro-exp-03-25
qogroq: Groqq:llama-3.1-70b-versatilegroq:llama-3.1-70b-versatile
dodeepseek: DeepSeekd:deepseek-coderdeepseek:deepseek-coder
loollama: Ollamal:llama3.1ollama: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:lowo: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 4anthropic:claude-sonnet-4-20250514:4k- Usa 4096 tokens de pensamiento para Sonnet 4anthropic: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-20250514yclaude-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 pensamientogemini:gemini-2.5-flash-preview-04-17:4k- Usa 4096 de presupuesto de pensamientogemini: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
- https://docs.anthropic.com/en/api/models-list?q=list+models
- https://github.com/googleapis/python-genai
- https://platform.openai.com/docs/api-reference/models/list
- https://api-docs.deepseek.com/api/list-models
- https://github.com/ollama/ollama-python
- https://github.com/openai/openai-python
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.