Skip to main content
Glama
niko91i

Deepseek-Thinking-Claude-3.5-Sonnet-CLINE-MCP

by niko91i

Deepseek-Thinking-Claude-3.5-Sonnet-CLINE-MCP

A Model Context Protocol (MCP) server that combines DeepSeek R1's reasoning capabilities with Claude 3.5 Sonnet's response generation through OpenRouter. This implementation uses a two-stage process where DeepSeek provides structured reasoning which is then incorporated into Claude's response generation.

Features

  • Two-Stage Processing:

    • Uses DeepSeek R1 for initial reasoning (50k character context)

    • Uses Claude 3.5 Sonnet for final response (600k character context)

    • Both models accessed through OpenRouter's unified API

    • Injects DeepSeek's reasoning tokens into Claude's context

  • Smart Conversation Management:

    • Detects active conversations using file modification times

    • Handles multiple concurrent conversations

    • Filters out ended conversations automatically

    • Supports context clearing when needed

  • Optimized Parameters:

    • Model-specific context limits:

      • DeepSeek: 50,000 characters for focused reasoning

      • Claude: 600,000 characters for comprehensive responses

    • Recommended settings:

      • temperature: 0.7 for balanced creativity

      • top_p: 1.0 for full probability distribution

      • repetition_penalty: 1.0 to prevent repetition

Related MCP server: DeepSeek-Claude MCP Server

Installation

Installing via Smithery

To install DeepSeek Thinking with Claude 3.5 Sonnet for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @newideas99/Deepseek-Thinking-Claude-3.5-Sonnet-CLINE-MCP --client claude

Manual Installation

  1. Clone the repository:

git clone https://github.com/yourusername/Deepseek-Thinking-Claude-3.5-Sonnet-CLINE-MCP.git
cd Deepseek-Thinking-Claude-3.5-Sonnet-CLINE-MCP
  1. Install dependencies:

npm install
  1. Create a .env file with your OpenRouter API key:

# Required: OpenRouter API key for both DeepSeek and Claude models
OPENROUTER_API_KEY=your_openrouter_api_key_here

# Optional: Model configuration (defaults shown below)
DEEPSEEK_MODEL=deepseek/deepseek-r1  # DeepSeek model for reasoning
CLAUDE_MODEL=anthropic/claude-3.5-sonnet:beta  # Claude model for responses
  1. Build the server:

npm run build

Usage with Cline

Add to your Cline MCP settings (usually in ~/.vscode/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json):

