模型上下文协议(Model Context Protocol, MCP)可帮助大模型使用外部工具与数据,相比 Function Calling,MCP 更灵活且易于使用。本文介绍通过 Responses API接入 MCP 的方法。
使用方式
使用 Responses API,在 tools 参数中配置MCP Server信息。
可从 ModelScope 等平台获取 MCP 服务的 SSE Endpoint 与鉴权信息。
支持配置SSE协议的 MCP Server。
最多添加 10 个 MCP Server。
# 导入依赖与创建客户端...
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "my-mcp-service",
"server_description": "MCP 服务功能描述,帮助模型理解使用场景。",
"server_url": "https://your-mcp-server-endpoint/sse",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
response = client.responses.create(
model="qwen3.6-plus",
input="你的问题...",
tools=[mcp_tool]
)
print(response.output_text)支持的模型
千问Max:Qwen3.7-Max系列
千问Plus:Qwen3.7-Plus系列、Qwen3.6-Plus系列、Qwen3.5-Plus系列
千问Flash:Qwen3.6-Flash系列、Qwen3.5-Flash系列
Qwen3.6开源系列(qwen3.6-27b除外)
Qwen3.5开源系列
仅支持通过 Responses API 调用。
快速开始
以接入 ModelScope 提供的Fetch网页抓取MCP为例。通过右侧的Service configuration,获取服务的 SSE Endpoint 与鉴权信息。
请将示例代码中的server_url替换为您从 MCP 服务平台获取的 SSE Endpoint,将headers中的鉴权信息替换为对应平台提供的 Token。
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"(不建议),
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下为新加坡地域URL,调用时请将WorkspaceId替换为真实的业务空间ID,各地域的URL不同。
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
# MCP 工具配置
# 请将 server_url 替换为您从 ModelScope 等平台获取的 SSE Endpoint
# 如需鉴权,请在 headers 中添加对应平台的 Token
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "fetch",
"server_description": "Fetch MCP Server,提供网页内容获取能力,可以抓取指定URL的网页内容并返回文本。",
"server_url": "https://mcp.api-inference.modelscope.net/xxx/sse",
}
response = client.responses.create(
model="qwen3.6-plus",
input="https://news.aibase.com/zh/news,今天有哪些AI新闻?",
tools=[mcp_tool]
)
print("[模型回复]")
print(response.output_text)
print(f"\n[Token 用量] 输入: {response.usage.input_tokens}, 输出: {response.usage.output_tokens}, 合计: {response.usage.total_tokens}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// 以下为新加坡地域URL,调用时请将WorkspaceId替换为真实的业务空间ID,各地域的URL不同。
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
// MCP 工具配置
// 请将 server_url 替换为您从 ModelScope 等平台获取的 SSE Endpoint
// 如需鉴权,请在 headers 中添加对应平台的 Token
const mcpTool = {
type: "mcp",
server_protocol: "sse",
server_label: "fetch",
server_description: "Fetch MCP Server,提供网页内容获取能力,可以抓取指定URL的网页内容并返回文本。",
server_url: "https://mcp.api-inference.modelscope.net/xxx/sse",
};
const response = await openai.responses.create({
model: "qwen3.6-plus",
input: "https://news.aibase.com/zh/news,今天有哪些AI新闻?",
tools: [mcpTool]
});
console.log("[模型回复]");
console.log(response.output_text);
console.log(`\n[Token 用量] 输入: ${response.usage.input_tokens}, 输出: ${response.usage.output_tokens}, 合计: ${response.usage.total_tokens}`);
}
main();# 请将 server_url 替换为您从 ModelScope 等平台获取的 SSE Endpoint
# 如需鉴权,请在 headers 中添加对应平台的 Token
# 以下为新加坡地域URL,调用时请将WorkspaceId替换为真实的业务空间ID,各地域的URL不同。
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.6-plus",
"input": "https://news.aibase.com/zh/news,今天有哪些AI新闻?",
"tools": [
{
"type": "mcp",
"server_protocol": "sse",
"server_label": "fetch",
"server_description": "Fetch MCP Server,提供网页内容获取能力,可以抓取指定URL的网页内容并返回文本。",
"server_url": "https://mcp.api-inference.modelscope.net/xxx/sse"
}
]
}'运行以上代码可获取如下回复:
[模型回复]
根据阿里云百炼的官方文档,MCP(Model Context Protocol)目前支持的模型如下:
* 千问Plus系列:Qwen3.6-Plus系列、Qwen3.5-Plus系列
* 千问Flash系列:Qwen3.6-Flash系列、Qwen3.5-Flash系列
* 千问开源系列:Qwen3.6开源系列(注:qwen3.6-27b 除外)、Qwen3.5开源系列
特别注意:
MCP 功能仅支持通过 Responses API 调用。
[Token 用量] 输入: 20698, 输出: 711, 合计: 21409流式输出
MCP 工具调用可能涉及多次外部服务交互,建议启用流式输出,实时获取工具调用过程与回复内容。
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下为新加坡地域URL,调用时请将WorkspaceId替换为真实的业务空间ID,各地域的URL不同。
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
# 请将 server_url 替换为您从 ModelScope 等平台获取的 SSE Endpoint
# 如需鉴权,请在 headers 中添加对应平台的 Token
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "fetch",
"server_description": "Fetch MCP Server,提供网页内容获取能力,可以抓取指定URL的网页内容并返回文本。",
"server_url": "https://mcp.api-inference.modelscope.net/xxx/sse",
}
stream = client.responses.create(
model="qwen3.6-plus",
input="https://news.aibase.com/zh/news,今天有哪些AI新闻?",
tools=[mcp_tool],
stream=True
)
for event in stream:
# 模型回复开始
if event.type == "response.content_part.added":
print("[模型回复]")
# 流式文本输出
elif event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
# 响应完成,输出用量
elif event.type == "response.completed":
usage = event.response.usage
print(f"\n\n[Token 用量] 输入: {usage.input_tokens}, 输出: {usage.output_tokens}, 合计: {usage.total_tokens}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// 若没有配置环境变量,请用百炼API Key将下行替换为:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// 以下为新加坡地域URL,调用时请将WorkspaceId替换为真实的业务空间ID,各地域的URL不同。
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
// 请将 server_url 替换为您从 ModelScope 等平台获取的 SSE Endpoint
// 如需鉴权,请在 headers 中添加对应平台的 Token
const mcpTool = {
type: "mcp",
server_protocol: "sse",
server_label: "fetch",
server_description: "Fetch MCP Server,提供网页内容获取能力,可以抓取指定URL的网页内容并返回文本。",
server_url: "https://mcp.api-inference.modelscope.net/xxx/sse",
};
const stream = await openai.responses.create({
model: "qwen3.6-plus",
input: "https://news.aibase.com/zh/news,今天有哪些AI新闻?",
tools: [mcpTool],
stream: true
});
for await (const event of stream) {
// 模型回复开始
if (event.type === "response.content_part.added") {
console.log("[模型回复]");
}
// 流式文本输出
else if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
// 响应完成,输出用量
else if (event.type === "response.completed") {
const usage = event.response.usage;
console.log(`\n\n[Token 用量] 输入: ${usage.input_tokens}, 输出: ${usage.output_tokens}, 合计: ${usage.total_tokens}`);
}
}
}
main();# 请将 server_url 替换为您从 ModelScope 等平台获取的 SSE Endpoint
# 如需鉴权,请在 headers 中添加对应平台的 Token
# 以下为新加坡地域URL,调用时请将WorkspaceId替换为真实的业务空间ID,各地域的URL不同。
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.6-plus",
"input": "https://news.aibase.com/zh/news,今天有哪些AI新闻?",
"tools": [
{
"type": "mcp",
"server_protocol": "sse",
"server_label": "fetch",
"server_description": "Fetch MCP Server,提供网页内容获取能力,可以抓取指定URL的网页内容并返回文本。",
"server_url": "https://mcp.api-inference.modelscope.net/xxx/sse"
}
],
"stream": true
}'运行以上代码可获取如下回复:
[模型回复]
根据阿里云百炼(Model Studio)官方文档,目前 MCP(Model Context Protocol)功能支持的模型如下:
* 千问 Plus 系列:
* Qwen3.6-Plus 系列
* Qwen3.5-Plus 系列
* 千问 Flash 系列:
* Qwen3.6-Flash 系列
* Qwen3.5-Flash 系列
* 千问开源系列:
* Qwen3.6 开源系列(注:不支持 qwen3.6-27b 模型)
* Qwen3.5 开源系列
注意:目前 MCP 功能仅支持通过 Responses API 进行调用。
[Token 用量] 输入: 20784, 输出: 867, 合计: 21651参数说明
mcp 工具支持以下参数:
| 示例: |
计费说明
计费包含以下部分:
模型推理费用:按模型的 Token 用量计费。
MCP 服务费用:以各 MCP 服务的计费为准。