Labsco
disler logo

Just Prompt

β˜… 733

from disler

A unified interface for various Large Language Model (LLM) providers, including OpenAI, Anthropic, Google Gemini, Groq, DeepSeek, and Ollama.

πŸ”₯πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeAdvanced setup

Just Prompt - A lightweight MCP server for LLM providers

just-prompt is a Model Control Protocol (MCP) server that provides a unified interface to various Large Language Model (LLM) providers including OpenAI, Anthropic, Google Gemini, Groq, DeepSeek, and Ollama. See how we use the ceo_and_board tool to make hard decisions easy with o3 here.

<img src="images/just-prompt-logo.png" alt="Just Prompt Logo" width="700" height="auto"> <img src="images/o3-as-a-ceo.png" alt="Just Prompt Logo" width="700" height="auto">

Tools

The following MCP tools are available in the server:

  • prompt: Send a prompt to multiple LLM models

    • Parameters:
      • text: The prompt text
      • models_prefixed_by_provider (optional): List of models with provider prefixes. If not provided, uses default models.
  • prompt_from_file: Send a prompt from a file to multiple LLM models

    • Parameters:
      • abs_file_path: Absolute path to the file containing the prompt (must be an absolute path, not relative)
      • models_prefixed_by_provider (optional): List of models with provider prefixes. If not provided, uses default models.
  • prompt_from_file_to_file: Send a prompt from a file to multiple LLM models and save responses as markdown files

    • Parameters:
      • abs_file_path: Absolute path to the file containing the prompt (must be an absolute path, not relative)
      • models_prefixed_by_provider (optional): List of models with provider prefixes. If not provided, uses default models.
      • abs_output_dir (default: "."): Absolute directory path to save the response markdown files to (must be an absolute path, not relative)
  • ceo_and_board: Send a prompt to multiple 'board member' models and have a 'CEO' model make a decision based on their responses

    • Parameters:
      • abs_file_path: Absolute path to the file containing the prompt (must be an absolute path, not relative)
      • models_prefixed_by_provider (optional): List of models with provider prefixes to act as board members. If not provided, uses default models.
      • abs_output_dir (default: "."): Absolute directory path to save the response files and CEO decision (must be an absolute path, not relative)
      • ceo_model (default: "openai:o3"): Model to use for the CEO decision in format "provider:model"
  • list_providers: List all available LLM providers

    • Parameters: None
  • list_models: List all available models for a specific LLM provider

    • Parameters:
      • provider: Provider to list models for (e.g., 'openai' or 'o')

Provider Prefixes

every model must be prefixed with the provider name

use the short name for faster referencing

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

Features

  • Unified API for multiple LLM providers
  • Support for text prompts from strings or files
  • Run multiple models in parallel
  • Automatic model name correction using the first model in the --default-models list
  • Ability to save responses to files
  • Easy listing of available providers and models

mcp remove

claude mcp remove just-prompt

Codebase Structure

.
β”œβ”€β”€ 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

Context Priming

READ README.md, pyproject.toml, then run git ls-files, and 'eza --git-ignore --tree' to understand the context of the project.

Reasoning Effort with OpenAI o‑Series

For OpenAI o‑series reasoning models (o4-mini, o3-mini, o3) you can control how much internal reasoning the model performs before producing a visible answer.

Append one of the following suffixes to the model name (after the provider prefix):

  • :low   – minimal internal reasoning (faster, cheaper)
  • :medium – balanced (default if omitted)
  • :highΒ  – thorough reasoning (slower, more tokens)

Examples:

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

When a reasoning suffix is present, just‑prompt automatically switches to the OpenAI Responses API (when available) and sets the corresponding reasoning.effort parameter. If the installed OpenAI SDK is older, it gracefully falls back to the Chat Completions endpoint and embeds an internal system instruction to approximate the requested effort level.

Thinking Tokens with Claude

The Anthropic Claude models claude-opus-4-20250514 and claude-sonnet-4-20250514 support extended thinking capabilities using thinking tokens. This allows Claude to do more thorough thought processes before answering.

You can enable thinking tokens by adding a suffix to the model name in this format:

  • anthropic:claude-opus-4-20250514:1k - Use 1024 thinking tokens for Opus 4
  • anthropic:claude-sonnet-4-20250514:4k - Use 4096 thinking tokens for Sonnet 4
  • anthropic:claude-opus-4-20250514:8000 - Use 8000 thinking tokens for Opus 4

Notes:

  • Thinking tokens are supported for claude-opus-4-20250514, claude-sonnet-4-20250514, and claude-3-7-sonnet-20250219 models
  • Valid thinking token budgets range from 1024 to 16000
  • Values outside this range will be automatically adjusted to be within range
  • You can specify the budget with k notation (1k, 4k, etc.) or with exact numbers (1024, 4096, etc.)

Thinking Budget with Gemini

The Google Gemini model gemini-2.5-flash-preview-04-17 supports extended thinking capabilities using thinking budget. This allows Gemini to perform more thorough reasoning before providing a response.

You can enable thinking budget by adding a suffix to the model name in this format:

  • gemini:gemini-2.5-flash-preview-04-17:1k - Use 1024 thinking budget
  • gemini:gemini-2.5-flash-preview-04-17:4k - Use 4096 thinking budget
  • gemini:gemini-2.5-flash-preview-04-17:8000 - Use 8000 thinking budget

Notes:

  • Thinking budget is only supported for the gemini-2.5-flash-preview-04-17 model
  • Valid thinking budget range from 0 to 24576
  • Values outside this range will be automatically adjusted to be within range
  • You can specify the budget with k notation (1k, 4k, etc.) or with exact numbers (1024, 4096, etc.)

Resources

Master AI Coding

Learn to code with AI with foundational Principles of AI Coding

Follow the IndyDevDan youtube channel for more AI coding tips and tricks.