Skip to content

Release history

arikusi/deepseek-mcp-server releases

MCP server for DeepSeek AI with chat, reasoning, multi-turn sessions, function calling, thinking mode, and cost tracking.

All releases

20 shown

v1.7.0 Breaking risk
⚠ Upgrade required
  • HTTP transport users must upgrade immediately; client code relying on shared session state across HTTP sessions must be refactored to use per‑session instances.
  • Call `UsageTracker.setSessionSource()` to wire `activeSessions` correctly for STDIO vs. HTTP transports; in HTTP mode it will report 0 by design.
Breaking changes
  • Each HTTP session now receives its own `SessionStore` instance; conversation history, listings, and deletions are scoped per-session.
  • `SessionStore.getInstance()` and `SessionStore.resetInstance()` removed; construct instances with `new SessionStore()` and pass explicitly to tool registration functions.
Security fixes
  • CVE pending: Cross-session data exposure in HTTP transport fixed by isolating each HTTP session's `SessionStore` to prevent unauthorized access to other clients' conversation history and session enumeration/deletion capabilities.
Notable features
  • Added integration test (`src/transport-isolation.test.ts`) verifying per-HTTP‑session store isolation.
  • Added unit tests confirming independent `SessionStore` instances have no cross-store effects on `clear`, `delete`, or `list` operations.
Full changelog

Security

Cross-session data exposure in HTTP transport (high severity). The SessionStore was a process-wide singleton shared across all connected HTTP clients. In HTTP transport mode, any client that provided another client's session_id to deepseek_chat would read that client's conversation history. The deepseek_sessions tool compounded this by letting any client enumerate all active session IDs (list), delete any session (delete), or wipe every tenant's sessions at once (clear).

STDIO transport was unaffected — each STDIO client runs its own server process, so there was no shared state to leak.

Full advisory and CVE coordination pending.

Changed

  • BREAKING (HTTP transport only). Each HTTP session now gets an isolated SessionStore instance. Conversation history, session listings, and session deletion are scoped to the HTTP session that created them. Clients on the same server no longer share session state.
  • SessionStore is no longer a singleton. SessionStore.getInstance() and SessionStore.resetInstance() have been removed. Construct instances with new SessionStore() and pass them explicitly to registerChatTool, registerSessionsTool, and registerAllTools.
  • UsageTracker.getStats().activeSessions is wired to the STDIO store via UsageTracker.setSessionSource(). In HTTP transport it reports 0 by design — a process-wide count across isolated stores would be both meaningless and a minor cross-tenant information leak.

Added

  • SessionStore isolation tests: independent instances, no shared state, no cross-store effects on clear/delete/list.
  • HTTP transport integration test (src/transport-isolation.test.ts) proving each serverFactory invocation produces a fresh store and that user-supplied session_id collisions across HTTP sessions do not merge data.

Upgrade

npm install @arikusi/[email protected]

Users on STDIO transport: no action needed beyond the upgrade.

Users on HTTP transport: upgrade immediately. Session data is now correctly scoped per HTTP session — if your client relied on cross-client session sharing, that behaviour was the vulnerability and must be reworked.

v1.6.0 New feature
Notable features
  • Transparent reasoner routing through chat with thinking mode enabled
  • Model‑aware parameter filtering for thinking requests
Full changelog

What's New

All deepseek-reasoner requests are now transparently routed through deepseek-chat with thinking:{type:"enabled"}. This is possible because both model names point to the same DeepSeek V3.2 model - deepseek-chat is non-thinking mode, deepseek-reasoner is thinking mode.

By routing through deepseek-chat + thinking, we get full feature parity including function calling, which the raw deepseek-reasoner API does not support.

Model Routing Table

| User selects | Sent to API | Thinking | Function calling |
|---|---|---|---|
| deepseek-chat | deepseek-chat | Off | Yes |
| deepseek-chat + thinking:enabled | deepseek-chat + thinking | On | Yes |
| deepseek-reasoner | deepseek-chat + thinking | On | Yes |

Changes

Added

  • Transparent reasoner routing through chat + thinking mode
  • Model-aware parameter filtering for thinking mode

Fixed

  • Function calling now works with deepseek-reasoner (via transparent routing)
  • Sampling parameters (temperature, top_p, etc.) properly filtered for reasoning requests
  • Thinking parameter passed as top-level property instead of extra_body (OpenAI SDK v6 compatibility)
  • Corrected model capabilities in deepseek://models resource

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.5.2...v1.6.0

