The Model Context Protocol (MCP) enables large language models to use external tools and data. Compared with function calling, MCP offers greater flexibility and ease of use. This topic describes how to connect to MCP using the Responses API.
Usage
Add MCP server information in the tools parameter when using the Responses API.
For more information about how to find and enable an MCP server, see Enable a cloud-deployed MCP server.
Supports MCP servers using the SSE protocol.
Maximum 10 MCP servers.
# Import dependencies and create a client...
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "my-mcp-service",
"server_description": "A description of the MCP server's features to help the model understand its use cases.",
"server_url": "https://your-mcp-server-endpoint/sse",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
response = client.responses.create(
model="qwen3.7-plus",
input="Your question...",
tools=[mcp_tool]
)
print(response.output_text)
Supported models
-
Qwen-Max: Qwen3.7-Max series
-
Qwen-Plus: Qwen3.7-Plus series, Qwen3.6-Plus series, Qwen3.5-Plus series
-
Qwen-Flash: Qwen3.6-Flash series, Qwen3.5-Flash series
-
Qwen3.6 open-source series (except qwen3.6-27b)
-
Qwen3.5 open-source series
Available through the Responses API only.
Getting started
This example shows how to call an MCP tool using the Responses API to connect to the WebParser MCP server. First, enable the WebParser MCP service.
Get an API key and configure it as an environment variable.
Replaceserver_urlandheaderswith your MCP service information.
import os
from openai import OpenAI
client = OpenAI(
# If no environment variable, use: api_key="sk-xxx" (not recommended).
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)
# MCP tool configuration
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "WebParser",
"server_description": "WebParser MCP service for parsing web page content.",
"server_url": "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/mcps/WebParser/sse",
"headers": {
"Authorization": "Bearer " + os.getenv("DASHSCOPE_API_KEY")
}
}
response = client.responses.create(
model="qwen3.7-plus",
input="Which models are supported in https://help.aliyun.com/zh/model-studio/mcp ?",
tools=[mcp_tool]
)
print("[Model Response]")
print(response.output_text)
print(f"\n[Token Usage] Input: {response.usage.input_tokens}, Output: {response.usage.output_tokens}, Total: {response.usage.total_tokens}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// If no environment variable, use: apiKey: "sk-xxx" (not recommended).
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
// MCP tool configuration
const mcpTool = {
type: "mcp",
server_protocol: "sse",
server_label: "WebParser",
server_description: "WebParser MCP service for parsing web page content.",
server_url: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/mcps/WebParser/sse",
headers: {
"Authorization": "Bearer " + process.env.DASHSCOPE_API_KEY
}
};
const response = await openai.responses.create({
model: "qwen3.7-plus",
input: "Which models are supported in https://help.aliyun.com/zh/model-studio/mcp ?",
tools: [mcpTool]
});
console.log("[Model Response]");
console.log(response.output_text);
console.log(`\n[Token Usage] Input: ${response.usage.input_tokens}, Output: ${response.usage.output_tokens}, Total: ${response.usage.total_tokens}`);
}
main();curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.7-plus",
"input": "Which models are supported in https://help.aliyun.com/zh/model-studio/mcp ?",
"tools": [
{
"type": "mcp",
"server_protocol": "sse",
"server_label": "WebParser",
"server_description": "WebParser MCP service for parsing web page content.",
"server_url": "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/mcps/WebParser/sse",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
]
}'After you run the code, the following response is returned:
[Model Response]
Based on the documentation for the Model Context Protocol (MCP) on the Alibaba Cloud Model Studio (Bailian) help center, the supported models are:
* Qwen Plus:
* Qwen3.7-Plus series
* Qwen3.6-Plus series
* Qwen3.5-Plus series
* Qwen Flash:
* Qwen3.6-Flash series
* Qwen3.5-Flash series
* Qwen3.6 Open Source Series (excluding qwen3.6-27b)
* Qwen3.5 Open Source Series
Note: The documentation specifies that MCP is only supported via the Responses API (client.responses.create) and not the standard Chat Completions API.
[Token Usage] Input: 20583, Output: 1638, Total: 22221
Streaming output
MCP tool calls may involve multiple interactions with external services. Enable streaming for real-time intermediate results.
import os
from openai import OpenAI
client = OpenAI(
# If no environment variable, use: api_key="sk-xxx" (not recommended).
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "WebParser",
"server_description": "WebParser MCP service for parsing web page content.",
"server_url": "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/mcps/WebParser/sse",
"headers": {
"Authorization": "Bearer " + os.getenv("DASHSCOPE_API_KEY")
}
}
stream = client.responses.create(
model="qwen3.7-plus",
input="Which models are supported in https://help.aliyun.com/zh/model-studio/mcp ?",
tools=[mcp_tool],
stream=True
)
for event in stream:
# The model response starts
if event.type == "response.content_part.added":
print("[Model Response]")
# Streaming text output
elif event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
# The response is complete, output the usage
elif event.type == "response.completed":
usage = event.response.usage
print(f"\n\n[Token Usage] Input: {usage.input_tokens}, Output: {usage.output_tokens}, Total: {usage.total_tokens}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// If no environment variable, use: apiKey: "sk-xxx" (not recommended).
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const mcpTool = {
type: "mcp",
server_protocol: "sse",
server_label: "WebParser",
server_description: "WebParser MCP service for parsing web page content.",
server_url: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/mcps/WebParser/sse",
headers: {
"Authorization": "Bearer " + process.env.DASHSCOPE_API_KEY
}
};
const stream = await openai.responses.create({
model: "qwen3.7-plus",
input: "Which models are supported in https://help.aliyun.com/zh/model-studio/mcp ?",
tools: [mcpTool],
stream: true
});
for await (const event of stream) {
// The model response starts
if (event.type === "response.content_part.added") {
console.log("[Model Response]");
}
// Streaming text output
else if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
// The response is complete, output the usage
else if (event.type === "response.completed") {
const usage = event.response.usage;
console.log(`\n\n[Token Usage] Input: ${usage.input_tokens}, Output: ${usage.output_tokens}, Total: ${usage.total_tokens}`);
}
}
}
main();curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.7-plus",
"input": "Which models are supported in https://help.aliyun.com/zh/model-studio/mcp ?",
"tools": [
{
"type": "mcp",
"server_protocol": "sse",
"server_label": "WebParser",
"server_description": "WebParser MCP service for parsing web page content.",
"server_url": "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/mcps/WebParser/sse",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
],
"stream": true
}'After you run the code, the following response is returned:
[Model Response]
Based on the documentation page for MCP on Alibaba Cloud Model Studio, the following models are supported:
* Qwen Plus Series: Qwen3.7-Plus series, Qwen3.6-Plus series and Qwen3.5-Plus series
* Qwen Flash Series: Qwen3.6-Flash series and Qwen3.5-Flash series
* Qwen3.6 Open Source Series (excluding qwen3.6-27b)
* Qwen3.5 Open Source Series
Note: These models support MCP functionality only via the Responses API.
[Token Usage] Input: 20472, Output: 945, Total: 21417
Parameters
The mcp tool supports the following parameters:
|
Example:
|
Billing
Billing includes:
-
Model inference fees: Billed based on the model's token usage.
-
MCP server fees: Subject to the billing rules of each MCP server.