DanLevy.net

הסוכן AI שלך חסר תועלת בלי זה

למה MCP הוא ה‑USB‑C של אינטליגנציה מלאכותית.

בניתם סוכן AI. אולי הוא אפילו טוב. הפרומפטים מדויקים, המודל מהיר, והתשובות מרגישות טבעיות.

אבל אז מישהו מבקש ממנו לבדוק ב‑Salesforce רישום לקוח. או למשוך את כרטיסי Jira העדכניים. או לחפש בתיעוד הפנימי שלכם.

והסוכן המרהיב שלכם פשוט… לא מצליח.

זהו בעיית האינטגרציה שכל פלטפורמת AI נתקעת בה בסופו של דבר. הסוכן שלכם צריך ידיים. הוא צריך עיניים אל מערכות העסק האמיתיות שלכם. בלי זה, אתם רק מריצים צ’אט‑בוט יקר.

הפתרון המסורתי? לכתוב עטיפה מותאמת אישית לכל שירות שתרצו לחבר. לקרוא את התיעוד, לטפל באימות, להתמודד עם מגבלות קצב, ולהתפלל שהם לא ישנו את הקצות בחודש הבא. ואז לחזור על זה לשירות הבא. ועוד ועוד.

פרוטוקול הקשר המודל (MCP) משנה את החישוב הזה לחלוטין.

מה MCP פותר באמת

תחשבו על USB לפני USB‑C. היה לכם Mini‑USB, Micro‑USB, מחברים קנייניים של Apple, ומגירה מלאה בכבלים שעבדו רק עם מכשירים ספציפיים. USB‑C לא רק הוסיף מחבר חדש – הוא ייסד סטנדרט שאיפשר לכל כבל לעבוד עם כל מכשיר.

MCP עושה את אותו הדבר עבור אינטגרציות כלי AI.

במקום לכתוב קוד מותאם אישית כדי לחבר את הסוכן שלכם ל‑Salesforce, HubSpot, GitHub או לכל שירות אחר, אתם מיישמים את הפרוטוקול פעם אחת (או מורידים שרת מוכן), וכל סוכן תואם‑MCP יכול לתקשר איתו מייד.

הפרוטוקול מטפל בשכבת התקשורת. אתם רק מגדירים מה הכלים שלכם עושים ואילו נתונים הם צריכים.

הגדרת אינטגרציות מרובות

ל‑Mastra יש תמיכה מובנית ב‑MCP דרך ה‑MCPClient. ניתן לחבר הן כלים מקומיים (פועלים כתהליכים צאצאים) והן שירותים מרוחקים (פועלים בתשתית שלהם).

הנה דוגמה מציאותית של סביבת ייצור שמחברת את Google Maps לתכנון מסלול, שירות מזג אוויר, וחיפוש ויקיפדיה מקומי:

src/mastra/mcp/index.ts
import { MCPClient } from '@mastra/mcp';
export const mcpClient = new MCPClient({
servers: {
// כלי מקומי (Stdio)
wikipedia: {
command: 'npx',
args: ['-y', 'wikipedia-mcp'],
},
// מפות וניווט (מרוחק/HTTP)
googleMaps: {
url: new URL(process.env.GOOGLE_MAPS_MCP_URL!),
requestInit: {
headers: {
Authorization: `Bearer ${process.env.GOOGLE_MAPS_API_KEY}`,
},
},
},
// אינטגרציית שירות מזג אוויר
weather: {
url: new URL('https://mcp.weatherapi.dev/v1'),
requestInit: {
headers: {
'X-API-Key': process.env.WEATHER_API_KEY!,
},
},
},
},
});

ה‑client מנהל את מחזור חיי החיבור, מטפל ביצירת תהליכים לכלים מקומיים, ושומר על חיבורים HTTP לשירותים מרוחקים. אין צורך לגעת ישירות בסוקט או ב‑stdio.

חיבור כלים לסוכנים

לאחר שה‑MCP client שלכם מוגדר, העברת הכלים האלה לסוכן נעשית בצורה ישירה.

src/mastra/agents/navigation-agent.ts
import { Agent } from '@mastra/core/agent';
import { openai } from '@ai-sdk/openai';
import { mcpClient } from '../mcp';
export const navigationDirectionsAgent = new Agent({
id: 'navigation-directions-agent',
name: 'Navigation & Directions Assistant',
instructions: `You are a helpful navigation assistant that provides route planning and travel advice.
- Always confirm the start and destination locations
- Use Google Maps tools to find optimal routes
- Check weather conditions along the route
- Provide estimated travel times and suggest alternatives if weather is poor
- Include relevant details like traffic, road conditions, and points of interest
- Keep responses clear and actionable`,
model: openai('gpt-5'),
tools: await mcpClient.getTools(), // <--- This is the magic line
});

