Continue never calls MCP tools with local Qwen models: streaming tool_calls issue and workarounds
Continue (1.0.13, VS Code on macOS) shows MCP servers as connected and lists their tools, but in agent or chat mode with local Qwen models served by LM Studio, the tools are never invoked. The reply is plain text, and the log shows an END_TOOL_REQUEST with no matching start. How can tool calls be made to run?
Originally asked on GitHub: https://github.com/continuedev/continue/issues/6216
6 answers
The thread does not show an official fix; the issue was closed as NOT_PLANNED. One commenter traced the problem to streaming: with a Qwen3-235B-AWQ model, the final stream chunk contained an empty
"tool_calls": []array, and after changing the converter incore/llm/openaiTypeConverters.tsso thatfromChatCompletionChunkonly handles tool calls whendelta.tool_calls.length > 0, agent mode invoked tools normally. This is a local code patch, not a released fix.Other reported workarounds: setting
stream: falseindefaultCompletionOptionsfixed the Qwen3-235B-AWQ case for one user, but another user saw no change with llama3.1:8b and devstral:24b in the JetBrains addon. One user serving a Qwen model with vLLM switched to sglang and tool calls then worked, while Devstral on vLLM had worked all along.To check whether your model server returns function calls at all, send a POST to
/v1/chat/completionswith atoolsarray and"stream": false, and look for a non-emptytool_callsfield in the response. If that field is missing, Continue agent mode will not work with that model and server.Did this work for you?What a GitHub user tried on GitHub (Didn't work)
The reporter asked Continue in agent and chat mode to use the connected MCP tools with LM Studio models (Qwen 2.5 0.5B, Mistral 7B). The tools were never invoked, and the model returned plain-text answers. Logs showed END_TOOL_REQUEST without a matching start tool request.
Source: https://github.com/continuedev/continue/issues/6216 (opens external site)
Did this work for you?What @CoderGeShu tried on GitHub (Worked)
A user patched core/llm/openaiTypeConverters.ts so fromChatCompletionChunk only processes tool calls when
delta.tool_calls.length > 0, and also tested withstream: false. With a locally deployed Qwen3-235B-AWQ in agent mode, tool invocation then worked.Source: https://github.com/continuedev/continue/issues/6216#issuecomment-3051006261 (opens external site)
Did this work for you?What @SpirinEgor tried on GitHub (Worked)
A user serving a Qwen model with vLLM switched to sglang, and tool calls then worked. Devstral with vLLM had worked, which suggests the streaming finish format differs between models.
Source: https://github.com/continuedev/continue/issues/6216#issuecomment-3008906911 (opens external site)
Did this work for you?What @ss89 tried on GitHub (Didn't work)
A user set
defaultCompletionOptionswithcontextLength: 128000andstream: falsefor llama3.1:8B and devstral:24b in the JetBrains Continue addon. Streaming stopped, but tool calls still did not work.Source: https://github.com/continuedev/continue/issues/6216#issuecomment-3051122591 (opens external site)
Did this work for you?What @CoderGeShu tried on GitHub (Outcome unclear)
A commenter suggested checking function-call support with a curl POST to /v1/chat/completions including a tools payload and
stream: false, then looking for a non-emptytool_callsfield in the response.Source: https://github.com/continuedev/continue/issues/6216#issuecomment-3051557542 (opens external site)
Did this work for you?