v1.5.2 Bug fix

Rejects non‑POST requests on `/mcp` endpoint to prevent indefinite hangs.

Full changelog

Bug Fix

  • fix: reject non-POST requests on /mcp endpoint — External GET requests caused the stateless MCP transport to hang indefinitely, triggering Cloudflare Worker "code hung" errors on all requests. Now returns 405 for non-POST methods.

Updates

  • Add Official MCP Registry, Smithery, LobeHub badges to README
  • Add websiteUrl to server.json
  • Bump version to 1.5.2
v1.5.1 Security relevant
⚠ Upgrade required
  • Update @modelcontextprotocol/sdk to at least ^1.27.1 and wrangler to at least ^4.71.0.
Security fixes
  • CVE-2026-25536 — cross-client data leak patched by updating @modelcontextprotocol/sdk to ^1.27.1
  • CVE-2026-0933 — OS command injection vulnerability patched by updating wrangler to ^4.71.0
Full changelog

Fixed

  • Update @modelcontextprotocol/sdk to ^1.27.1 to patch cross-client data leak vulnerability (CVE-2026-25536)
  • Update wrangler to ^4.71.0 to patch OS command injection vulnerability (CVE-2026-0933)

Changed

  • Circuit breaker is now per-model instead of shared across all models. If one model becomes unhealthy, the other remains available independently.
v1.5.0 New feature
Notable features
  • Cloudflare Workers remote BYOK endpoint hosted at https://deepseek-mcp.tahirl.com/mcp
  • Stateless MCP server on Cloudflare edge network with zero cold start latency
  • Internal streaming of DeepSeek API responses to avoid timeouts
Full changelog

Cloudflare Workers Remote Endpoint (BYOK)

Added

  • Remote Endpoint: Hosted BYOK endpoint at https://deepseek-mcp.tahirl.com/mcp
  • Cloudflare Worker: Stateless MCP server on edge network, zero cold start
  • Internal Streaming: Worker streams DeepSeek API responses to prevent timeout

Quick Start (Remote)

claude mcp add --transport http deepseek \
  https://deepseek-mcp.tahirl.com/mcp \
  --header "Authorization: Bearer YOUR_DEEPSEEK_API_KEY"

Full changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.4.3...v1.5.0

v1.4.3 Bugfix

Fixed MCP Registry server.json description exceeding 100‑character limit.

Full changelog

Fixed

  • MCP Registry: shortened server.json description to meet 100-char validation limit

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.4.2...v1.4.3

v1.4.2 New feature
⚠ Upgrade required
  • New config keys: `TRANSPORT` (stdio|http) and `HTTP_PORT` (default 3000)
  • When using HTTP transport set `TRANSPORT=http` and optionally override `HTTP_PORT`
Notable features
  • Streamable HTTP Transport with per‑session McpServer instances and SSE streaming
  • Health endpoint `GET /health` returning status, version, uptime
  • Docker support via multi‑stage Dockerfile, docker-compose.yml, and built‑in health check
Full changelog

What's New

  • Streamable HTTP Transport: TRANSPORT=http mode with Express-based server, per-session McpServer instances, SSE streaming
  • Health Endpoint: GET /health — status, version, uptime
  • Docker Support: Multi-stage Dockerfile, docker-compose.yml, built-in health check
  • Docker CI: GitHub Actions smoke test for Docker build
  • New Config: TRANSPORT (stdio|http), HTTP_PORT (default: 3000)
  • 253 Tests (up from 241)

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.4.1...v1.4.2

v1.4.1 New feature
Notable features
  • MCP Registry support via `mcpName` field for registry.modelcontextprotocol.io publishing
  • Glama Registry support with `glama.json` for glama.ai server listing
  • Smithery compatibility: CJS bundler fallback and `createSandboxServer()` export
Full changelog

Added

  • MCP Registry: mcpName for official MCP Registry (registry.modelcontextprotocol.io) publishing
  • Glama Registry: glama.json for glama.ai server listing
  • Smithery Compatibility: CJS bundler fallback, createSandboxServer() export

Changed

  • server.json: Updated to official MCP Registry schema format
  • README: Added Glama badge