{
  "mcpServers": {
    "deepseek-claude": {
      "command": "/path/to/node",
      "args": ["/path/to/Deepseek-Thinking-Claude-3.5-Sonnet-CLINE-MCP/build/index.js"],
      "env": {
        "OPENROUTER_API_KEY": "your_key_here"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Tool Usage

The server provides two tools for generating and monitoring responses:

generate_response

Main tool for generating responses with the following parameters:

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

check_response_status

Tool for checking the status of a response generation task:

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

Response Polling

The server uses a polling mechanism to handle long-running requests:

  1. Initial Request:

    • generate_response returns immediately with a task ID

    • Response format: {"taskId": "uuid-here"}

  2. Status Checking:

    • Use check_response_status to poll the task status

    • Note: Responses can take up to 60 seconds to complete

    • Status progresses through: pending → reasoning → responding → complete

Example usage in Cline:

// Initial request
const result = await use_mcp_tool({
  server_name: "deepseek-claude",
  tool_name: "generate_response",
  arguments: {
    prompt: "What is quantum computing?",
    showReasoning: true
  }
});

// Get taskId from result
const taskId = JSON.parse(result.content[0].text).taskId;

// Poll for status (may need multiple checks over ~60 seconds)
const status = await use_mcp_tool({
  server_name: "deepseek-claude",
  tool_name: "check_response_status",
  arguments: { taskId }
});

// Example status response when complete:
{
  "status": "complete",
  "reasoning": "...",  // If showReasoning was true
  "response": "..."    // The final response
}

Development

For development with auto-rebuild:

npm run watch

How It Works

  1. Reasoning Stage (DeepSeek R1):

    • Uses OpenRouter's reasoning tokens feature

    • Prompt is modified to output 'done' while capturing reasoning

    • Reasoning is extracted from response metadata

  2. Response Stage (Claude 3.5 Sonnet):

    • Receives the original prompt and DeepSeek's reasoning

    • Generates final response incorporating the reasoning

    • Maintains conversation context and history

License

MIT License - See LICENSE file for details.

Credits

Based on the RAT (Retrieval Augmented Thinking) concept by Skirano, which enhances AI responses through structured reasoning and knowledge retrieval.

This implementation specifically combines DeepSeek R1's reasoning capabilities with Claude 3.5 Sonnet's response generation through OpenRouter's unified API.

Available Tools

2 tools
check_response_statusB

Check the status of a response generation task

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesThe task ID returned by generate_response

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description states it 'checks the status,' which implies a read-only operation, but it doesn't specify whether this is a polling mechanism, if there are rate limits, authentication requirements, or what the status values might be. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence: 'Check the status of a response generation task.' It is front-loaded and wastes no words, making it highly efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (status checking with one parameter), no annotations, and no output schema, the description is minimally adequate. It identifies the purpose and relates to the sibling tool via the schema, but it lacks details on behavioral aspects like response format, error handling, or operational constraints, which are important for a status-checking tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'taskId' documented as 'The task ID returned by generate_response.' The description doesn't add any additional meaning beyond what the schema provides, such as format details or validation rules. With high schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Check the status of a response generation task.' It specifies the verb ('Check') and resource ('status of a response generation task'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from its sibling tool 'generate_response' beyond the implied relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by referencing 'task ID returned by generate_response' in the schema, suggesting this tool should be used after initiating a task with the sibling tool. However, it doesn't provide explicit guidance on when to use this tool versus alternatives or any prerequisites beyond the taskId parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_responseC

Generate a response using DeepSeek's reasoning and Claude's response generation through OpenRouter.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesThe user's input prompt
showReasoningNoWhether to include reasoning in response
clearContextNoClear conversation history before this request
includeHistoryNoInclude Cline conversation history for context

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions using DeepSeek's reasoning and Claude's response generation, hinting at AI model integration, but fails to disclose critical traits like rate limits, authentication needs, response format, error handling, or cost implications. The description adds minimal behavioral context beyond the basic action, leaving significant gaps for a tool that likely involves external API calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's action and the technologies involved. It is front-loaded with the core purpose and avoids unnecessary details. However, it could be slightly more structured by explicitly mentioning the input or output, but overall it earns its place without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of AI model integration and the lack of annotations and output schema, the description is incomplete. It does not explain the return values, error cases, or how the response is formatted (e.g., text, JSON). For a tool with 4 parameters and no structured output information, the description should provide more context to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all parameters well-documented in the input schema. The description does not add any meaning beyond what the schema provides, such as explaining how 'showReasoning' interacts with DeepSeek's reasoning or clarifying the context management. With high schema coverage, the baseline score of 3 is appropriate, as the description offers no extra parameter insights.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Generate[s] a response using DeepSeek's reasoning and Claude's response generation through OpenRouter,' which provides a clear verb ('Generate') and resource ('response') but lacks specificity about what kind of response or for what purpose. It distinguishes from the sibling tool 'check_response_status' by focusing on generation rather than status checking, but the purpose remains somewhat vague without context on the response type or domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives, such as other AI models or direct API calls. It mentions using DeepSeek and Claude via OpenRouter, but does not specify scenarios, prerequisites, or exclusions. Without explicit usage context, the agent must infer based on the tool name and parameters alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updates
    • First observedcheck_response_status
    • First observedgenerate_response

TDQS

B3/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: one checks the status of a task, while the other initiates the task itself. There is no overlap or ambiguity between monitoring and execution functions.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern (check_response_status, generate_response) with clear action-oriented names. The naming is uniform and predictable across the set.

Tool Count2/5

With only 2 tools, the server feels thin for its apparent scope of AI response generation with reasoning and status tracking. This minimal set may force agents to work around missing operations like error handling or configuration adjustments.

Completeness2/5

The toolset is severely incomplete for a response generation service. It lacks essential operations such as canceling tasks, retrieving task history, configuring generation parameters, or handling errors, which are typical in such AI workflow domains.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/niko91i/MCP-deepseek-V3-et-claude-desktop'

If you have feedback or need assistance with the MCP directory API, please join our Discord server