MCP

更新时间:
复制为 MD 格式

模型上下文协议(Model Context Protocol, MCP)可帮助大模型使用外部工具与数据,相比 Function Calling,MCP 更灵活且易于使用。本文介绍通过 Responses API接入 MCP 的方法。

使用方式

使用 Responses API,在 tools 参数中配置MCP Server信息。

查找与开通 MCP 服务,请参见开通云部署 MCP 服务
仅支持配置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-plusqwen3.5-plus-2026-02-15

  • 千问Flash:qwen3.5-flashqwen3.5-flash-2026-02-23

  • 千问开源:qwen3.5-397b-a17bqwen3.5-122b-a10bqwen3.5-27bqwen3.5-35b-a3b

仅支持通过 Responses API 调用。

快速开始

以接入高德地图 MCP 服务为例,展示如何通过 Responses API 调用 MCP 工具。需要先开通高德地图MCP服务

需要已获取API Key配置API Key到环境变量

请将示例代码中 MCP 工具配置的 server_url 和 headers 替换为您实际使用的 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.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
)

# MCP 工具配置
mcp_tool = {
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "amap-maps",
    "server_description": "高德地图MCP Server,提供地图、导航、路径规划、天气查询等能力。",
    "server_url": "https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/sse",
    "headers": {
        "Authorization": "Bearer " + os.getenv("DASHSCOPE_API_KEY")
    }
}

response = client.responses.create(
    model="qwen3.5-plus",
    input="从北京到上海驾车怎么走?",
    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.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
});

async function main() {
    // MCP 工具配置
    const mcpTool = {
        type: "mcp",
        server_protocol: "sse",
        server_label: "amap-maps",
        server_description: "高德地图MCP Server,提供地图、导航、路径规划、天气查询等能力。",
        server_url: "https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/sse",
        headers: {
            "Authorization": "Bearer " + process.env.DASHSCOPE_API_KEY
        }
    };

    const response = await openai.responses.create({
        model: "qwen3.5-plus",
        input: "从北京到上海驾车怎么走?",
        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();
curl -X POST https://dashscope.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": "从北京到上海驾车怎么走?",
    "tools": [
        {
            "type": "mcp",
            "server_protocol": "sse",
            "server_label": "amap-maps",
            "server_description": "高德地图MCP Server,提供地图、导航、路径规划、天气查询等能力。",
            "server_url": "https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/sse",
            "headers": {
                "Authorization": "Bearer your-api-key"
            }
        }
    ]
}'

运行以上代码可获取如下回复:

[模型回复]
从北京到上海驾车,您可以选择以下路线:

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.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
)

mcp_tool = {
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "amap-maps",
    "server_description": "高德地图MCP Server,提供地图、导航、路径规划、天气查询等能力。",
    "server_url": "https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/sse",
    "headers": {
        "Authorization": "Bearer " + os.getenv("DASHSCOPE_API_KEY")
    }
}

stream = client.responses.create(
    model="qwen3.5-plus",
    input="从北京到上海驾车怎么走?",
    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.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
});

async function main() {
    const mcpTool = {
        type: "mcp",
        server_protocol: "sse",
        server_label: "amap-maps",
        server_description: "高德地图MCP Server,提供地图、导航、路径规划、天气查询等能力。",
        server_url: "https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/sse",
        headers: {
            "Authorization": "Bearer " + process.env.DASHSCOPE_API_KEY
        }
    };

    const stream = await openai.responses.create({
        model: "qwen3.5-plus",
        input: "从北京到上海驾车怎么走?",
        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();
curl -X POST https://dashscope.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": "从北京到上海驾车怎么走?",
    "tools": [
        {
            "type": "mcp",
            "server_protocol": "sse",
            "server_label": "amap-maps",
            "server_description": "高德地图MCP Server,提供地图、导航、路径规划、天气查询等能力。",
            "server_url": "https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/sse",
            "headers": {
                "Authorization": "Bearer your-api-key"
            }
        }
    ],
    "stream": true
}'

运行以上代码可获取如下回复:

[模型回复]
从北京到上海驾车,您可以选择以下路线:

1. 推荐路线(京沪高速)
   - 沿G2京沪高速公路一路向南行驶,途经河北、天津、山东、江苏等省市
   - 全程约1,200公里,预计驾驶时间约13–15小时

...

[Token 用量] 输入: 55, 输出: 195, 合计: 250

参数说明

mcp 工具支持以下参数:

参数

必填

说明

type

固定为 "mcp"

server_protocol

与 MCP 服务的通信协议,当前仅支持 "sse"

server_label

MCP 服务的标签名称,用于标识该服务。

server_description

MCP 服务的功能描述,供模型理解该服务的能力与适用场景。建议填写以提升模型调用准确性。

server_url

MCP 服务的端点 URL。

headers

连接 MCP 服务时携带的请求头,例如 Authorization 等认证信息。

示例:

{
    "type": "mcp",
    "server_protocol": "sse",
    "server_label": "amap-maps",
    "server_description": "高德地图MCP Server,提供地图、导航、路径规划、天气查询等能力。",
    "server_url": "https://dashscope.aliyuncs.com/api/v1/mcps/amap-maps/sse",
    "headers": {
        "Authorization": "Bearer " + os.getenv("DASHSCOPE_API_KEY")
    }
}

计费说明

计费包含以下部分:

  • 模型推理费用:按模型的 Token 用量计费。

  • MCP 服务费用:以各 MCP 服务的计费为准。