v1.4.0 New feature
Notable features
  • Per-model pricing with `getPricing()` helper and optional `model` parameter in `calculateCost()`
  • Multimodal content types: `TextContentPart`, `ImageContentPart`; enable via `ENABLE_MULTIMODAL=true`
  • Flexible fallback chain supporting 3+ models through `FALLBACK_ORDER`
Full changelog

What's New

  • Model-aware pricing: Per-model pricing map with getPricing() helper. calculateCost() accepts optional model parameter.
  • Multimodal content types: TextContentPart, ImageContentPart types. Message content supports string | ContentPart[]. Enable with ENABLE_MULTIMODAL=true.
  • Flexible fallback chain: FALLBACK_ORDER supports 3+ model fallback chains.
  • MCP Registry metadata: server.json for registry submission.
  • 241 tests (up from 212).

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.3.3...v1.4.0

v1.3.3 Breaking risk
Notable features
  • Configurable circuit breaker via CIRCUIT_BREAKER_THRESHOLD and CIRCUIT_BREAKER_RESET_TIMEOUT
  • Session message limit with MAX_SESSION_MESSAGES to bound memory usage
Full changelog

What's Changed

Fixed

  • Session Tool Calls: ChatMessage interface now includes tool_calls field — multi-turn function calling no longer loses tool context between requests
  • Default Model Config: DEFAULT_MODEL env variable now correctly applies to the deepseek_chat tool schema default value
  • Double Config Load: Removed redundant loadConfig() call in index.ts
  • Circuit Breaker Hardcoded Params: Circuit breaker threshold and reset timeout are now read from config instead of being hardcoded

Added

  • Configurable Circuit Breaker: CIRCUIT_BREAKER_THRESHOLD (default: 5) and CIRCUIT_BREAKER_RESET_TIMEOUT (default: 30000ms) environment variables
  • Session Message Limit: MAX_SESSION_MESSAGES (default: 200) prevents unbounded memory growth with sliding window eviction
  • Streaming Fallback Tests: 4 new tests covering streaming fallback edge cases
  • 212 Tests: Up from 208, all passing

New Configuration Variables

| Variable | Default | Description |
|----------|---------|-------------|
| CIRCUIT_BREAKER_THRESHOLD | 5 | Consecutive failures before circuit opens |
| CIRCUIT_BREAKER_RESET_TIMEOUT | 30000 | Milliseconds before circuit half-opens |
| MAX_SESSION_MESSAGES | 200 | Max messages per session (sliding window) |

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.3.2...v1.3.3

v1.3.2 Breaking risk

Minor fixes and improvements.

Full changelog

Changed

  • OpenAI SDK v6: Upgraded from v4.104.0 to v6.27.0 — chat.completions.create() API unchanged, zero breaking changes
  • Zod v4: Upgraded from v3.25.76 to v4.3.6 — 14x faster string parsing, 7x faster array, 6.5x faster object parsing
  • New Config: DEFAULT_MODEL env variable (default: deepseek-chat)
  • Keywords: Added gemini-cli, mcp-server to npm package keywords

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.3.1...v1.3.2

v1.3.1 Security relevant
Security fixes
  • Fixed multiple high‑severity vulnerabilities in transitive dependencies: hono, @hono/node-server, rollup, ajv, qs
Notable features
  • Added test coverage for deepseek_sessions tool (8 tests, >90% coverage)
  • Added test coverage for tool registration aggregator (2 tests)
Full changelog

Fixed

  • Security: Resolved 5 vulnerabilities (3 high) in transitive dependencies (hono, @hono/node-server, rollup, ajv, qs)

Added

  • Test Coverage: deepseek_sessions tool tests (8 tests, 0% → 90%+ coverage)
  • Test Coverage: Tool registration aggregator tests (2 tests)
  • 208 Tests: Up from 198

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.3.0...v1.3.1

v1.3.0 New feature
Notable features
  • Multi‑Turn Sessions: `session_id` parameter on `deepseek_chat`, `deepseek_sessions` tool for listing, deleting, and clearing sessions
  • Configurable session TTL (`SESSION_TTL_MINUTES`) and maximum count (`MAX_SESSIONS`)
  • Model Fallback & Circuit Breaker with automatic fallback between `deepseek-chat` and `deepseek-reasoner` on retryable errors, configurable via `FALLBACK_ENABLED`
