با گذار مدلهای زبانی بزرگ (LLMs) از رابطهای چت ایستا به عاملهای خودمختار، چالش حیاتی از استنتاج مدل به مدیریت زمینه تغییر میکند. چگونه یک هوش مصنوعی بدون به خطر انداختن امنیت یا پایداری، به طور مؤثر با پایگاه داده خاص، CRM یا زیرساخت ابری شما تعامل داشته باشد؟ پاسخ در پروتکل زمینه مدل (MCP) نهفته است. این استاندارد باز، نحوه اتصال برنامههای هوش مصنوعی به منابع داده خارجی را متحول میکند. در این پست، ما به عمق معماری MCP میرویم و به طور خاص بر روی جزء «ابزارها» تمرکز میکنیم و نشان میدهیم که چگونه میتوان از آن برای توسعه برنامههای مقاوم استفاده کرد.
ابزارهای MCP چیستند؟
در هسته خود، استاندارد پروتکل زمینه مدل (MCP) نحوه کشف و استفاده سیستمهای هوش مصنوعی از قابلیتهای ارائه شده توسط سرورها را استاندارد میکند. در حالی که «منابع» در MCP به مدلها امکان خواندن دادههای ایستا (مانند خواندن یک فایل یا پرسوجو در طرحواره پایگاه داده) را میدهند، ابزارها نمایانگر اقدامات هستند. یک ابزار یک تابع قابل فراخوانی است که توسط یک سرور MCP ارائه میشود و LLM میتواند آن را برای انجام عملیات دارای حالت فراخوانی کند.
ابزارهای MCP را به عنوان دروازه API برای عامل هوش مصنوعی خود در نظر بگیرید. به جای کدنویسی پیچیده تماسهای API در منطق برنامه خود، شما قابلیتها را از طریق رابط استاندارد MCP ارائه میدهید. LLM تعاریف ابزار (نام، توضیحات، پارامترها) را دریافت میکند و بر اساس قصد کاربر، به صورت پویا تصمیم میگیرد که کدام ابزار را فراخوانی کند. این جداسازی اجازه میدهد تا یک اکوسیستم ماژولار وجود داشته باشد که در آن سرورهای مختلف میتوانند مجموعههای متفاوتی از قابلیتها را به یک مشتری ارائه دهند.
تعریف یک ابزار در پایتون
پیادهسازی یک سرور MCP در پایتون با استفاده از SDK رسمی ساده شده است. بیایید به یک مثال عملی نگاه کنیم: ایجاد ابزاری که دنباله فیبوناچی را محاسبه میکند. این مثال ساده ساختار استدلالها، اعتبارسنجی و انواع بازگشتی را نشان میدهد.
import asyncio
import json
from mcp.server import Server
from mcp.types import Tool, TextContent
from mcp.server.stdio import stdio_server
app = Server("fibonacci-service")
@app.list_tools()
async def list_tools():
return [
Tool(
name="calculate_fibonacci",
description="Calculate the Nth Fibonacci number",
inputSchema={
"type": "object",
"properties": {
"n": {
"type": "integer",
"description": "The position in the Fibonacci sequence"
}
},
"required": ["n"]
}
)
]
@app.call_tool()
async def handle_tool_call(name: str, arguments: dict):
if name == "calculate_fibonacci":
n = arguments.get("n")
if not isinstance(n, int) or n < 0:
return [TextContent(type="text", text="Error: n must be a non-negative integer")]
def fib(k):
if k <= 1: return k
return fib(k-1) + fib(k-2)
return [TextContent(type="text", text=str(fib(n)))]
raise ValueError(f"Unknown tool: {name}")
async def main():
async with stdio_server() as (read, write):
await app.run(read, write, app.create_initialization_options())
if __name__ == "__main__":
asyncio.run(main())
چرا به جای تماسهای مستقیم API از ابزارهای MCP استفاده کنیم؟
توسعهدهندگان ممکن است بپرسند چرا نباید صرفاً یکپارچهسازیهای API سفارشی برای برنامههای LLM خود بنویسند. سه دلیل قوی وجود دارد:
- استانداردسازی: با پذیرش MCP، شما اطمینان حاصل میکنید که ابزارهای شما با هر مشتری سازگار با MCP سازگار هستند. این زیرساخت شما را در برابر تغییرات در چارچوبهای سمت مشتری در آینده ایمن میکند.
- امنیت: سرورهای MCP میتوانند ایزوله شده و از نظر شبکه ایزوله شوند. آنها به عنوان یک واسطه قابل اعتماد عمل میکنند و احراز هویت و محدودیت نرخ را قبل از اینکه LLM هرگز به دادهها دسترسی پیدا کند، مدیریت میکنند.
- قابلیت کشف: مشتریان میتوانند ابزارهای موجود و پارامترهای آنها را به صورت پویا از طریق JSON Schema کشف کنند. این به LLM اجازه میدهد تا پاسخهای دقیقتری ارائه دهد، زیرا محدودیتها و قابلیتهای ابزارهای موجود را در زمان واقعی درک میکند.
نتیجهگیری
پروتکل زمینه مدل (MCP) بیش از یک کتابخانه است؛ بلکه یک تغییر بنیادین در نحوه معماری برنامههای هوش مصنوعی است. با استانداردسازی رابط بین LLMs و دادههای جهان، ابزارهای MCP به توسعهدهندگان امکان میدهند تا عاملهای ایمنتر، ماژولارتر و هوشمندتری بسازند. با بالغ شدن اکوسیستم، احتمالاً شاهد بازار غنیای از سرورهای MCP از پیش ساخته شده برای وظایف رایج، از پرسوجوی پایگاه داده تا استقرار ابری خواهیم بود، که به توسعهدهندگان اجازه میدهد به جای تمرکز بر لولهکشی یکپارچهسازی سطح پایین، بر منطق سطح بالا تمرکز کنند.