LLM Gateway

项目简介

LLM Gateway MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的应用后端,旨在实现高能力 AI 代理(如 Claude 3.7)向更经济高效的 LLM 模型(如 Gemini Flash 2.0 Lite)的智能任务委派。它通过统一的 MCP 工具接口,为 AI 代理提供文档处理、数据提取、成本优化等功能,并支持多种 LLM 提供商,帮助用户在保证输出质量的同时显著降低 API 成本。

主要功能点

  • MCP 协议原生支持: 完全基于 Model Context Protocol 构建,与 MCP 客户端无缝集成。
  • 智能任务委派: 允许高级 AI 代理将文档处理、数据提取等任务智能委派给成本更低的 LLM 模型,实现 AI-to-AI 协作。
  • 多LLM模型支持: 统一接口支持 OpenAI、Anthropic (Claude)、Google (Gemini)、DeepSeek 等多家 LLM 提供商,并可灵活扩展。
  • 成本优化: 通过智能路由、模型选择和缓存机制,显著降低 LLM API 的使用成本。
  • 文档处理工具: 提供文档分块、摘要、实体提取等常用文档处理功能。
  • 灵活部署: 支持多种部署方式,包括 pip 安装和 Docker 容器部署。

安装步骤

  1. 克隆仓库

    git clone https://github.com/Dicklesworthstone/llm_gateway_mcp_server.git
    cd llm_gateway_mcp_server
  2. 安装 Python 包

    • 使用 pip 安装基本依赖:

      pip install -e .
    • 或安装包含所有可选依赖(如向量数据库、文档处理等)的版本:

      pip install -e .[all]
  3. 配置环境变量

    • 创建 '.env' 文件,并根据需要配置 API 密钥、服务器端口、日志级别等。以下是一个 '.env' 文件示例:

      # API Keys (至少配置一个)
      OPENAI_API_KEY=your_openai_key
      ANTHROPIC_API_KEY=your_anthropic_key
      GEMINI_API_KEY=your_gemini_key
      DEEPSEEK_API_KEY=your_deepseek_key
      
      # Server Configuration
      SERVER_PORT=8000
      SERVER_HOST=127.0.0.1
      
      # Logging Configuration
      LOG_LEVEL=INFO
      USE_RICH_LOGGING=true
      
      # Cache Configuration
      CACHE_ENABLED=true
      CACHE_TTL=86400

      注意: 请将 'your_openai_key' 等占位符替换为您实际的 API 密钥。

服务器配置

MCP 客户端需要配置 MCP 服务器的连接信息,以下是一个 JSON 格式的配置示例,您需要根据实际情况修改 'command' 和 'args' 字段:

{
  "serverName": "llm_gateway",  // MCP 服务器名称,可自定义
  "command": "python",       // 启动 MCP 服务器的命令
  "args": [
    "-m",
    "llm_gateway.cli.main",
    "run"                    // 启动服务器的子命令
  ],
  "transport": "stdio",      // 传输协议,通常使用 stdio
  "modelContextCapabilities": [  // 服务器声明的模型上下文能力
    "tool-execution",
    "resource-access",
    "prompt-templating"
  ]
}

参数注释:

  • 'serverName': MCP 服务器的名称,客户端可以通过此名称识别服务器。
  • 'command': 启动 MCP 服务器的可执行命令,这里假设您已安装 Python 环境,并使用 'python' 命令运行服务器。
  • 'args': 传递给 'command' 的参数列表。
    • '"-m"': Python 的 '-m' 参数用于运行模块,'llm_gateway.cli.main' 指定要运行的模块为 'llm_gateway.cli.main'。
    • '"run"': 'run' 是 'llm_gateway.cli.main' 模块定义的子命令,用于启动 MCP 服务器。
  • 'transport': 指定 MCP 客户端和服务器之间的传输协议,'stdio' 表示使用标准输入输出流进行通信,这是常用的简单协议。
  • 'modelContextCapabilities': 声明服务器支持的 MCP 协议能力。

基本使用方法

  1. 启动 MCP 服务器

    在仓库根目录下,执行以下命令启动 MCP 服务器:

    python -m llm_gateway.cli.main run

    或者使用 Docker 启动:

    docker compose up

    服务器默认监听 'http://localhost:8000'。

  2. 配置 MCP 客户端

    根据 MCP 客户端的具体配置方法,填入上述服务器配置信息。确保客户端能够通过 'stdio' 或其他配置的传输协议与服务器建立连接。

  3. 使用 MCP 客户端调用工具

    MCP 客户端连接成功后,即可通过客户端提供的 API 调用 LLM Gateway MCP 服务器暴露的工具,例如:

    from mcp.client import Client
    
    async def main():
        client = Client("http://localhost:8000")  # 客户端连接 MCP 服务器
    
        # 调用 generate_completion 工具生成文本
        completion_response = await client.tools.generate_completion(
            prompt="请总结一下这篇文章的主要内容。",
            provider="openai",
            model="gpt-4o-mini"
        )
        print(completion_response['text'])
    
        await client.close()
    
    if __name__ == "__main__":
        asyncio.run(main())

    更多工具的使用方法,请参考仓库 README.md 中的 "Usage Examples" 部分。

服务器信息