Skip to main content
Glama
DMontgomery40

DeepSeek MCP Server

completion

Generate raw fill-in-the-middle text by providing a prompt and optional suffix, bypassing chat message formatting for direct code or document completion.

Instructions

DeepSeek FIM completion tool for prompt/suffix fill-in-the-middle workflows. Defaults to deepseek-flash in non-thinking mode. 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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
echoNo
stopNo
modelNodeepseek-flash
top_pNo
promptYes
streamNo
suffixNo
logprobsNo
extra_bodyNo
max_tokensNo
temperatureNo
presence_penaltyNo
frequency_penaltyNo
include_raw_responseNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNo
modelNo
usageNo
statusNo
messageNo
retryableNo
error_typeNo
suggestionNo
raw_responseNo
finish_reasonNo
stream_chunk_countNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.0.1
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / model / default
      Previous value: -"deepseek-v4-pro"New value: +"deepseek-flash"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "error_type": {
      +      "enum": [
      +        "deepseek_api_error",
      +        "tool_execution_error"
      +      ],
      +      "type": "string"
      +    },
      +    "finish_reason": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "model": {
      +      "type": "string"
      +    },
      +    "raw_response": {
      +      "additionalProperties": {},
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "retryable": {
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "anyOf": [
      +        {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "stream_chunk_count": {
      +      "anyOf": [
      +        {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "suggestion": {
      +      "type": "string"
      +    },
      +    "text": {
      +      "type": "string"
      +    },
      +    "usage": {
      +      "anyOf": [
      +        {},
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. Addedv0.5.0

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false), so the description needn't restate them. It adds useful behavior context: the default model is deepseek-flash in non-thinking mode, and include_raw_response is a debugging-only switch that expands the payload. It says nothing about cost, rate limits, or auth, so it adds value but is not rich.

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?

Three tight sentences, front-loaded with what the tool is and the differentiator, then the usage condition, then the debugging caveat. No filler, though the guidance sentence could be grouped more crisply.

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?

An output schema exists, so return-value explanation is not required, and annotations cover the safety profile. The remaining hole is the 14 undocumented parameters, plus no mention of suffix/prompt interaction semantics that are the point of FIM. Adequate but with a real gap.

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

Parameters2/5

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

Schema description coverage is 0% across 14 parameters, so the description must carry the semantic load. It only clarifies two of them (model default, include_raw_response) and leaves temperature/top_p/stop/suffix/logprobs/echo/stream/extra_body/etc. entirely undocumented in both places. This is a significant gap for a 14-param tool.

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

Purpose5/5

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

States a concrete verb and resource ('FIM completion tool for prompt/suffix fill-in-the-middle') and explicitly contrasts with the sibling chat path ('raw completion text instead of chat message formatting'). An agent can distinguish this from chat_completion/create_response without opening any schema.

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

Usage Guidelines4/5

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

Gives a clear selection condition: use this when you want raw completion text rather than chat-formatted messages, which implicitly routes agents away from chat_completion. It also scopes include_raw_response=true to debugging only. No explicit when-not or prerequisite conditions are stated, so it stops short of a 5.

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