Just-Prompt 统一接口
一个轻量级的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')
- 参数:
提供商前缀
每个模型必须以前缀形式包含提供商名称
使用简称以便更快引用
o或openai: OpenAIo:gpt-4o-miniopenai:gpt-4o-mini
a或anthropic: Anthropica:claude-3-5-haikuanthropic:claude-3-5-haiku
g或gemini: Google Geminig:gemini-2.5-pro-exp-03-25gemini:gemini-2.5-pro-exp-03-25
q或groq: Groqq:llama-3.1-70b-versatilegroq:llama-3.1-70b-versatile
d或deepseek: DeepSeekd:deepseek-coderdeepseek:deepseek-coder
l或ollama: Ollamal:llama3.1ollama: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: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。
如果您直接从仓库使用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-mini,o3-mini,o3),您可以
控制模型在生成可见答案前执行多少内部推理。
在模型名称后附加以下后缀之一(位于提供商前缀之后):
:low– 最小内部推理(更快,更便宜):medium– 平衡(如果省略则为默认):high– 彻底推理(较慢,更多令牌)
例子:
openai:o4-mini:lowo: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 等)指定预算