Full changelog

What's New

Multi-Turn Sessions

  • session_id parameter on deepseek_chat for conversation context across requests
  • deepseek_sessions tool to list, delete, and clear sessions
  • Configurable TTL (SESSION_TTL_MINUTES) and max count (MAX_SESSIONS)

Model Fallback & Circuit Breaker

  • Automatic fallback between deepseek-chatdeepseek-reasoner on retryable errors (429, 503, timeout)
  • Circuit breaker: 5 failures → fast-fail for 30s → probe → recover
  • Configurable via FALLBACK_ENABLED

MCP Resources

  • deepseek://models — model capabilities, context limits, pricing
  • deepseek://config — server configuration (API key masked)
  • deepseek://usage — real-time usage stats (requests, tokens, costs, cache ratio)

Stats

  • 198 tests (up from 150)
  • 25 files changed, +1895 lines
  • 11 new source files, 14 modified

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.2.0...v1.3.0

v1.2.0 New feature
⚠ Upgrade required
  • Unified V3.2 pricing now charges cache hits at $0.028/1M tokens, misses at $0.28/1M, output at $0.42/1M.
  • max_tokens limit increased from 32768 to 65536; warnings for deepseek-chat above 8192 and deepseek-reasoner above 65536.
Notable features
  • Thinking Mode: enhanced reasoning via `thinking: {type: "enabled"}` (filters incompatible params).
  • JSON Output Mode: structured JSON responses with `json_mode: true`.
  • Cache-Aware Cost Tracking: new fields `prompt_cache_hit_tokens`, `prompt_cache_miss_tokens` and cost breakdown interface.
Full changelog

DeepSeek V3.2 Full Compatibility

Both deepseek-chat and deepseek-reasoner now run DeepSeek-V3.2 (128K context). This release brings full V3.2 support with accurate pricing, new features, and 150 tests.

Added

  • Thinking Mode: Enable enhanced reasoning on deepseek-chat with thinking: {type: "enabled"}. Incompatible params (temperature, top_p, etc.) are automatically filtered with logged warnings.
  • JSON Output Mode: Structured JSON responses with json_mode: true. Supported by both models. Warns if "json" word missing from prompt.
  • Cache-Aware Cost Tracking: V3.2 API returns prompt_cache_hit_tokens and prompt_cache_miss_tokens. Cost display now shows cache hit ratio and savings.
  • CostBreakdown Interface: calculateCost() returns structured {inputCost, outputCost, totalCost, cacheHitRatio?, cacheSavings?}.

Changed

  • V3.2 Unified Pricing: Cache hit $0.028/1M, cache miss $0.28/1M, output $0.42/1M (replaces old per-model pricing).
  • max_tokens Limit: Updated from 32768 to 65536. Model-specific warnings: deepseek-chat warns above 8192, deepseek-reasoner warns above 65536.
  • 150 Tests: Up from 126, covering thinking mode, JSON mode, cache tokens, and cost breakdown.

Fixed

  • Incorrect Cost Reports: Old flat pricing replaced with accurate V3.2 unified pricing.
  • Context Length: Documentation updated from 64K to 128K.

Usage Examples

Thinking Mode:

{
  "messages": [{"role": "user", "content": "Analyze quicksort complexity"}],
  "model": "deepseek-chat",
  "thinking": {"type": "enabled"}
}

JSON Mode:

{
  "messages": [{"role": "user", "content": "Return a json object with user data"}],
  "model": "deepseek-chat",
  "json_mode": true
}

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.1.1...v1.2.0

v1.1.1 Maintenance

Minor fixes and improvements.

Full changelog

Modular architecture, type safety, security fixes, 126 tests. See CHANGELOG for details.

v1.1.0 Breaking risk
Notable features
  • OpenAI-compatible function calling via `tools` and `tool_choice` with up to 128 tool definitions using JSON Schema
  • Centralized Zod-validated configuration through environment variables (`DEEPSEEK_BASE_URL`, `SHOW_COST_INFO`, `REQUEST_TIMEOUT`, `MAX_RETRIES`)
  • 12 new prompts including `function_call_debug` for debugging and `create_function_schema` for generating JSON Schema from natural language
Full changelog

What's New

Function Calling

  • OpenAI-compatible function calling via tools and tool_choice parameters
  • Up to 128 tool definitions with JSON Schema parameters
  • tool message role for sending function results back
  • Streaming + function calling works together (delta accumulation)

