Skip to main content
Tool calling

MCP

The Model Context Protocol (MCP) enables large language models to use external tools and data. 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.
Get the Server-Sent Events (SSE) endpoint and authentication information for the MCP service from platforms such as ModelScope.
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.8-max",
    input="Your question...",
    tools=[mcp_tool]
)

print(response.output_text)

Supported models

  • Qwen-Max: Qwen3.8-Max series, Qwen3.7-Max series
  • Qwen-Plus: Qwen3.7-Plus series, Qwen3.6-Plus series, Qwen3.5-Plus series
  • Qwen-Flash: Qwen3.7-Flash series, Qwen3.6-Flash series, Qwen3.5-Flash series
  • Qwen3.8 open-source 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 uses the Fetch web scraping MCP service from ModelScope. You can get the SSE Endpoint and authentication information for the service from the Service configuration section on the right. Get an API key and configure it as an environment variable.
Replace server_url with the SSE endpoint from the MCP service platform. Replace the authentication in headers with the token provided by that platform.
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"),
    # The following URL is for the Singapore region. Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

# MCP tool configuration
# Replace server_url with the SSE Endpoint that you got from a platform such as ModelScope
# If authentication is required, add the token from the corresponding platform to the headers
mcp_tool = {
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "fetch",
    "server_description": "Fetch MCP Server that provides web scraping capabilities. It can scrape the content of a specified URL and return it as text.",
    "server_url": "https://mcp.api-inference.modelscope.net/xxx/sse",
}

response = client.responses.create(
    model="qwen3.8-max",
    input="https://news.aibase.com/zh/news, what is the AI news today?",
    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}")
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 Max:
    *   Qwen3.8-Max series
    *   Qwen3.7-Max series
*   Qwen Plus:
    *   Qwen3.7-Plus series
    *   Qwen3.6-Plus series
    *   Qwen3.5-Plus series
*   Qwen Flash:
    *   Qwen3.7-Flash series
    *   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"),
    # The following URL is for the Singapore region. Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

# Replace server_url with the SSE Endpoint that you got from a platform such as ModelScope
# If authentication is required, add the token from the corresponding platform to the headers
mcp_tool = {
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "fetch",
    "server_description": "Fetch MCP Server that provides web scraping capabilities. It can scrape the content of a specified URL and return it as text.",
    "server_url": "https://mcp.api-inference.modelscope.net/xxx/sse",
}

stream = client.responses.create(
    model="qwen3.8-max",
    input="https://news.aibase.com/zh/news, what is the AI news today?",
    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}")
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 Max Series: Qwen3.8-Max series and Qwen3.7-Max series
*   Qwen Plus Series: Qwen3.7-Plus series, Qwen3.6-Plus series and Qwen3.5-Plus series
*   Qwen Flash Series: Qwen3.7-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:

Parameter

Required

Description

type

Yes

Set to "mcp".

server_protocol

Yes

The communication protocol with the MCP server. Currently, only "sse" is supported.

server_label

Yes

The label name of the MCP server, used to identify the service.

server_description

No

A description of the MCP server's features. This helps the model understand the service's capabilities and scenarios. Filling in this parameter is recommended to improve the accuracy of model calls.

server_url

Yes

The endpoint URL of the MCP server.

headers

No

The request headers to include when connecting to the MCP server, such as authentication information like Authorization.

Example:
{
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "fetch",
    "server_description": "Fetch MCP Server that provides web scraping capabilities. It can scrape the content of a specified URL and return it as text.",
    "server_url": "https://mcp.api-inference.modelscope.net/xxx/sse"
}

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.
Token Plan
Model Playground
Statistics and Monitoring
Support