J

Just-Prompt 统一接口

@disler/just-prompt
0 Stars 299 次浏览 disler 更新于 2026-08-23

一个轻量级的MCP服务器,为包括OpenAI、Anthropic、Google Gemini、Groq、DeepSeek和Ollama在内的各种大型语言模型提供商提供统一接口。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

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

该服务需要配置环境变量:ANTHROPIC_API_KEY、DEEPSEEK_API_KEY、GEMINI_API_KEY、GROQ_API_KEY、OLLAMA_HOST、OPENAI_API_KEY

服务介绍

Just Prompt - 为 LLM 提供商提供的轻量级 MCP 服务器

just-prompt 是一个 Model Control Protocol (MCP) 服务器,它为包括 OpenAI、Anthropic、Google Gemini、Groq、DeepSeek 和 Ollama 在内的多种大型语言模型(LLM)提供商提供统一的接口。了解我们如何使用 ceo_and_board 工具通过 o3 简化艰难决策

工具

服务器中可用的 MCP 工具有:

  • prompt: 将提示发送给多个 LLM 模型

    • 参数:
      • text: 提示文本
      • models_prefixed_by_provider (可选): 带有提供商前缀的模型列表。如果未提供,则使用默认模型。
  • prompt_from_file: 从文件中读取提示并将其发送给多个 LLM 模型

    • 参数:
      • file: 包含提示的文件路径
      • models_prefixed_by_provider (可选): 带有提供商前缀的模型列表。如果未提供,则使用默认模型。
  • prompt_from_file_to_file: 从文件中读取提示并将其发送给多个 LLM 模型,并将响应保存为 Markdown 文件

    • 参数:
      • file: 包含提示的文件路径
      • models_prefixed_by_provider (可选): 带有提供商前缀的模型列表。如果未提供,则使用默认模型。
      • output_dir (默认: "."): 保存响应 Markdown 文件的目录
  • ceo_and_board: 将提示发送给多个“董事会成员”模型,并让一个“CEO”模型根据他们的响应做出决策

    • 参数:
      • file: 包含提示的文件路径
      • models_prefixed_by_provider (可选): 作为董事会成员的带有提供商前缀的模型列表。如果未提供,则使用默认模型。
      • output_dir (默认: "."): 保存响应文件和 CEO 决策的目录
      • ceo_model (默认: "openai:o3"): 用于 CEO 决策的模型格式为 "provider:model"
  • list_providers: 列出所有可用的 LLM 提供商

    • 参数: 无
  • list_models: 列出特定 LLM 提供商的所有可用模型

    • 参数:
      • provider: 要列出模型的提供商(例如 'openai' 或 'o')

提供商前缀

每个模型必须以前缀形式包含提供商名称

使用简称以便更快引用

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

特性

  • 统一的多LLM提供商API
  • 支持从字符串或文件中获取文本提示
  • 并行运行多个模型
  • 使用--default-models列表中的第一个模型自动修正模型名称
  • 能够将响应保存到文件
  • 轻松列出可用的提供商和模型

安装

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

# Install with pip
uv sync

环境变量

创建一个包含您的API密钥的.env文件(您可以复制.env.sample文件):

cp .env.sample .env

然后编辑.env文件以添加您的API密钥(或者在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

Claude代码安装

在所有这些示例中,请用just-prompt目录的实际路径替换目录。

默认模型设置为openai:o3:highopenai:o4-mini:highanthropic:claude-3-7-sonnet-20250219:4kgemini:gemini-2.5-pro-preview-03-25,以及gemini:gemini-2.5-flash-preview-04-17

如果您直接从仓库使用Claude Code,可以在.mcp.json文件中看到我们设置了默认模型...

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

--default-models参数用于在未向API端点明确提供任何模型时指定要使用的模型。列表中的第一个模型也用于必要时的模型名称修正。这可以是一个由逗号分隔的模型列表。

启动服务器时,它会自动检查您环境中可用的哪些API密钥,并告知您可以使用哪些提供商。如果缺少某个密钥,则该提供商将被列为不可用,但服务器仍然会启动并可与可用的提供商一起使用。

使用mcp add-json

复制此内容并粘贴到Claude代码中,但在复制JSON之前不要运行

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

要复制的JSON

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

自定义默认模型设置为openai: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-3-7-sonnet-20250219:4k,gemini:gemini-2.5-pro-preview-03-25,gemini:gemini-2.5-flash-preview-04-17"]
}

使用项目范围的mcp add

# 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-3-7-sonnet-20250219:4k,gemini:gemini-2.5-pro-preview-03-25,gemini:gemini-2.5-flash-preview-04-17:4k"

mcp remove

claude mcp remove just-prompt

运行测试

uv run pytest

代码库结构

.
├── 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

上下文预处理

阅读README.md, pyproject.toml,然后运行git ls-files,以及'eza --git-ignore --tree'来理解项目的上下文。

使用OpenAI o系列进行推理努力

对于OpenAI o系列推理模型(o4-minio3-minio3),您可以
控制模型在生成可见答案前执行多少内部推理。

在模型名称后附加以下后缀之一(位于提供商前缀之后):

  • :low   – 最小内部推理(更快,更便宜)
  • :medium – 平衡(如果省略则为默认)
  • :high  – 彻底推理(较慢,更多令牌)

例子:

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

当存在推理后缀时,just‑prompt会自动切换到OpenAI Responses API(如果可用)并设置相应的reasoning.effort参数。如果安装的OpenAI SDK版本较旧,它将优雅地回退到Chat Completions端点,并嵌入内部系统指令以近似请求的努力级别。

与 Claude 思考令牌

Anthropic 的 Claude 模型 claude-3-7-sonnet-20250219 支持使用思考令牌进行扩展思考能力。这允许 Claude 在回答前进行更彻底的思考过程。

您可以通过在模型名称后添加后缀来启用思考令牌,格式如下:

  • anthropic:claude-3-7-sonnet-20250219:1k - 使用 1024 个思考令牌
  • anthropic:claude-3-7-sonnet-20250219:4k - 使用 4096 个思考令牌
  • anthropic:claude-3-7-sonnet-20250219:8000 - 使用 8000 个思考令牌

注意事项:

  • 思考令牌仅支持 claude-3-7-sonnet-20250219 模型
  • 有效的思考令牌预算范围为 1024 到 16000
  • 超出此范围的值将自动调整到范围内
  • 您可以使用 k 表示法(如 1k、4k 等)或精确数字(如 1024、4096 等)指定预算

Gemini 的思考预算

Google 的 Gemini 模型 gemini-2.5-flash-preview-04-17 支持使用思考预算进行扩展思考能力。这允许 Gemini 在提供响应前进行更彻底的推理。

您可以通过在模型名称后添加后缀来启用思考预算,格式如下:

  • gemini:gemini-2.5-flash-preview-04-17:1k - 使用 1024 个思考预算
  • gemini:gemini-2.5-flash-preview-04-17:4k - 使用 4096 个思考预算
  • gemini:gemini-2.5-flash-preview-04-17:8000 - 使用 8000 个思考预算

注意事项:

  • 思考预算仅支持 gemini-2.5-flash-preview-04-17 模型
  • 有效的思考预算范围为 0 到 24576
  • 超出此范围的值将自动调整到范围内
  • 您可以使用 k 表示法(如 1k、4k 等)或精确数字(如 1024、4096 等)指定预算

资源

相关 MCP 服务