Centralized Config System

  • Zod-validated configuration from environment variables
  • DEEPSEEK_BASE_URL: Custom API endpoint
  • SHOW_COST_INFO: Toggle cost display (default: true)
  • REQUEST_TIMEOUT: API timeout in ms (default: 60000)
  • MAX_RETRIES: Max retry count (default: 2)

Test Suite

  • 85 tests across 5 test files with Vitest
  • 80%+ code coverage (v8 provider)
  • CI coverage job added

Code Modularization

  • config.ts: Centralized configuration
  • cost.ts: Cost calculation (extracted from index.ts)
  • schemas.ts: Zod validation schemas (extracted from index.ts)

New Prompts (12 total)

  • function_call_debug: Debug function calling issues
  • create_function_schema: Generate JSON Schema from natural language

Backward Compatible

No breaking changes. Existing installations work without any changes.

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.0.3...v1.1.0

v1.0.3 New feature
⚠ Upgrade required
  • Pricing for DeepSeek Reasoner updated to $0.55 per 1M input tokens and $2.19 per 1M output tokens – update billing configurations accordingly
Notable features
  • Cost tracking for API requests with automatic USD calculation and structured `structuredContent.cost_usd` field
  • Ten new MCP prompt templates covering debugging, code review, research synthesis, strategic planning, ELI5 explanations, mathematical proofs, argument validation, creative ideation, cost comparison, and pair programming
  • Enhanced response format including token breakdown, model name, and cost in USD
Full changelog

Added

  • Cost tracking for API requests
    • Automatic cost calculation based on token usage
    • USD cost included in response output
    • Cost data available in structuredContent.cost_usd
  • 10 MCP prompt templates for common reasoning tasks
    • debug_with_reasoning: Debug code with step-by-step analysis
    • code_review_deep: Comprehensive code review
    • research_synthesis: Research and synthesize information
    • strategic_planning: Create strategic plans with reasoning
    • explain_like_im_five: Explain complex topics simply
    • mathematical_proof: Prove mathematical statements
    • argument_validation: Analyze arguments for logical fallacies
    • creative_ideation: Generate creative ideas with feasibility analysis
    • cost_comparison: Compare LLM costs
    • pair_programming: Interactive coding assistant
  • Enhanced response format with request information section
    • Token breakdown (prompt + completion)
    • Model name
    • Cost in USD

Changed

  • Updated DeepSeek Reasoner pricing to current rates ($0.55/$2.19 per 1M tokens)
v1.0.2 Security relevant
Security fixes
  • Added .claude.json, .claude/, .npmrc, and PROJECT_CONTEXT.md to .npmignore to prevent accidental inclusion in published npm packages
Full changelog

Changes

  • Security improvements to .npmignore

What's Changed

  • Add sensitive files to .npmignore to prevent accidental publishing
  • Exclude .claude.json, .claude/, .npmrc, and PROJECT_CONTEXT.md from npm package

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.0.1...v1.0.2

v1.0.1 Maintenance
Notable features
  • Scope options documentation (-s user/local/project)
  • Detailed troubleshooting for API key configuration
Full changelog

Changes

  • Update MCP SDK to v1.25.2
  • Improve installation documentation
  • Add troubleshooting guide

What's Changed

  • Update @modelcontextprotocol/sdk from ^1.0.4 to ^1.25.2
  • Fix claude mcp add command syntax in README
  • Add scope options documentation (-s user/local/project)
  • Add detailed troubleshooting for API key configuration

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/compare/v1.0.0...v1.0.1

v1.0.0 New feature
Notable features
  • Support for deepseek-chat model
  • Support for deepseek-reasoner (R1) model with reasoning traces
  • Streaming mode support
Full changelog

Initial Release

First public release of DeepSeek MCP Server.

Features

  • Support for deepseek-chat model
  • Support for deepseek-reasoner (R1) model with reasoning traces
  • Streaming mode support
  • Full TypeScript implementation
  • OpenAI-compatible API client
  • MCP protocol compliance

Installation

npm install @arikusi/deepseek-mcp-server

Full Changelog: https://github.com/arikusi/deepseek-mcp-server/blob/main/CHANGELOG.md

Beta — feedback welcome: [email protected]