推理编码MCP服务器

一个灵活可配置的两阶段推理和响应生成系统,支持多种AI提供商和模型。

  • by mario-andreschak
  • JavaScript
  • 本地部署
  • 14 星标
  • 更新于
在 GitHub 查看 mario-andreschak/mcp-reasoning-coding

使用说明

推理编码器MCP服务器

这是一个模型上下文协议(MCP)服务器,它提供了一个灵活且可配置的两阶段推理和响应生成系统。这是原版的叉子 《Deepseek Thinking》第3.5章十四行诗-CLINE-MCP 该项目通过支持多个人工智能提供商和模型进行推理和编码/响应生成,显著扩展了其能力。

与原始版本相比的主要变化和改进

最初的项目是专门设计的,使用DeepSeek R1进行推理,使用Claude 3.5 Sonnet进行响应生成,两者都只能通过OpenRouter访问。这个分支将架构泛化,以支持更广泛的提供者和模型。以下是主要差异的细分:

  • 多提供商支持: 这个分叉现在可以使用以下功能,而不是锁定在OpenRouter中:

    • 开放路由
    • 开放人工智能
    • 人类学(克劳德)
    • 深度求索
    • 谷歌双子座
    • 谷歌顶点AI
  • 可配置的推理和编码模型: 最初的硬编码DeepSeek用于推理,Claude用于最终响应。此分叉允许您配置 两者 推理和编码/响应生成模型独立。您可以混合搭配供应商。例如,您可以使用Gemini进行推理,使用OpenAI进行最终响应。

  • providers.json 配置: 一个新的 providers.json 引入文件来管理每个提供者的可用模型及其特定参数(温度、topp等)。这使得添加新模型或调整现有模型变得容易,而无需修改核心代码。

  • 环境变量配置: 推理和编码提供者/模型的选择现在主要通过环境变量来控制:

    • REASONING_PROVIDER:指定推理阶段的提供者(例如。, openai, gemini, deepseek, openrouter, anthropic, vertex).
    • REASONING_MODEL:指定用于推理的模型(例如。, gpt-4, gemini-pro, deepseek/deepseek-r1).
    • CODING_PROVIDER:指定编码/响应生成阶段的提供程序。
    • CODING_MODEL:指定最终响应的模型。
  • 动态客户端初始化: 代码现在只根据 REASONING_PROVIDER 和 CODING_PROVIDER 设置。这避免了不必要的初始化和依赖关系。

  • 统一 getReasoning 和 getFinalResponse: 特定于提供者的逻辑被抽象为 getReasoning 和 getFinalResponse 函数,使核心任务处理逻辑提供者不可知。

  • 保留核心MCP结构: fork保留了使用MCP的核心结构,因此它将与任何MCP客户端集成,就像原始实现一样。它定义了 generate_response 和 check_response_status 工具以同样的方式。

  • 保持临床整合: 与原版一样,该分叉旨在与Claude Desktop扩展Cline集成。

  • 保留对话历史记录功能: 分叉实现保留了使用Cline的对话历史作为上下文的特点。

  • 无硬编码型号: 新实现中没有硬编码的模型,模型在.env文件和providers.json中定义

特性

  • 两阶段处理:

    • 使用可配置模型进行初始推理(例如DeepSeek、GPT-4、Gemini Pro)。
    • 使用可配置模型进行最终响应/代码生成(例如,Claude、GPT-4、DeepSeek Chat)。
    • 将第一阶段的推理注入第二阶段的上下文中。
  • 灵活的供应商和型号选择:

    • 从OpenRouter、OpenAI、Anthropic、DeepSeek、Gemini和Vertex AI中选择推理和编码阶段。
    • 通过以下方式轻松配置模型及其参数 providers.json 以及环境变量。
  • 智能对话管理(继承自原版):

    • 使用文件修改时间检测活动的Cline对话。
    • 处理多个并发对话。
    • 自动过滤掉已结束的对话。
    • 支持上下文清除。
  • 优化参数(可配置):

    • 遵守特定于模型的上下文限制(例如,DeepSeek推理的50000个字符,响应模型的更大限制)。
    • 参数如 temperature, top_p,以及 repetition_penalty 可按型号配置 providers.json.
  • 响应轮询(继承自原始):

    • 使用轮询机制 generate_response (获取任务ID)以及 check_response_status (检查状态)。这处理了LLM调用的异步性质。

安装

通过Smithery安装

通过以下方式自动安装克劳德桌面推理编码器 铁匠铺:

npx -y @smithery/cli install @mario-andreschak/mcp-reasoning-coding --client claude

