推理编码器MCP服务器
](https://smithery.ai/server/@mario-andreschak/mcp-reasoning-coding)
](https://smithery.ai/server/@newideas99/Deepseek-Thinking-Claude-3.5-Sonnet-CLINE-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手动安装
- 克隆此存储库:
git clone https://github.com/mario-andreschak/mcp-reasoning-coding.git
cd /mcp-reasoning-coding- 安装依赖关系:
npm install- 创建一个
.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例如。
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文档,了解有哪些选项可用。
- 构建服务器:
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
}响应轮询(与原始相同)
- 初始请求: 呼叫
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;- 状态检查: 投票
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它是如何工作的(扩展)
- 推理阶段:
- 这 getReasoning 函数会根据用户的提示(以及潜在的Cline对话历史)调用。 - 基于 REASONING_PROVIDER 环境变量、适当的提供商特定功能(例如。, getReasoningOpenAI, getReasoningGemini)被称为。 - 所选型号(来自 REASONING_MODEL)用于生成推理。 - 推理返回。
- 响应阶段:
- 这 getFinalResponse 从第一阶段开始,使用原始提示和推理调用函数。 - 基于 CODING_PROVIDER 环境变量,调用相应的特定于提供者的函数。 - 所选型号(来自 CODING_MODEL)结合推理生成最终响应。 - 返回响应。
- 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