Just Prompt (Multi-LLM Provider)

by disler

72 stars
1k downloads
Not rated
GitHub

About

Unified interface for interacting with multiple LLM providers including OpenAI, Anthropic, Google Gemini, Groq, DeepSeek, and Ollama with parallel prompt sending and response file saving capabilities.

Details

Author
disler
Repository
disler/just-prompt
GitHub stars
72
Downloads
1,014
Categories
Developer Tools, AI, Design, File Management, API, Infrastructure

- 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

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Just Prompt (Multi-LLM Provider)
    Command (node, npx, python, etc.) uv
    Arguments
    • Argument 1 --directory
    • Argument 2 .
    • Argument 3 run
    • Argument 4 just-prompt
    • Argument 5 --default-models
    • Argument 6 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

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository


uv sync

Create a .env file with your API keys (you can copy the .env.sample file):

cp .env.sample .env

Then edit the .env file to add your API keys (or export them in your 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

> In all these examples, replace the directory with the path to the just-prompt directory.

Default models set to 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, and gemini:gemini-2.5-flash-preview-04-17.

If you use Claude Code right out of the repository you can see in the .mcp.json file we set the default models to...

{
  "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": {}
    }
  }
}

The --default-models parameter sets the models to use when none are explicitly provided to the API endpoints. The first model in the list is also used for model name correction when needed. This can be a list of models separated by commas.

When starting the server, it will automatically check which API keys are available in your environment and inform you which providers you can use. If a key is missing, the provider will be listed as unavailable, but the server will still start and can be used with the providers that are available.

uv run pytest

prompt

Send a prompt to multiple LLM models. Parameters: text (string), models_prefixed_by_provider (optional list of strings)

prompt_from_file

Send a prompt from a file to multiple LLM models. Parameters: abs_file_path (string), models_prefixed_by_provider (optional list of strings)

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 (string), models_prefixed_by_provider (optional list of strings), abs_output_dir (string, default: '.')

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 (string), models_prefixed_by_provider (optional list of strings), abs_output_dir (string, default: '.'), ceo_model (string, default: 'openai:o3')

list_providers

List all available LLM providers. Parameters: None

list_models

List all available models for a specific LLM provider. Parameters: provider (string)

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')

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "just prompt (multi-llm provider)": {
            "env": {},
            "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"
            ],
            "command": "uv"
        }
    }
}

Linux

{
    "env": [],
    "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"
    ],
    "command": "uv"
}

Macos

{
    "env": [],
    "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"
    ],
    "command": "uv"
}

Windows

{
    "env": [],
    "args": [
        "/c",
        "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"
    ],
    "command": "cmd"
}

Just Prompt - A lightweight MCP server for LLM providers

just-promptis 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 theceo_and_boardtool to makehard decisions easy with o3 here.

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

list_models: List all available models for a specific LLM provider

- Parameters:

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

every model must be prefixed with the provider name

use the short name for faster referencing

- ooropenai: OpenAI

- o:gpt-4o-mini
- openai:gpt-4o-mini

- a:claude-3-5-haiku
- anthropic:claude-3-5-haiku

- g:gemini-2.5-pro-exp-03-25
- gemini:gemini-2.5-pro-exp-03-25

- q:llama-3.1-70b-versatile
- groq:llama-3.1-70b-versatile

- d:deepseek-coder
- deepseek:deepseek-coder

- 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-modelslist
- Ability to save responses to files
- Easy listing of available providers and models

# Clone the repository git clone https://github.com/yourusername/just-prompt.git cd just-prompt # Install with pip uv sync

Create a.envfile with your API keys (you can copy the.env.samplefile):

Then edit the.envfile to add your API keys (or export them in your 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

In all these examples, replace the directory with the path to the just-prompt directory.

Default models set toopenai:o3:high,openai:o4-mini:high,anthropic:claude-opus-4-20250514,anthropic:claude-sonnet-4-20250514,gemini:gemini-2.5-pro-preview-03-25, andgemini:gemini-2.5-flash-preview-04-17.

If you use Claude Code right out of the repository you can see in the .mcp.json file we set the default models to...

{ "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": {} } } }

The--default-modelsparameter sets the models to use when none are explicitly provided to the API endpoints. The first model in the list is also used for model name correction when needed. This can be a list of models separated by commas.

When starting the server, it will automatically check which API keys are available in your environment and inform you which providers you can use. If a key is missing, the provider will be listed as unavailable, but the server will still start and can be used with the providers that are available.

Copy this and paste it into claude code with BUT don't run until you copy the json

claude mcp add just-prompt "$(pbpaste)"
{ "command": "uv", "args": ["--directory", ".", "run", "just-prompt"] }

With a custom default model set toopenai:gpt-4o.

{ "command": "uv", "args": ["--directory", ".", "run", "just-prompt", "--default-models", "openai:gpt-4o"] }
{ "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"] }
# 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"
. ├── 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

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

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

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

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

When a reasoning suffix is present,just‑promptautomatically switches to the OpenAIResponsesAPI (when available) and sets the correspondingreasoning.effortparameter. 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.

The Anthropic Claude modelsclaude-opus-4-20250514andclaude-sonnet-4-20250514support 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

- Thinking tokens are supported forclaude-opus-4-20250514,claude-sonnet-4-20250514, andclaude-3-7-sonnet-20250219models
- 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.)

The Google Gemini modelgemini-2.5-flash-preview-04-17supports 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

- Thinking budget is only supported for thegemini-2.5-flash-preview-04-17model
- 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.)

- 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

Learn to code with AI with foundationalPrinciples of AI Coding

Follow theIndyDevDan youtube channelfor more AI coding tips and tricks.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

next-devtools-mcp is a MCP server that provides Next.js development tools and utilities for AI coding assistants like Claude and Cursor.

Word search, crossword, and sudoku generator MCP server with printable PDF worksheets, themed word banks, and verifiable LLM evals. Local-first, from the makers of puzzletide.com.

A demonstration server for ActionKit, providing access to Slack actions via Claude Desktop.

MCP server that lets Claude Code agents delegate tasks to agents in other project directories, with parallel dispatch, sessions, and async jobs.

Statistical regression testing for LLM agents: p-value, effect size, and CI on behavior change.

A Python MCP package that gives your LLM agents complete file system and shell capabilities — production-ready, sandboxed, and wired to any LLM in minutes.

Integrates with Google AI Studio/Gemini API for PDF to Markdown conversion and content generation.

Anchor Browser (https://anchorbrowser.io) is secure infrastructure for computer-use agents — stealth cloud browsers, authentication, captcha bypass, and a hosted MCP server for Cursor, Claude, and Windsurf.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.