כאשר משתמש שואל: “מה המסלול הטוב ביותר מסן פרנסיסקו לייק טאהו, והאם צריך לדאוג למזג האוויר?”

הסוכן קורא את הגדרות הכלים הזמינות, מזהה שיש לו גישה לכלי תכנון המסלול של Google Maps ולכלי תחזית מזג האוויר, מריץ אותם עם הפרמטרים המתאימים, ומחזיר מסלול אופטימלי יחד עם תנאי מזג האוויר העדכניים לאורך הדרך.

לא כתבת אפילו שורה אחת של קוד אינטגרציה עם API של Google Maps או שירות מזג האוויר.


אימות לכל משתמש

טעות אבטחה נפוצה כאן היא קידוד קשיח של אישורים.

אם תציב מפתח API של Google Maps במשתני הסביבה ותסיים שם, כל המשתמשים ישתפו את אותה מכסה וקצב בקשות. יותר מכך, אם אתה משתמש בשירותים ששומרים העדפות משתמש (כמו מיקומים שמורים או מסלולים מועדפים), כולם יראו את אותם הנתונים. זה מקובל בהדגמות, אך בתפעול אמיתי זו חיסרון משמעותי.

Mastra מתמודדת עם זה על‑ידי יצירת לקוחות MCP דינאמיים עם אישורים ספציפיים למשתמש:

async function handleUserRequest(userPrompt: string, userCredentials: UserCreds) {
// צור לקוח עבור משתמש ספציפי זה
const userMcp = new MCPClient({
servers: {
googleMaps: {
url: new URL(process.env.GOOGLE_MAPS_MCP_URL!),
requestInit: {
headers: {
// מפתח API או טוקן ספציפי של המשתמש
Authorization: `Bearer ${userCredentials.mapsApiKey}`,
'X-User-ID': userCredentials.userId,
},
},
},
},
});
const agent = mastra.getAgent('navigationDirectionsAgent');
// הזרקת כלים בזמן ריצה
const response = await agent.generate(userPrompt, {
toolsets: await userMcp.getToolsets(),
});
return response;
}

כל משתמש מקבל סט כלים מבודד עם מכסות API והעדפות משלו. המיקומים השמורים של משתמש A נשארים פרטיים, היסטוריית המסלולים של משתמש B מופרדת. כך סוכנים SaaS מרובי‑שוכרים פועלים בפועל.

בניית כלים מורכבים

לפעמים יש צורך לשלב כמה כלים של MCP בפעולה אחת. אולי אתה רוצה לתכנן מסלול שלוקח בחשבון גם תנועה בזמן אמת וגם תנאי מזג אוויר לאורך הדרך.

ניתן לעטוף כלים של MCP בהגדרות כלי מותאמות:

export const smartRouteTool = createTool({
id: 'smart-route-planner',
description: 'Plans optimal route considering traffic and weather conditions',
execute: async ({ context, mastra }) => {
// Get the raw tools
const tools = await mcpClient.getTools();
// 1. Get base route from Google Maps
const routeData = await tools.googleMaps_getDirections.execute({
context: {
origin: context.origin,
destination: context.destination
}
});
// 2. Check weather along the route
const weatherData = await tools.weather_getForecast.execute({
context: { coordinates: routeData.waypoints }
});
// 3. Return enhanced route with weather warnings
return {
...routeData,
weatherAlerts: weatherData.alerts,
recommendation: weatherData.severe ? 'Consider delaying trip' : 'Safe to travel'
};
},
});

זה נותן לך שליטה מדוקדקת על האופן שבו הכלים מתקשרים, תוך שמירה על ניצול פרוטוקול MCP לביצוע המשקל הכבד.


לאן זה מוביל

כתיבת לקוחות API מותאמים לכל שירות שהסוכן AI שלך צריך לתקשר איתו מעולם לא הייתה ברת קיימא. זה מתרחב בצורה גרועה, מתקלקל לעיתים קרובות, וקושר את הפלטפורמה שלך למימושים ספציפיים.

MCP לא פותר כל אתגר אינטגרציה — האימות עדיין מורכב, הגבלת קצב עדיין רלוונטית, ולא לכל שירות יש שרת MCP עדיין. אבל הוא יוצר בסיס שמקל משמעותית על בניית פלטפורמות סוכנים.

אם אתה מתכנן מערכת AI שצריכה לתקשר עם שירותים חיצוניים, להבין את MCP כנראה שווה את הזמן שלך.

משאבים

קרא את הסדרה

  1. ניתוב LLM
  2. אבטחה ומעקבים
  3. MCP ושילובי כלי (פוסט זה)
  4. זרימות עבודה וזיכרון