Model Context Protocol (MCP) memungkinkan model bahasa besar menggunakan tool dan data eksternal. Dibandingkan dengan function calling, MCP menawarkan fleksibilitas dan kemudahan penggunaan yang lebih tinggi. Topik ini menjelaskan cara menghubungkan ke MCP menggunakan Responses API.
Penggunaan
Tambahkan informasi server MCP dalam parameter tools saat menggunakan Responses API.
Dapatkan endpoint Server-Sent Events (SSE) dan informasi autentikasi untuk layanan MCP dari platform seperti ModelScope.
Mendukung server MCP yang menggunakan protokol SSE.
Maksimal 10 server MCP.
# Impor dependensi dan buat client...
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "my-mcp-service",
"server_description": "Deskripsi fitur server MCP untuk membantu model memahami kasus penggunaannya.",
"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)
Model yang didukung
-
Qwen-Max: seri Qwen3.7-Max
-
Qwen-Plus: seri Qwen3.7-Plus, seri Qwen3.6-Plus, seri Qwen3.5-Plus
-
Qwen-Flash: seri Qwen3.6-Flash, seri Qwen3.5-Flash
-
seri open-source Qwen3.6 (kecuali qwen3.6-27b)
-
seri open-source Qwen3.5
Hanya tersedia melalui Responses API.
Memulai
Contoh ini menggunakan layanan MCP Fetch web scraping dari ModelScope. Anda dapat memperoleh endpoint SSE dan informasi autentikasi untuk layanan tersebut dari bagian konfigurasi Layanan di sebelah kanan.
Dapatkan Kunci API dan konfigurasikan sebagai variabel lingkungan.
Gantiserver_urldengan endpoint SSE dari platform layanan MCP. Ganti autentikasi dalamheadersdengan token yang disediakan oleh platform tersebut.
import os
from openai import OpenAI
client = OpenAI(
# Jika tidak ada variabel lingkungan, gunakan: api_key="sk-xxx" (tidak disarankan).
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
# Konfigurasi tool MCP
# Ganti server_url dengan Endpoint SSE yang Anda peroleh dari platform seperti ModelScope
# Jika diperlukan autentikasi, tambahkan token dari platform terkait ke headers
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "fetch",
"server_description": "Server MCP Fetch yang menyediakan kemampuan web scraping. Server ini dapat mengambil konten dari URL tertentu dan mengembalikannya sebagai teks.",
"server_url": "https://mcp.api-inference.modelscope.net/xxx/sse",
}
response = client.responses.create(
model="qwen3.7-plus",
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}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// Jika tidak ada variabel lingkungan, gunakan: apiKey: "sk-xxx" (tidak disarankan).
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
// Konfigurasi tool MCP
// Ganti server_url dengan Endpoint SSE yang Anda peroleh dari platform seperti ModelScope
// Jika diperlukan autentikasi, tambahkan token dari platform terkait ke headers
const mcpTool = {
type: "mcp",
server_protocol: "sse",
server_label: "fetch",
server_description: "Server MCP Fetch yang menyediakan kemampuan web scraping. Server ini dapat mengambil konten dari URL tertentu dan mengembalikannya sebagai teks.",
server_url: "https://mcp.api-inference.modelscope.net/xxx/sse",
};
const response = await openai.responses.create({
model: "qwen3.7-plus",
input: "https://news.aibase.com/zh/news, what is the AI news today?",
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();# Ganti server_url dengan Endpoint SSE yang Anda peroleh dari platform seperti ModelScope
# Jika diperlukan autentikasi, tambahkan token dari platform terkait ke headers
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.7-plus",
"input": "https://news.aibase.com/zh/news, what is the AI news today?",
"tools": [
{
"type": "mcp",
"server_protocol": "sse",
"server_label": "fetch",
"server_description": "Server MCP Fetch yang menyediakan kemampuan web scraping. Server ini dapat mengambil konten dari URL tertentu dan mengembalikannya sebagai teks.",
"server_url": "https://mcp.api-inference.modelscope.net/xxx/sse"
}
]
}'Setelah Anda menjalankan kode, respons berikut akan dikembalikan:
[Model Response]
Berdasarkan dokumentasi Model Context Protocol (MCP) di pusat bantuan Alibaba Cloud Model Studio (Bailian), model yang didukung adalah:
* Qwen Plus:
* seri Qwen3.7-Plus
* seri Qwen3.6-Plus
* seri Qwen3.5-Plus
* Qwen Flash:
* seri Qwen3.6-Flash
* seri Qwen3.5-Flash
* Seri Open Source Qwen3.6 (tidak termasuk qwen3.6-27b)
* Seri Open Source Qwen3.5
Catatan: Dokumentasi menyatakan bahwa MCP hanya didukung melalui Responses API (client.responses.create) dan bukan melalui API Chat Completions standar.
[Token Usage] Input: 20583, Output: 1638, Total: 22221
Output streaming
Pemanggilan tool MCP dapat melibatkan beberapa interaksi dengan layanan eksternal. Aktifkan streaming untuk mendapatkan hasil antara secara real-time.
import os
from openai import OpenAI
client = OpenAI(
# Jika tidak ada variabel lingkungan, gunakan: api_key="sk-xxx" (tidak disarankan).
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
# Ganti server_url dengan Endpoint SSE yang Anda peroleh dari platform seperti ModelScope
# Jika diperlukan autentikasi, tambahkan token dari platform terkait ke headers
mcp_tool = {
"type": "mcp",
"server_protocol": "sse",
"server_label": "fetch",
"server_description": "Server MCP Fetch yang menyediakan kemampuan web scraping. Server ini dapat mengambil konten dari URL tertentu dan mengembalikannya sebagai teks.",
"server_url": "https://mcp.api-inference.modelscope.net/xxx/sse",
}
stream = client.responses.create(
model="qwen3.7-plus",
input="https://news.aibase.com/zh/news, what is the AI news today?",
tools=[mcp_tool],
stream=True
)
for event in stream:
# Respons model dimulai
if event.type == "response.content_part.added":
print("[Model Response]")
# Output teks streaming
elif event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
# Respons selesai, tampilkan penggunaan
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({
// Jika tidak ada variabel lingkungan, gunakan: apiKey: "sk-xxx" (tidak disarankan).
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
// Ganti server_url dengan Endpoint SSE yang Anda peroleh dari platform seperti ModelScope
// Jika diperlukan autentikasi, tambahkan token dari platform terkait ke headers
const mcpTool = {
type: "mcp",
server_protocol: "sse",
server_label: "fetch",
server_description: "Server MCP Fetch yang menyediakan kemampuan web scraping. Server ini dapat mengambil konten dari URL tertentu dan mengembalikannya sebagai teks.",
server_url": "https://mcp.api-inference.modelscope.net/xxx/sse",
};
const stream = await openai.responses.create({
model: "qwen3.7-plus",
input: "https://news.aibase.com/zh/news, what is the AI news today?",
tools: [mcpTool],
stream: true
});
for await (const event of stream) {
// Respons model dimulai
if (event.type === "response.content_part.added") {
console.log("[Model Response]");
}
// Output teks streaming
else if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
// Respons selesai, tampilkan penggunaan
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();# Ganti server_url dengan Endpoint SSE yang Anda peroleh dari platform seperti ModelScope
# Jika diperlukan autentikasi, tambahkan token dari platform terkait ke headers
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.7-plus",
"input": "https://news.aibase.com/zh/news, what is the AI news today?",
"tools": [
{
"type": "mcp",
"server_protocol": "sse",
"server_label": "fetch",
"server_description": "Server MCP Fetch yang menyediakan kemampuan web scraping. Server ini dapat mengambil konten dari URL tertentu dan mengembalikannya sebagai teks.",
"server_url": "https://mcp.api-inference.modelscope.net/xxx/sse"
}
],
"stream": true
}'Setelah Anda menjalankan kode, respons berikut akan dikembalikan:
[Model Response]
Berdasarkan halaman dokumentasi MCP di Alibaba Cloud Model Studio, model berikut didukung:
* Seri Qwen Plus: seri Qwen3.7-Plus, seri Qwen3.6-Plus, dan seri Qwen3.5-Plus
* Seri Qwen Flash: seri Qwen3.6-Flash dan seri Qwen3.5-Flash
* Seri Open Source Qwen3.6 (tidak termasuk qwen3.6-27b)
* Seri Open Source Qwen3.5
Catatan: Model-model ini hanya mendukung fungsionalitas MCP melalui Responses API.
[Token Usage] Input: 20472, Output: 945, Total: 21417
Parameter
Tool mcp mendukung parameter berikut:
|
Contoh:
|
Penagihan
Penagihan mencakup:
-
Biaya inferensi model: Ditagih berdasarkan penggunaan token model.
-
Biaya server MCP: Tunduk pada aturan penagihan masing-masing server MCP.