בטח, הנה התרגום לעברית במבנה של פוסט לבלוג:
אפשר למודלים להשתמש בשרתי MCP מרוחקים לביצוע משימות.
פרוטוקול הקשר מודל (MCP – Model Context Protocol) הוא פרוטוקול פתוח אשר מגדיר סטנדרט לאופן שבו יישומים מספקים כלים והקשר למודלי שפה גדולים (LLMs). כלי ה-MCP ב-API התגובות (Responses API) מאפשר למפתחים להעניק למודל גישה לכלים המתארחים על שרתי MCP מרוחקים. אלו הם שרתי MCP המתוחזקים על ידי מפתחים וארגונים ברחבי האינטרנט, החושפים כלים אלו ללקוחות MCP, כמו API התגובות.
קריאה לשרת MCP מרוחק באמצעות API התגובות היא פשוטה. לדוגמה, כך תוכלו להשתמש בשרת ה-MCP של DeepWiki כדי לשאול שאלות על כמעט כל מאגר GitHub ציבורי.
בקשת API התגובות עם כלי MCP מופעלים:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"tools": [
{
"type": "mcp",
"server_label": "deepwiki",
"server_url": "https://mcp.deepwiki.com/mcp",
"require_approval": "never"
}
],
"input": "What transport protocols are supported in the 2025-03-26 version of the MCP spec?"
}'
import OpenAI from "openai";
const client = new OpenAI();
const resp = await client.responses.create({
model: "gpt-4.1",
tools: [
{
type: "mcp",
server_label: "deepwiki",
server_url: "https://mcp.deepwiki.com/mcp",
require_approval: "never",
},
],
input: "What transport protocols are supported in the 2025-03-26 version of the MCP spec?",
});
console.log(resp.output_text);
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
tools=[
{
"type": "mcp",
"server_label": "deepwiki",
"server_url": "https://mcp.deepwiki.com/mcp",
"require_approval": "never",
},
],
input="What transport protocols are supported in the 2025-03-26 version of the MCP spec?",
)
print(resp.output_text)
חשוב מאוד שמפתחים יבטחו בכל שרת MCP מרוחק שהם משתמשים בו עם API התגובות. שרת זדוני יכול להדליף נתונים רגישים מכל דבר שנכנס להקשר של המודל. עיינו בקפידה בסעיף סיכונים ובטיחות למטה לפני השימוש בכלי זה.
האקוסיסטם של MCP
אנו עדיין בשלבים המוקדמים של האקוסיסטם של MCP. כמה שרתי MCP מרוחקים פופולריים כיום כוללים את Cloudflare, Hubspot, Intercom, Paypal, Pipedream, Plaid, Shopify, Stripe, Square, Twilio ו-Zapier. אנו צופים ששרתים רבים נוספים – ומרשמים (registries) שיקלו על גילוי שרתים אלו – יושקו בחודשים הקרובים. פרוטוקול MCP עצמו גם הוא בתחילת דרכו, ואנו צופים להוסיף עדכונים רבים נוספים לכלי ה-MCP שלנו ככל שהפרוטוקול יתפתח.
איך זה עובד
כלי ה-MCP פועל רק ב-API התגובות, וזמין בכל המודלים החדשים שלנו (gpt-4o, gpt-4.1, ומודלי ההיגיון שלנו). כאשר אתם משתמשים בכלי ה-MCP, אתם משלמים רק על אסימונים (tokens) המשמשים בעת ייבוא הגדרות כלים או ביצוע קריאות לכלים – אין עמלות נוספות מעורבות.
שלב 1: קבלת רשימת הכלים משרת ה-MCP
הדבר הראשון ש-API התגובות עושה כאשר אתם מצרפים שרת MCP מרוחק למערך tools
, הוא ניסיון לקבל רשימת כלים מהשרת. API התגובות תומך בשרתי MCP מרוחקים התומכים בפרוטוקול התעבורה Streamable HTTP או HTTP/SSE.
אם קבלת רשימת הכלים מצליחה, אלמנט פלט חדש mcp_list_tools
יהיה גלוי באובייקט ה-Response שנוצר עבור כל שרת MCP. המאפיין tools
של אובייקט זה יציג את הכלים שייובאו בהצלחה.
{
"id": "mcpl_682d4379df088191886b70f4ec39f90403937d5f622d7a90",
"type": "mcp_list_tools",
"server_label": "deepwiki",
"tools": [
{
"name": "read_wiki_structure",
"input_schema": {
"type": "object",
"properties": {
"repoName": {
"type": "string",
"description": "GitHub repository: owner/repo (e.g. \"facebook/react\")"
}
},
"required": [
"repoName"
],
"additionalProperties": false,
"annotations": null,
"description": "",
"$schema": "http://json-schema.org/draft-07/schema#"
}
},
// ... כלים אחרים
]
}
כל עוד האלמנט mcp_list_tools
קיים בהקשר של המודל, לא ננסה למשוך רשימת כלים מעודכנת משרת MCP. אנו ממליצים לשמור אלמנט זה בהקשר של המודל כחלק מכל שיחה או ביצוע תהליך עבודה כדי לייעל את זמן ההשהיה (latency).
סינון כלים
שרתי MCP מסוימים יכולים להכיל עשרות כלים, וחשיפת כלים רבים למודל עלולה לגרום לעלות גבוהה וזמן השהיה. אם אתם מעוניינים רק בתת-קבוצה של כלים ששרת MCP חושף, תוכלו להשתמש בפרמטר allowed_tools
כדי לייבא רק את הכלים הללו.
הגבלת כלים מותרים:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"tools": [
{
"type": "mcp",
"server_label": "deepwiki",
"server_url": "https://mcp.deepwiki.com/mcp",
"require_approval": "never",
"allowed_tools": ["ask_question"]
}
],
"input": "What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support?"
}'
import OpenAI from "openai";
const client = new OpenAI();
const resp = await client.responses.create({
model: "gpt-4.1",
tools: [{
type: "mcp",
server_label: "deepwiki",
server_url: "https://mcp.deepwiki.com/mcp",
require_approval: "never",
allowed_tools: ["ask_question"],
}],
input: "What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support?",
});
console.log(resp.output_text);
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
tools=[{
"type": "mcp",
"server_label": "deepwiki",
"server_url": "https://mcp.deepwiki.com/mcp",
"require_approval": "never",
"allowed_tools": ["ask_question"],
}],
input="What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support?",
)
print(resp.output_text)
שלב 2: קריאה לכלים
ברגע שלמודל יש גישה להגדרות כלים אלו, הוא עשוי לבחור לקרוא להם בהתאם למה שנמצא בהקשר של המודל. כאשר המודל מחליט לקרוא לכלי MCP, אנו מבצעים בקשה לשרת ה-MCP המרוחק כדי לקרוא לכלי, לקחת את הפלט שלו ולהכניס אותו להקשר של המודל. זה יוצר אלמנט mcp_call
שנראה כך:
{
"id": "mcp_682d437d90a88191bf88cd03aae0c3e503937d5f622d7a90",
"type": "mcp_call",
"approval_request_id": null,
"arguments": "{\"repoName\":\"modelcontextprotocol/modelcontextprotocol\",\"question\":\"What transport protocols does the 2025-03-26 version of the MCP spec support?\"}",
"error": null,
"name": "ask_question",
"output": "The 2025-03-26 version of the Model Context Protocol (MCP) specification supports two standard transport mechanisms: `stdio` and `Streamable HTTP` ...",
"server_label": "deepwiki"
}
כפי שניתן לראות, זה כולל הן את הארגומנטים שהמודל החליט להשתמש בהם עבור קריאת כלי זו, והן את ה-output
(פלט) שהשרת המרוחק של MCP החזיר. כל המודלים יכולים לבחור לבצע קריאות מרובות לכלי (MCP) ב-API התגובות, ולכן, ייתכן שתראו מספר אלמנטים כאלה שנוצרו בבקשת API תגובות אחת.
קריאות כושלות לכלים ימלאו את שדה השגיאה של אלמנט זה בשגיאות פרוטוקול MCP, שגיאות ביצוע כלי MCP, או שגיאות קישוריות כלליות. שגיאות MCP מתועדות במפרט ה-MCP כאן.
אישורים
כברירת מחדל, OpenAI יבקש את אישורכם לפני שיתוף נתונים כלשהם עם שרת MCP מרוחק. אישורים עוזרים לכם לשמור על שליטה ונראות לגבי אילו נתונים נשלחים לשרת MCP. אנו ממליצים בחום שתבדקו בקפידה (ובאופן אופציונלי, תתעדו) את כל הנתונים המשותפים עם שרת MCP מרוחק. בקשה לאישור ביצוע קריאת כלי MCP יוצרת אלמנט mcp_approval_request
בפלט של ה-Response שנראה כך:
{
"id": "mcpr_682d498e3bd4819196a0ce1664f8e77b04ad1e533afccbfa",
"type": "mcp_approval_request",
"arguments": "{\"repoName\":\"modelcontextprotocol/modelcontextprotocol\",\"question\":\"What transport protocols are supported in the 2025-03-26 version of the MCP spec?\"}",
"name": "ask_question",
"server_label": "deepwiki"
}
לאחר מכן תוכלו להגיב על כך על ידי יצירת אובייקט Response חדש והוספת אלמנט mcp_approval_response
אליו.
אישור שימוש בכלים בבקשת API:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"tools": [
{
"type": "mcp",
"server_label": "deepwiki",
"server_url": "https://mcp.deepwiki.com/mcp"
}
],
"previous_response_id": "resp_682d498bdefc81918b4a6aa477bfafd904ad1e533afccbfa",
"input": [{
"type": "mcp_approval_response",
"approve": true,
"approval_request_id": "mcpr_682d498e3bd4819196a0ce1664f8e77b04ad1e533afccbfa"
}]
}'
import OpenAI from "openai";
const client = new OpenAI();
const resp = await client.responses.create({
model: "gpt-4.1",
tools: [{
type: "mcp",
server_label: "deepwiki",
server_url: "https://mcp.deepwiki.com/mcp",
}],
previous_response_id: "resp_682d498bdefc81918b4a6aa477bfafd904ad1e533afccbfa",
input: [{
type: "mcp_approval_response",
approve: true,
approval_request_id: "mcpr_682d498e3bd4819196a0ce1664f8e77b04ad1e533afccbfa"
}],
});
console.log(resp.output_text);
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
tools=[{
"type": "mcp",
"server_label": "deepwiki",
"server_url": "https://mcp.deepwiki.com/mcp",
}],
previous_response_id="resp_682d498bdefc81918b4a6aa477bfafd904ad1e533afccbfa",
input=[{
"type": "mcp_approval_response",
"approve": True,
"approval_request_id": "mcpr_682d498e3bd4819196a0ce1664f8e77b04ad1e533afccbfa"
}],
)
print(resp.output_text)
כאן אנו משתמשים בפרמטר previous_response_id
כדי לשרשר את ה-Response החדש הזה, עם ה-Response הקודם שיצר את בקשת האישור. אך תוכלו גם להעביר חזרה את הפלטים מתגובה אחת, כקלטים לתגובה אחרת לשליטה מרבית על מה שנכנס להקשר של המודל.
אם וכאשר תרגישו בנוח לבטוח בשרת MCP מרוחק, תוכלו לבחור לדלג על האישורים להפחתת זמן ההשהיה. לשם כך, תוכלו להגדיר את הפרמטר require_approval
של כלי ה-MCP לאובייקט המפרט רק את הכלים שעבורם תרצו לדלג על אישורים כפי שמוצג להלן, או להגדיר אותו לערך 'never'
כדי לדלג על אישורים עבור כל הכלים באותו שרת MCP מרוחק.
לעולם אל תדרוש אישור עבור כלים מסוימים:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"tools": [
{
"type": "mcp",
"server_label": "deepwiki",
"server_url": "https://mcp.deepwiki.com/mcp",
"require_approval": {
"never": {
"tool_names": ["ask_question", "read_wiki_structure"]
}
}
}
],
"input": "What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support?"
}'
import OpenAI from "openai";
const client = new OpenAI();
const resp = await client.responses.create({
model: "gpt-4.1",
tools: [
{
type: "mcp",
server_label": "deepwiki",
server_url": "https://mcp.deepwiki.com/mcp",
require_approval": {
never: {
tool_names: ["ask_question", "read_wiki_structure"]
}
}
},
],
input: "What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support?",
});
console.log(resp.output_text);
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
tools=[
{
"type": "mcp",
"server_label": "deepwiki",
"server_url": "https://mcp.deepwiki.com/mcp",
"require_approval": {
"never": {
"tool_names": ["ask_question", "read_wiki_structure"]
}
}
},
],
input="What transport protocols does the 2025-03-26 version of the MCP spec (modelcontextprotocol/modelcontextprotocol) support?",
)
print(resp.output_text)
אימות (Authentication)
בניגוד לשרת ה-MCP של DeepWiki, רוב שרתי ה-MCP האחרים דורשים אימות. כלי ה-MCP ב-API התגובות נותן לכם את היכולת לציין בגמישות כותרות (headers) שצריכות להיכלל בכל בקשה הנשלחת לשרת MCP מרוחק. כותרות אלו יכולות לשמש לשיתוף מפתחות API, אסימוני גישה של oAuth, או כל סכמת אימות אחרת שהשרת המרוחק של MCP מיישם.
הכותרת הנפוצה ביותר המשמשת שרתי MCP מרוחקים היא כותרת Authorization
. כך נראית העברת כותרת זו:
שימוש בכלי MCP של Stripe:
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1",
"input": "Create a payment link for $20",
"tools": [
{
"type": "mcp",
"server_label": "stripe",
"server_url": "https://mcp.stripe.com",
"headers": {
"Authorization": "Bearer $STRIPE_API_KEY"
}
}
]
}'
import OpenAI from "openai";
const client = new OpenAI();
const resp = await client.responses.create({
model: "gpt-4.1",
input: "Create a payment link for $20",
tools: [
{
type: "mcp",
server_label": "stripe",
server_url": "https://mcp.stripe.com",
headers: {
Authorization: "Bearer $STRIPE_API_KEY"
}
}
]
});
console.log(resp.output_text);
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
input="Create a payment link for $20",
tools=[
{
"type": "mcp",
"server_label": "stripe",
"server_url": "https://mcp.stripe.com",
"headers": {
"Authorization": "Bearer $STRIPE_API_KEY"
}
}
]
)
print(resp.output_text)
כדי למנוע דליפה של מפתחות רגישים, API התגובות אינו שומר את הערכים של אף מחרוזת שתספקו באובייקט headers
. ערכים אלו גם לא יהיו גלויים באובייקט ה-Response שנוצר. בנוסף, מכיוון שחלק משרתי ה-MCP המרוחקים יוצרים כתובות URL מאומתות, אנו משמיטים גם את חלק ה-path (נתיב) של server_url
בתגובות שלנו (כלומר, example.com/mcp
הופך ל-example.com
). בשל כך, עליכם לשלוח את הנתיב המלא של server_url
של MCP וכל headers
רלוונטיים בכל בקשת יצירת API תגובות שתבצעו.
סיכונים ובטיחות
כלי ה-MCP מאפשר לכם לחבר את OpenAI לשירותים שלא אומתו על ידי OpenAI ומאפשר ל-OpenAI לגשת, לשלוח ולקבל נתונים, ולבצע פעולות בשירותים אלו. כל שרתי ה-MCP הם שירותי צד שלישי הכפופים לתנאים ולהתניות שלהם.
אם אתם נתקלים בשרת MCP זדוני, אנא דווחו על כך ל-security@openai.com
.
התחברות לשרתים מהימנים
בחרו שרתים רשמיים המתארחים על ידי ספקי השירות עצמם (לדוגמה, אנו ממליצים להתחבר לשרת Stripe המתארח על ידי Stripe עצמה ב-mcp.stripe.com, במקום לשרת MCP של Stripe המתארח על ידי צד שלישי). מכיוון שאין כיום יותר מדי שרתי MCP מרוחקים רשמיים, ייתכן שתתפתו להשתמש בשרת MCP המתארח על ידי ארגון שאינו מפעיל את השרת הזה ופשוט מעביר בקשות פרוקסי לשירות זה דרך ה-API שלכם. אם אתם חייבים לעשות זאת, היזהרו במיוחד בביצוע בדיקת נאותות (due diligence) לגבי "צוברים" (aggregators) אלה, ובדקו בקפידה כיצד הם משתמשים בנתונים שלכם.
רישום ובדיקת נתונים המשותפים עם שרתי MCP של צד שלישי.
מכיוון ששרתי MCP מגדירים הגדרות כלים משלהם, הם עשויים לבקש נתונים שלא תמיד תרגישו בנוח לשתף עם מארח שרת ה-MCP הזה. בשל כך, כלי ה-MCP ב-API התגובות דורש כברירת מחדל אישורים לכל קריאת כלי MCP המתבצעת. בעת פיתוח היישום שלכם, בדקו את סוג הנתונים המשותפים עם שרתי MCP אלה בקפידה ובאופן יסודי. לאחר שתצברו ביטחון באמון שלכם בשרת MCP זה, תוכלו לדלג על אישורים אלה לביצוע יעיל יותר.
אנו ממליצים גם לרשום כל נתונים הנשלחים לשרתי MCP. אם אתם משתמשים ב-API התגובות עם store=true
, נתונים אלה כבר נרשמים דרך ה-API למשך 30 יום, אלא אם כן שמירת נתונים אפסית (Zero Data Retention) מופעלת עבור הארגון שלכם. ייתכן שתרצו גם לרשום נתונים אלה במערכות שלכם ולבצע בדיקות תקופתיות כדי להבטיח שהנתונים משותפים בהתאם לציפיות שלכם.
שרתי MCP זדוניים עשויים לכלול הוראות נסתרות (הזרקות פרומפטים – prompt injections) שנועדו לגרום למודלי OpenAI להתנהג באופן בלתי צפוי. בעוד ש-OpenAI הטמיעה אמצעי הגנה מובנים כדי לסייע באיתור וחסימת איומים אלה, חיוני לבדוק בקפידה קלטים ופלטים, ולוודא שחיבורים נוצרים רק עם שרתים מהימנים.
שרתי MCP עשויים לעדכן התנהגות כלים באופן בלתי צפוי, מה שעלול להוביל להתנהגות לא מכוונת או זדונית.
השלכות על שמירת נתונים אפסית ומשכנות נתונים (Data Residency)
כלי ה-MCP תואם לשמירת נתונים אפסית (Zero Data Retention) ולמשכנות נתונים (Data Residency), אך חשוב לציין ששרתי MCP הם שירותי צד שלישי, ונתונים הנשלחים לשרת MCP כפופים למדיניות שמירת הנתונים ומשכנות הנתונים שלהם.
במילים אחרות, אם אתם ארגון עם משכנות נתונים באירופה, OpenAI תגביל את ההסקה (inference) ואחסון תוכן הלקוח (Customer Content) כך שיתבצעו באירופה עד לנקודה שבה תקשורת או נתונים נשלחים לשרת ה-MCP. באחריותכם לוודא ששרת ה-MCP עומד גם הוא בכל דרישות שמירת נתונים אפסית או משכנות נתונים שעשויות להיות לכם. למידע נוסף על שמירת נתונים אפסית ומשכנות נתונים כאן.