LLM统一接口服务器

一个轻量级的MCP服务器,为多种大型语言模型提供商提供统一接口,支持并行运行多个模型并保存响应结果。

  • by disler
  • Python
  • 本地部署
  • 739 星标
  • 更新于
在 GitHub 查看 disler/just-prompt

使用说明

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

just-prompt 是一个模型控制协议(MCP)服务器,为各种大型语言模型(LLM)提供商提供统一的接口,包括OpenAI、Anthropic、Google Gemini、Groq、DeepSeek和Ollama。查看我们如何使用 ceo_and_board 制作工具 有了o3,艰难的决定变得容易.

工具

服务器中提供以下MCP工具:

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

    • 参数:
      • text:提示文本
      • models_prefixed_by_provider (可选):带有提供者前缀的模型列表。如果未提供,则使用默认型号。
  • prompt_from_file:从文件向多个LLM模型发送提示

    • 参数:
      • abs_file_path:包含提示的文件的绝对路径(必须是绝对路径,而不是相对路径)
      • models_prefixed_by_provider (可选):带有提供者前缀的模型列表。如果未提供,则使用默认型号。
  • prompt_from_file_to_file:从文件向多个LLM模型发送提示,并将响应保存为markdown文件

    • 参数:
      • abs_file_path:包含提示的文件的绝对路径(必须是绝对路径,而不是相对路径)
      • models_prefixed_by_provider (可选):带有提供者前缀的模型列表。如果未提供,则使用默认型号。
      • abs_output_dir (默认值:“.”):用于保存响应markdown文件的绝对目录路径(必须是绝对路径,而不是相对路径)
  • ceo_and_board:向多个“董事会成员”模型发送提示,并让一个“首席执行官”模型根据他们的反应做出决定

    • 参数:
      • abs_file_path:包含提示的文件的绝对路径(必须是绝对路径,而不是相对路径)
      • models_prefixed_by_provider (可选):具有作为董事会成员的提供者前缀的模型列表。如果未提供,则使用默认型号。
      • abs_output_dir (默认:“.”):保存响应文件和CEO决策的绝对目录路径(必须是绝对路径,而不是相对路径)
      • ceo_model (默认:“openai:o3”):用于CEO决策的模型,格式为“提供者:模型”
  • list_providers:列出所有可用的LLM提供商

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

    • 参数:
      • provider:提供商列出模型(例如“openai”或“o”)

提供者前缀

每个模型都必须以提供者名称作为前缀

使用短名称以加快引用速度

  • o 或 openai:OpenAI
    • o:gpt-4o-mini
    • openai:gpt-4o-mini
  • a 或 anthropic:人类学
    • a:claude-3-5-haiku
    • anthropic:claude-3-5-haiku
  • g 或 gemini:谷歌双子座
    • g:gemini-2.5-pro-exp-03-25
    • gemini:gemini-2.5-pro-exp-03-25
  • q 或 groq:Groq
    • q:llama-3.1-70b-versatile
    • groq:llama-3.1-70b-versatile
  • d 或 deepseek:DeepSeek
    • d:deepseek-coder
    • deepseek:deepseek-coder
  • l 或 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

环境变量

创建一个 .env 使用API密钥的文件(您可以复制 .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-opus-4-20250514, anthropic:claude-sonnet-4-20250514, 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-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": {}
    }
  }
}

这 --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-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 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-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

克劳德mcp删除只是提示

运行测试

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文件和'eza-git ignore-tree'以了解项目的上下文。

OpenAI o系列的推理工作

对于OpenAI o系列推理模型(o4-mini, o3-mini, o3)你可以 控制多少 内部的 在生成模型之前对模型进行推理 可见的答案。

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

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

示例:

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

当存在推理后缀时, just-提示 自动切换到 OpenAI 响应 API(如果可用)并设置相应的 reasoning.effort 参数。如果安装的OpenAI SDK较旧 优雅地回退到聊天完成端点,并嵌入一个内部 系统指令,以近似所请求的努力水平。

与克劳德一起思考代币

人类克劳德模型 claude-opus-4-20250514 和 claude-sonnet-4-20250514 使用思维令牌支持扩展思维能力。这使得克劳德在回答之前能够进行更深入的思考。

您可以通过以下格式在模型名称后添加后缀来启用思维标记:

  • anthropic:claude-opus-4-20250514:1k -为Opus 4使用1024个思考令牌
  • anthropic:claude-sonnet-4-20250514:4k -为Sonnet 4使用4096个思考令牌
  • anthropic:claude-opus-4-20250514:8000 -为Opus 4使用8000个思考令牌

笔记:

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

用Gemini思考预算

Google Gemini模型 gemini-2.5-flash-preview-04-17 使用思维预算支持扩展思维能力。这使得双子座在提供回应之前能够进行更彻底的推理。

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

  • 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等)指定预算

资源

  • https://docs.anthropic.com/en/api/models-list?q=list+模型
  • 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

精通AI编码

学习用AI编写基础代码 人工智能编码原理

跟随 IndyDevDan youtube频道 了解更多AI编码技巧和窍门。