手动安装

  1. 克隆此存储库:

    git clone https://github.com/mario-andreschak/mcp-reasoning-coding.git
    cd /mcp-reasoning-coding
    
  2. 安装依赖关系:

    npm install
    
  3. 创建一个 .env 文件: 此文件将保存您的API密钥和提供商/型号选择。例子:

    # --- Required API Keys (at least one) ---
    OPENROUTER_API_KEY=your_openrouter_key
    OPENAI_API_KEY=your_openai_key
    ANTHROPIC_API_KEY=your_anthropic_key
    DEEPSEEK_API_KEY=your_deepseek_key
    GEMINI_API_KEY=your_gemini_key
    VERTEX_PROJECT_ID=your_vertex_project_id # For Vertex AI
    VERTEX_REGION=your_vertex_region         # For Vertex AI
    
    # --- Provider and Model Selection ---
    REASONING_PROVIDER=openrouter
    REASONING_MODEL=deepseek/deepseek-r1
    CODING_PROVIDER=openrouter
    CODING_MODEL=anthropic/claude-3.5-sonnet:beta
    

    重要提示: 您只需要为您打算使用的提供程序提供API密钥。如果你只使用OpenAI,你不需要 OPENROUTER_API_KEY例如。

  4. providers.json 文件: 此文件定义了每个提供程序的可用模型及其参数。将此文件放入 src 文件夹。示例(src/providers.json):

    {
      "openrouter": {
        "deepseek/deepseek-r1": {
          "temperature": 0.7,
          "top_p": 1
        },
        "anthropic/claude-3.5-sonnet:beta": {
          "temperature": 0.7,
          "top_p": 1,
          "repetition_penalty": 1
        },
        "deepseek/deepseek-chat":{
          "temperature": 0.7,
          "top_p": 1
        }
      },
      "openai": {
        "gpt-4": {
          "temperature": 0.7,
          "top_p": 1
        },
        "gpt-3.5-turbo": {
          "temperature": 0.7,
          "top_p": 1
        }
      },
        "anthropic": {
          "claude-3-opus-20240229": {
            "temperature": 0.7,
            "top_p": 1
          }
        },
        "deepseek": {
          "deepseek-coder": {
            "temperature": 0.7,
            "top_p": 1
          }
        },
        "gemini":{
          "gemini-pro":{
    
          }
        },
        "vertex": {
          "gemini-1.5-pro-002":{
    
          }
        }
    }
    
    • extra_params: 您可以使用以下命令在模型定义中添加特定于提供程序的参数 extra_params 钥匙。请参阅每个提供商的API文档,了解有哪些选项可用。
  5. 构建服务器:

    npm run build
    

与Cline一起使用

添加到您的临床MCP设置中(通常在 ~/.vscode/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json):

{
  "mcpServers": {
    "reasoning-coding": {
      "command": "/path/to/node",
      "args": ["/path/to/your-fork/build/index.js"],  // Adjust path
      "env": {
        // Your .env variables will be inherited, so no need to duplicate them here
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

替换 /path/to/node 和 /path/to/your-fork/build/index.js 正确的路径。

工具使用(与原始工具相同)

服务器提供与原始服务器相同的两个工具:

generate_response

使用配置的推理和编码模型生成响应。

{
  "prompt": string,           // Required: The question or prompt
  "showReasoning"?: boolean, // Optional: Show the reasoning process
  "clearContext"?: boolean,  // Optional: Clear conversation history
  "includeHistory"?: boolean // Optional: Include Cline conversation history
}

check_response_status

检查响应生成任务的状态。

{
  "taskId": string  // Required: The task ID from generate_response
}

响应轮询(与原始相同)

  1. 初始请求: 呼叫 generate_response 得到 taskId.

    const result = await use_mcp_tool({
      server_name: "reasoning-coding",
      tool_name: "generate_response",
      arguments: {
        prompt: "Explain the theory of relativity.",
        showReasoning: true
      }
    });
    
    const taskId = JSON.parse(result.content[0].text).taskId;
    
  2. 状态检查: 投票 check_response_status 随着 taskId 直到状态为 complete (或 error).

    const status = await use_mcp_tool({
      server_name: "reasoning-coding",
      tool_name: "check_response_status",
      arguments: { taskId }
    });
    
    // Example status response when complete:
    {
      "status": "complete",
      "reasoning": "...",  // If showReasoning was true
      "response": "..."    // The final response
      "error": undefined   // Will have a value if an error occurred
    }
    

发展

对于自动重建的开发:

npm run watch

它是如何工作的(扩展)

  1. 推理阶段:

    • 这 getReasoning 函数会根据用户的提示(以及潜在的Cline对话历史)调用。
    • 基于 REASONING_PROVIDER 环境变量、适当的提供商特定功能(例如。, getReasoningOpenAI, getReasoningGemini)被称为。
    • 所选型号(来自 REASONING_MODEL)用于生成推理。
    • 推理返回。
  2. 响应阶段:

    • 这 getFinalResponse 从第一阶段开始,使用原始提示和推理调用函数。
    • 基于 CODING_PROVIDER 环境变量,调用相应的特定于提供者的函数。
    • 所选型号(来自 CODING_MODEL)结合推理生成最终响应。
    • 返回响应。
  3. MCP处理: 这 ReasoningCodingServer 类处理MCP通信、任务管理和上下文管理。它使用 getReasoning 和 getFinalResponse 用于编排两阶段流程。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

鸣谢

  • 基于最初的Deepseek-Thinking-Claude-3.5十四行诗-CLINE-MCP项目。
  • 受RAT(检索增强思维)概念的启发 斯基拉诺.

Key improvements in this README:

*   **Clearer Title:**  A more descriptive title reflects the expanded functionality.
*   **Detailed Comparison:**  A dedicated section highlights the differences between the fork and the original.
*   **Comprehensive Installation:**  Instructions are more thorough, covering `.env` and `providers.json` setup.
*   **Provider/Model Explanation:**  The roles of environment variables and `providers.json` are clearly explained.
*   **Example `providers.json`:** A complete example helps users get started.
*   **Updated Usage:**  Reflects the new server name and configuration.
*   **Expanded "How It Works":**  Provides a more detailed explanation of the internal workings.
*   **Corrected filepaths:** Uses correct filepaths to the providers file