DeepSeek MCP Server
The DeepSeek MCP Server provides an interface to DeepSeek's language models, enabling:
Natural Language Interactions: Query models, settings, and configuration options
Model Management: Switch between
deepseek-reasoner(default) anddeepseek-chatmodels manually or via automatic fallbackConfigurable Parameters: Adjust temperature, max tokens, top-p, presence/frequency penalties
Multi-turn Conversations: Maintain context and message history across exchanges
MCP Integration: Work with MCP-compatible applications like Claude Desktop
Testing & Debugging: Use MCP Inspector to test completions and monitor performance
Proxy Functionality: Maintain anonymity by exposing only a proxy to external clients
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DeepSeek MCP Serverstart a conversation with deepseek-chat and set temperature to 0.7 for creative responses"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DeepSeek MCP Server
Model Context Protocol server for the current DeepSeek V4 API.
As of August 18, 2026, DeepSeek's public API reference documents:
POST /chat/completionswithdeepseek-v4-flashanddeepseek-v4-proPOST /responseswith native OpenAI Responses API request and response shapesPOST /beta/completionsfor V4 Pro FIM completionGET /modelsGET /user/balance
This server exposes only those documented API surfaces. It does not ship a V4 monitor, speculative image/video/upload tools, or automatic model substitution.
Tools
chat_completion: DeepSeek V4 chat. Defaults todeepseek-v4-flash. Supportsthinking: { "type": "enabled" | "disabled" },reasoning_effort: "low" | "high" | "max", JSON output, function tools, logprobs, streaming, and conversation memory.create_response: Stateless native Responses API calls with text or structured input, reasoning effort controls, function tools, server-side web search, structured output, and semantic streaming.completion: DeepSeek V4 Pro FIM completion. Defaults todeepseek-v4-pro.list_models: Reads the live DeepSeek model list.get_user_balance: Reads account balance and availability.reset_conversation: Clears an in-memory conversation.list_conversations: Lists in-memory conversation IDs.
Related MCP server: DeepSeek MCP Server
Hosted Remote
URL:
https://deepseek-mcp.ragweld.com/mcpAuth:
Authorization: Bearer <token>
Codex CLI:
export DEEPSEEK_MCP_AUTH_TOKEN="REPLACE_WITH_TOKEN"
codex mcp add deepseek --url https://deepseek-mcp.ragweld.com/mcp --bearer-token-env-var DEEPSEEK_MCP_AUTH_TOKENClaude Code:
export DEEPSEEK_MCP_AUTH_TOKEN="REPLACE_WITH_TOKEN"
claude mcp add --transport http deepseek https://deepseek-mcp.ragweld.com/mcp --header "Authorization: Bearer $DEEPSEEK_MCP_AUTH_TOKEN"Cursor:
node -e 'const fs=require("fs"),p=process.env.HOME+"/.cursor/mcp.json";let j={mcpServers:{}};try{j=JSON.parse(fs.readFileSync(p,"utf8"))}catch{};j.mcpServers={...(j.mcpServers||{}),deepseek:{url:"https://deepseek-mcp.ragweld.com/mcp",headers:{Authorization:"Bearer ${env:DEEPSEEK_MCP_AUTH_TOKEN}"}}};fs.mkdirSync(process.env.HOME+"/.cursor",{recursive:true});fs.writeFileSync(p,JSON.stringify(j,null,2));'Local Stdio
DEEPSEEK_API_KEY="REPLACE_WITH_DEEPSEEK_KEY" npx -y deepseek-mcp-serverDocker:
docker pull docker.io/dmontgomery40/deepseek-mcp-server:0.5.0
docker run --rm -i -e DEEPSEEK_API_KEY="REPLACE_WITH_DEEPSEEK_KEY" docker.io/dmontgomery40/deepseek-mcp-server:0.5.0Environment
Required:
DEEPSEEK_API_KEY=your-api-keyOptional:
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_REQUEST_TIMEOUT_MS=120000
DEEPSEEK_DEFAULT_MODEL=deepseek-v4-flash
MCP_TRANSPORT=stdio
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=3001
MCP_HTTP_PATH=/mcp
MCP_HTTP_STATEFUL_SESSION=false
MCP_HTTP_ALLOWED_ORIGINS=https://app.example.com,http://localhost:3000
CONVERSATION_MAX_MESSAGES=200MCP_HTTP_ALLOWED_ORIGINS is only needed for browser-based clients. Streamable HTTP requests that send an Origin header are rejected with 403 unless the exact origin appears in this comma-separated allowlist; normal MCP clients that omit Origin are unaffected.
Verification
npm run build
npm test
DEEPSEEK_API_KEY="REPLACE_WITH_DEEPSEEK_KEY" npm run test:live
DEEPSEEK_MCP_AUTH_TOKEN="REPLACE_WITH_TOKEN" npm run test:remoteThe live smoke test performs real DeepSeek requests for model listing, balance, non-thinking chat, thinking streaming chat with reasoning_content, a native Responses API call, FIM completion, and MCP tool calls.
Protocol Compatibility
This release uses the supported @modelcontextprotocol/sdk v1 line and the 2025-era MCP initialization flow. Migrating to the split v2 packages and the 2026-07-28 protocol era is intentionally outside this maintenance update because it changes lifecycle and packaging contracts rather than being a drop-in dependency bump.
Registry Identity
MCP Registry name:
io.github.DMontgomery40/deepseeknpm package:
deepseek-mcp-serverOCI package:
docker.io/dmontgomery40/deepseek-mcp-server:0.5.0
Official References
DeepSeek chat completions: https://api-docs.deepseek.com/api/create-chat-completion
DeepSeek Responses API: https://api-docs.deepseek.com/api/create-response
DeepSeek FIM completions: https://api-docs.deepseek.com/api/create-completion
DeepSeek models: https://api-docs.deepseek.com/api/list-models
DeepSeek balance: https://api-docs.deepseek.com/api/get-user-balance
MCP specification: https://modelcontextprotocol.io/specification/2026-07-28
MCP TypeScript SDK v2 migration guide: https://github.com/modelcontextprotocol/typescript-sdk/blob/main/docs/migration/upgrade-to-v2.md
License
MIT
Available Tools
7 toolschat_completionA
Primary DeepSeek V4 chat tool for single-turn and multi-turn generation. Defaults to deepseek-v4-flash; use deepseek-v4-pro for higher-capability reasoning. Provide either message (simple single user turn) or messages (full chat history); if both are provided, messages is used. Thinking mode is enabled by DeepSeek by default; pass thinking:{type:"disabled"} for non-thinking mode, and use reasoning_effort:"low"|"high"|"max" when thinking is enabled. Use conversation_id to persist context across calls and clear_conversation=true to reset stored state before sending the next turn. Set include_raw_response=true only for debugging because it returns the full provider payload.
| Name | Required | Description | Default |
|---|---|---|---|
| stop | No | ||
| model | No | deepseek-v4-flash | |
| tools | No | ||
| top_p | No | ||
| stream | No | ||
| message | No | ||
| user_id | No | ||
| logprobs | No | ||
| messages | No | ||
| thinking | No | ||
| extra_body | No | ||
| max_tokens | No | ||
| temperature | No | ||
| tool_choice | No | ||
| top_logprobs | No | ||
| stream_options | No | ||
| conversation_id | No | ||
| response_format | No | ||
| presence_penalty | No | ||
| reasoning_effort | No | ||
| frequency_penalty | No | ||
| clear_conversation | No | ||
| include_raw_response | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly explains default behavior (model default, thinking mode enabled by default), how to override (thinking:{type:'disabled'}), and side effects (conversation_id persists context, clear_conversation resets state, include_raw_response returns full provider payload). It lacks some details like rate limits or error behavior, but for a chat tool, it covers the key behavioral traits well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, covering all major usage points in three sentences. It front-loads the core purpose and then lists key option combinations without verbosity. Every sentence adds new information, and the structure flows logically from core usage to advanced options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (23 params, nested objects, no output schema), the description is remarkably complete. It covers selection of input format, model, thinking mode, context persistence, and debugging. While it doesn't cover every parameter (e.g., stop, tools, response_format), those are standard OpenAI-compatible parameters that the agent can infer from the schema. The description addresses the highest-value decisions for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the 23 parameters. It does this excellently by explaining the most important parameters and their interplay: message vs messages, thinking, reasoning_effort, conversation_id, clear_conversation, and include_raw_response. It also clarifies model default choices. This is critical guidance that the raw schema does not provide, making the description highly valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as the primary DeepSeek V4 chat tool for single-turn and multi-turn generation, with a specific verb ('chat'), resource ('DeepSeek V4'), and behavior. It also distinguishes itself from sibling tools by being the primary chat tool, while sibling names like 'completion' and 'create_response' suggest overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool, including model selection ('defaults to deepseek-v4-flash; use deepseek-v4-pro for higher-capability reasoning'), message format selection ('Provide either message or messages; if both are provided, messages is used'), and optional behaviors like conversation persistence and raw response inclusion. It doesn't explicitly name sibling alternatives, but the guidance is clear and context-rich.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
completionB
DeepSeek V4 Pro FIM completion tool for prompt/suffix fill-in-the-middle workflows. Defaults to deepseek-v4-pro. Use this when you need raw completion text instead of chat message formatting. Set include_raw_response=true only when you need the full provider payload for debugging.
| Name | Required | Description | Default |
|---|---|---|---|
| echo | No | ||
| stop | No | ||
| model | No | deepseek-v4-pro | |
| top_p | No | ||
| prompt | Yes | ||
| stream | No | ||
| suffix | No | ||
| logprobs | No | ||
| extra_body | No | ||
| max_tokens | No | ||
| temperature | No | ||
| presence_penalty | No | ||
| frequency_penalty | No | ||
| include_raw_response | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavior. Only mentions model default and include_raw_response usage, but lacks details on response format, limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loading purpose and usage, zero wasted words. Efficient and well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite clear purpose, the description is insufficient for a tool with 14 parameters and no output schema. Missing parameter meanings and response semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 14 parameters, description only addresses 'model' and 'include_raw_response' marginally. No information on other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it's a FIM completion tool for prompt/suffix workflows, contrasts with chat formatting, and specifies the default model. Differentiates from sibling 'chat_completion'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (raw completion vs chat) and when to set 'include_raw_response'. Does not explicitly state when not to use but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_responseA
Create a stateless DeepSeek V4 response using the native OpenAI-compatible Responses API. Defaults to deepseek-v4-flash. Provide input, instructions, or both. Use reasoning.effort for thinking control, tools for function or server-side web-search tools, and stream=true for semantic SSE aggregation. This tool does not persist provider-side response state; send the full input history for multi-turn work. Set include_raw_response=true only for debugging because it returns the full provider payload.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| user | No | ||
| input | No | ||
| model | No | ||
| tools | No | ||
| top_p | No | ||
| stream | No | ||
| reasoning | No | ||
| extra_body | No | ||
| temperature | No | ||
| tool_choice | No | ||
| instructions | No | ||
| top_logprobs | No | ||
| max_output_tokens | No | ||
| include_raw_response | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses critical behaviors: statelessness, the need to send full history for multi-turn, the streaming behavior, and the debug-only nature of `include_raw_response`. It also clarifies server-side web-search tools. This rich behavioral context goes well beyond the bare minimum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is six sentences, each providing distinct value: purpose, input requirements, parameter usage, statelessness caveat, and debugging flag. It is front-loaded with the core purpose and avoids fluff. Highly efficient for the complexity covered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (15 parameters, nested objects, no annotations, no output schema), the description covers the core operational aspects well, including state handling, streaming, and debugging. However, it omits a clear description of the default response format or return value, and since no output schema exists, this is a slight gap. Still, it is a strong contextual overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It adds meaning for key parameters like `input`, `instructions`, `reasoning.effort`, `tools`, `stream`, and `include_raw_response`, but leaves many parameters (e.g., `text`, `user`, `model`, `top_p`, `temperature`, `tool_choice`, `max_output_tokens`) without any commentary. This is a partial compensation, not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a stateless DeepSeek V4 response via the Responses API, with a specific verb and resource. However, it does not explicitly distinguish itself from sibling tools like chat_completion or completion, so the differentiation is only implicit through 'Responses API' and 'stateless'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: requiring `input`, `instructions`, or both; directing use of `reasoning.effort`, `tools`, `stream`, and `include_raw_response` for specific scenarios. It lacks explicit when-not-to-use guidance or alternative tool mentions, hence no full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_balanceARead-only
Return the current DeepSeek account balance and availability status. This tool takes no parameters and is read-only. Use it for account health checks when diagnosing provider-side failures.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description reinforces read-only nature and no parameters; annotations already provide readOnlyHint, but description adds 'availability status' and health check context, which is beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, front-loaded with purpose, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple no-parameter read-only tool with no output schema; covers purpose, parameters, usage context, and behavioral safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description explicitly states 'takes no parameters', adding clarity beyond the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States verb 'Return' and specific resources 'DeepSeek account balance and availability status'. Clearly distinguishes from sibling tools that handle completions or conversations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises use for 'account health checks when diagnosing provider-side failures', providing clear context and when-not scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversationsARead-only
List all conversation IDs currently stored in this MCP process memory. This tool takes no parameters and does not call the DeepSeek API. Useful for debugging conversation persistence behavior.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint. Description adds that it does not call the DeepSeek API, which is extra transparency beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines purpose, second adds context. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description states it lists conversation IDs but does not specify output format (e.g., array of strings). For a simple debugging tool, this is adequate but could be more complete by hinting at return type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters; schema coverage is 100%. Baseline for 0 params is 4. Description does not add param info but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists all conversation IDs stored in memory, with a specific verb ('list') and resource ('conversation IDs'). It distinguishes itself from siblings by noting no API call and no parameters, making it unique as a simple read-only list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states it is useful for debugging conversation persistence and that it takes no parameters. While it doesn't explicitly say when not to use, the context implies it's for debugging, and it distinguishes from siblings by noting no API calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsARead-only
List available DeepSeek models for model selection and validation. This tool takes no parameters. Use it before passing an explicit model ID to generation tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, so the description does not need to emphasize safety. The description adds that the tool takes no parameters, which is accurate. However, it does not disclose other behavioral aspects like caching or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and contains no extraneous information. Every sentence is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, usage context, and parameter behavior. Given the tool's simplicity (no parameters, read-only), this is adequate. It could optionally mention the return format, but it's not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameters, and the description explicitly states 'takes no parameters', which adds clarity beyond the empty schema. This compensates for the lack of parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing available DeepSeek models for model selection and validation. It uses a specific verb ('list') and resource ('available DeepSeek models'), and distinguishes it from sibling generation and balance tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use it before passing an explicit model ID to generation tools.' This tells when to use the tool and implies it's a prerequisite for generation, though it does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_conversationAIdempotent
Delete stored in-memory chat history for a conversation_id. Use this when you want to keep the same ID but start a fresh thread. This only affects server-side memory in the current MCP process.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint: true. The description adds context about in-memory operation and process scope, which is beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The action is stated first, then usage guidance. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a simple delete operation, the description covers purpose, when to use, and scope. It lacks details about error behavior on non-existent conversation_id, but for a straightforward tool it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage. The description mentions conversation_id by name but does not explain its meaning or constraints beyond the schema. For a single required parameter, it partially compensates but could be more explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete stored in-memory chat history for a `conversation_id`', specifying the action and resource. It distinguishes from sibling tools like chat_completion and list_conversations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use this when you want to keep the same ID but start a fresh thread.' It also clarifies scope: 'This only affects server-side memory in the current MCP process.' However, it lacks explicit when-not-to-use or alternatives.
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.
2 tool updates
v0.6.0- Changed
chat_completion2 fields changed- changed
Input schema / properties / reasoning_effort / enumPrevious value: -[ - "high", - "max" -]New value: +[ + "low", + "high", + "max" +] - added
Input schema / properties / user_idAdded value: +{ + "maxLength": 512, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" +}
- Added
create_response
7 tool updates
v0.5.0- Changed
chat_completion32 fields changed- added
Input schema / properties / clear_conversationAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / conversation_idAdded value: +{ + "minLength": 1, + "type": "string" +} - added
Input schema / properties / extra_bodyAdded value: +{ + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" +} - removed
Input schema / properties / frequency_penalty / defaultRemoved value: -0.1 - added
Input schema / properties / include_raw_responseAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / logprobsAdded value: +{ + "type": "boolean" +} - removed
Input schema / properties / max_tokens / defaultRemoved value: -8000 - added
Input schema / properties / message / minLengthAdded value: +1 - added
Input schema / properties / messages / items / additionalPropertiesAdded value: +{} - added
Input schema / properties / messages / items / properties / content / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / messages / items / properties / content / typeRemoved value: -"string" - added
Input schema / properties / messages / items / properties / nameAdded value: +{ + "type": "string" +} - added
Input schema / properties / messages / items / properties / prefixAdded value: +{ + "type": "boolean" +} - added
Input schema / properties / messages / items / properties / reasoning_contentAdded value: +{ + "type": "string" +} - changed
Input schema / properties / messages / items / properties / role / enumPrevious value: -[ - "system", - "user", - "assistant" -]New value: +[ + "system", + "user", + "assistant", + "tool" +] - added
Input schema / properties / messages / items / properties / tool_call_idAdded value: +{ + "type": "string" +} - added
Input schema / properties / messages / items / properties / tool_callsAdded value: +{ + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - changed
Input schema / properties / messages / items / requiredPrevious value: -[ - "role", - "content" -]New value: +[ + "role" +] - added
Input schema / properties / messages / minItemsAdded value: +1 - changed
Input schema / properties / model / defaultPrevious value: -"deepseek-reasoner"New value: +"deepseek-v4-flash" - removed
Input schema / properties / presence_penalty / defaultRemoved value: -0 - added
Input schema / properties / reasoning_effortAdded value: +{ + "enum": [ + "high", + "max" + ], + "type": "string" +} - added
Input schema / properties / response_formatAdded value: +{ + "additionalProperties": {}, + "properties": { + "type": { + "enum": [ + "text", + "json_object" + ], + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" +} - added
Input schema / properties / stopAdded value: +{ + "anyOf": [ + { + "minLength": 1, + "type": "string" + }, + { + "items": { + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + } + ] +} - added
Input schema / properties / streamAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / stream_optionsAdded value: +{ + "additionalProperties": {}, + "properties": { + "include_usage": { + "type": "boolean" + } + }, + "type": "object" +} - removed
Input schema / properties / temperature / defaultRemoved value: -0.7 - added
Input schema / properties / thinkingAdded value: +{ + "additionalProperties": false, + "properties": { + "type": { + "enum": [ + "enabled", + "disabled" + ], + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / tool_choiceAdded value: +{ + "anyOf": [ + { + "enum": [ + "none", + "auto", + "required" + ], + "type": "string" + }, + { + "additionalProperties": {}, + "properties": { + "function": { + "additionalProperties": {}, + "properties": { + "name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": { + "const": "function", + "type": "string" + } + }, + "required": [ + "type", + "function" + ], + "type": "object" + } + ] +} - added
Input schema / properties / toolsAdded value: +{ + "items": { + "additionalProperties": {}, + "properties": { + "function": { + "additionalProperties": {}, + "properties": { + "description": { + "type": "string" + }, + "name": { + "minLength": 1, + "type": "string" + }, + "parameters": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "strict": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": { + "const": "function", + "type": "string" + } + }, + "required": [ + "type", + "function" + ], + "type": "object" + }, + "type": "array" +} - added
Input schema / properties / top_logprobsAdded value: +{ + "maximum": 20, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / top_p / defaultRemoved value: -1
- Added
completion - Added
get_user_balance - Added
list_conversations - Added
list_models - Removed
multi_turn_chat - Added
reset_conversation
2 tool updates
v1.0.0- First observed
chat_completion - First observed
multi_turn_chat
TDQS
Each tool targets a distinct purpose: chat vs. FIM completion, account balance, conversation listing, model listing, and conversation reset. No overlapping functionality.
Names use consistent snake_case with verb_noun pattern (e.g., get_user_balance, list_conversations). 'completion' deviates slightly as a bare noun, but is conventional for FIM tools.
Six tools cover essential operations for a DeepSeek API server: generation (chat and FIM), account health, model introspection, and conversation management. Neither too sparse nor excessive.
Core workflows are covered: chat, completion, account check, model listing, conversation reset. Minor gaps include no explicit delete_conversation or streaming support, but these are reasonable omissions.
Maintenance
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
Connect MCP clients to 2,000+ AI models without managing provider API keys.
MCP server for AI dialogue using various LLM models via AceDataCloud
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for GLM chat completions using Zhipu AI models via AceDataCloud
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables seamless integration between Ollama's local LLM models and MCP-compatible applications, supporting model management and chat interactions.131,144170AGPL 3.0
- AlicenseDqualityDmaintenanceAllows seamless integration of DeepSeek's language models with MCP-compatible applications like Claude Desktop, supporting features such as model selection, temperature control, and multi-turn conversations with automatic model fallback.24952MIT
- FlicenseNot gradedqualityDmaintenanceIntegrates local language models (like Qwen3-8B) with MCP clients, providing tools for chat, code analysis, text generation, translation, and content summarization using your own hardware.-
- AlicenseAqualityAmaintenanceMCP server for DeepSeek AI models (Chat + Reasoner). Supports multi-turn sessions, model fallback with circuit breaker, function calling, thinking mode, JSON output, multimodal input, and cost tracking.351717MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/DMontgomery40/deepseek-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server