模型上下文协议(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.5-plus",
input="你的问题...",
tools=[mcp_tool]
)
print(response.output_text)支持的模型
国际
千问 Plus:
qwen3.5-plus、qwen3.5-plus-2026-02-15千问 Flash:
qwen3.5-flash、qwen3.5-flash-2026-02-23千问开源:
qwen3.5-397b-a17b、qwen3.5-122b-a10b、qwen3.5-27b、qwen3.5-35b-a3b
全球
千问 Plus:
qwen3.5-plus、qwen3.5-plus-2026-02-15千问 Flash:
qwen3.5-flash、qwen3.5-flash-2026-02-23千问开源:
qwen3.5-397b-a17b、qwen3.5-122b-a10b、qwen3.5-27b、qwen3.5-35b-a3b
中国内地
千问 Plus:
qwen3.5-plus、qwen3.5-plus-2026-02-15千问 Flash:
qwen3.5-flash、qwen3.5-flash-2026-02-23千问开源:
qwen3.5-397b-a17b、qwen3.5-122b-a10b、qwen3.5-27b、qwen3.5-35b-a3b
欧盟
千问 Flash:qwen3.5-flash、qwen3.5-flash-2026-02-23
仅支持通过 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"),
base_url="https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/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.5-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,
baseURL: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/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.5-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
curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.5-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"
}
]
}'运行以上代码可获取如下回复:
[模型回复]
从北京到上海驾车,您可以选择以下路线:
1. 推荐路线(京沪高速)
- 沿G2京沪高速公路一路向南行驶,途经河北、天津、山东、江苏等省市
- 全程约1,200公里,预计驾驶时间约13–15小时
2. 备选路线(京台高速转沪昆高速)
- 沿G3京台高速南下,进入安徽后转入G60沪昆高速前往上海
- 全程约1,250公里,预计驾驶时间约14–16小时
...
[Token 用量] 输入: 55, 输出: 195, 合计: 250流式输出
MCP 工具调用可能涉及多次外部服务交互,建议启用流式输出,实时获取工具调用过程与回复内容。
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/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.5-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,
baseURL: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/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.5-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
curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.5-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
}'运行以上代码可获取如下回复:
[模型回复]
从北京到上海驾车,您可以选择以下路线:
1. 推荐路线(京沪高速)
- 沿G2京沪高速公路一路向南行驶,途经河北、天津、山东、江苏等省市
- 全程约1,200公里,预计驾驶时间约13–15小时
...
[Token 用量] 输入: 55, 输出: 195, 合计: 250参数说明
mcp 工具支持以下参数:
| 示例: |
计费说明
计费包含以下部分:
模型推理费用:按模型的 Token 用量计费。
MCP 服务费用:以各 MCP 服务的计费为准。