MCP مخفف Model Context Protocol و به فارسی پروتکل کانتکست مدل است. این استاندارد متن‌باز به برنامه‌های هوش مصنوعی اجازه می‌دهد به ابزار، اطلاعات و گردش‌کارهای بیرونی متصل شوند. MCP خودش مدل زبانی، دیتابیس یا جایگزین REST API نیست، بلکه قرارداد ارتباطی بین میزبان و ارائه‌کننده قابلیت است.

معماری Host، Client و Server

Host برنامه اصلی مانند IDE یا دستیار مبتنی بر LLM است. Host برای تعامل با هر سرور یک MCP Client دارد. MCP Server قابلیت‌های معینی را در قالب Tools، Resources و Prompts ارائه می‌دهد. در یک فروشگاه، سرور می‌تواند ابزار خواندن وضعیت سفارش را فراهم کند، اما اینکه کاربر مجاز به دیدن کدام سفارش است باید در همان Backend بررسی شود.

نمودار معماری MCP و ارتباط نرم‌افزار هوش مصنوعی با سرورهای ابزار و داده

تصویر معماری

تصویر بالا به‌صورت موقت از CDN رسمی مستندات MCP نمایش داده می‌شود. برای انتشار پایدار، آن را مطابق شرایط استفاده در سرور باورژن آپلود کنید و src را به نشانی داخلی تغییر دهید.

مفاهیم و متدهای اصلی

بخشمتد یا قابلیتمثال فروشگاهی
Toolstools/list و tools/callفراخوانی تابع get_order_status
Resourcesresources/list و resources/readخواندن مستندات یا داده مرجع
Promptsprompts/list و prompts/getالگوی پاسخ پشتیبانی
Discoveryserver/discoverشناخت اختیاری قابلیت سرور
Client FeaturesElicitation و سازوکارهای مرتبطگرفتن ورودی تکمیلی از کاربر
ExtensionsTasks، MCP Apps و سایر افزونه‌هاعملیات طولانی یا رابط تعاملی

تفاوت نسخه ۲۰۲۶-۰۷-۲۸ با نمونه‌های قدیمی

  • در هسته جدید درخواست‌ها Stateless و خودتوصیف‌اند. تبادل initialize/initialized و Session ID قدیمی به‌عنوان چرخه پایه لازم نیست.
  • درخواست می‌تواند نسخه پروتکل و اطلاعات کلاینت را در _meta حمل کند. فراخوانی server/discover برای شناخت قابلیت‌ها اختیاری است.
  • برای مسیر HTTP در نسخه جدید سرآیندهای Mcp-Method و Mcp-Name به تشخیص روش و نام ابزار کمک می‌کنند.
  • لیست Tools و Resources می‌تواند نشانه‌های کش مانند ttlMs و cacheScope داشته باشد.
  • درخواست‌های چندمرحله‌ای ورودی یا تعامل با مدل با Multi Round-Trip Requests بازطراحی شده‌اند.
  • Tasks از هسته آزمایشی به Extension منتقل شده است. Roots و Sampling و Logging قدیمی در این نسخه Deprecated هستند.
  • پشتیبانی SDKها و کلاینت‌ها با یکدیگر تفاوت دارد. برای یک سرور جدید باید نسخه دقیق پروتکل و SDK بررسی شود.

نمونه درخواست واقعی JSON-RPC در نسخه جدید

POST /mcp HTTP/1.1
Host: api.baversion.com
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: get_order_status

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_order_status",
    "arguments": {"order_id": 42},
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientCapabilities": {},
      "io.modelcontextprotocol/clientInfo": {
        "name": "baversion-client", "version": "1.0.0"
      }
    }
  }
}

مثال HTTP

این نمونه ساختار پیام نسخه ۲۰۲۶ را نمایش می‌دهد. مسیر، Host و نام ابزار فرضی‌اند. برای اجرای واقعی باید پیاده‌سازی SDK، احراز هویت، Headerهای لازم و Schema ابزار با سرور سازگار باشند.

نمونه ساخت یک ابزار با SDK پایتون

برای نمونه آموزشی مستقل، ابزار جمع قیمت یک سفارش را به‌جای ارتباط با دیتابیس واقعی تعریف می‌کنیم. در محیط واقعی می‌توان ابزار را به سرویس مجاز سفارش متصل کرد.

# Check the current supported Python SDK version before installing
python -m pip install mcp
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("baversion-shop")

@mcp.tool()
def calculate_total(unit_price: int, quantity: int) -> int:
    """Calculate total price for a cart line."""
    if unit_price < 0 or quantity < 0:
        raise ValueError("values must be non-negative")
    return unit_price * quantity

if __name__ == "__main__":
    mcp.run(transport="stdio")

تفاوت SDK و Spec

کد بالا نمونه الگوی توسعه با FastMCP است، نه اثبات پشتیبانی یک نسخه مشخص SDK از پروتکل ۲۰۲۶-۰۷-۲۸. قبل از استقرار API و نسخه پکیج نصب‌شده را با مستندات SDK تطبیق دهید.

شیوه‌های ارتباط و میزبانی

Transportمناسب براینکته
STDIOاجرای سرور محلی به‌صورت زیرپردازش IDEلاگ‌ها نباید خروجی JSON-RPC روی stdout را خراب کنند
HTTPسرور راه دور و اپلیکیشن وبنیازمند TLS، احراز هویت و کنترل مبدا
Legacy SSEبرخی پیاده‌سازی‌های قدیمیدر نسخه ۲۰۲۶ Deprecated است

ایمنی و مدیریت مجوز

  • Tool Discovery به معنای مجوز اجرای همه ابزارها نیست.
  • مجوز هر داده و عملیات را داخل سرویس واقعی بررسی کنید، نه فقط در متن Prompt.
  • در OAuth، Issuer، Audience و Scope توکن را به‌درستی اعتبارسنجی کنید.
  • از Token Passthrough و اعتماد کور به URLهای ارسالی جلوگیری کنید.
  • در عملیات حساس مانند حذف سفارش یا انتقال پول، تایید کاربر و ثبت Audit Log داشته باشید.
  • سرور ناشناخته را روی رایانه با دسترسی وسیع به فایل‌ها یا Secretها اجرا نکنید.
  • خروجی Tools و Resources می‌تواند حاوی Prompt Injection باشد و باید داده غیرقابل اعتماد محسوب شود.

چطور MCP Server را تست کنیم؟

# MCP Inspector: interactive UI
npx @modelcontextprotocol/inspector
# For a local node-based server
npx @modelcontextprotocol/inspector node path/to/server/index.js

برای تست ارتباط، فهرست ابزارها، ورودی و خروجی اسکیما، درخواست‌های بدون مجوز، Timeout و نسخه پروتکل را بررسی کنید. اینسپکتور ابزاری برای Debug است و نباید بدون حفاظت مناسب در شبکه عمومی در دسترس باشد.

مستندات معتبر نسخه ۲۰۲۶

اصطلاحات مرتبط: تول کالینگ، اجنتیک ورکفلو، اجنت، رابط برنامه‌نویسی کاربردی، اواوث، تزریق پرامپت، حمله SSRF، اس‌دی‌کی.