رفتن به محتوا

سرور MCP

NSIN یک سرور Model Context Protocol (MCP) از راه دور میزبانی می‌کند تا دستیارهای هوش مصنوعی بتوانند دامنه‌ها، رکوردهای دی‌ان‌اس، کش و قوانین لبه‌ی شما را با زبان طبیعی مدیریت کنند — «یک رکورد A برای staging به 203.0.113.7 اضافه کن»، «هرچه زیر ‎/assets است را از کش example.com پاک کن»، «الان سایت پایین است؟»، «این هفته چقدر ترافیک داشتم؟».

  • آدرس: https://api.nsin.ir/mcp (Streamable HTTP)
  • احراز هویت: کلید API شما به‌صورت Authorization: Bearer nsin_…
  • چیزی برای نصب نیست — NSIN آن را میزبانی می‌کند.
Terminal window
claude mcp add --transport http nsin https://api.nsin.ir/mcp \
--header "Authorization: Bearer nsin_your_key_here"

در Settings → Connectors یک custom connector با آدرس https://api.nsin.ir/mcp اضافه کنید و هدر Authorization: Bearer nsin_… را هنگام درخواست وارد کنید.

به .cursor/mcp.json (یا ~/.cursor/mcp.json سراسری) اضافه کنید:

{
"mcpServers": {
"nsin": {
"url": "https://api.nsin.ir/mcp",
"headers": { "Authorization": "Bearer nsin_your_key_here" }
}
}
}

علامت ✓ در ستون دوم یعنی کلید فقط‌خواندنی هم می‌تواند آن ابزار را صدا بزند. به کلید فقط‌خواندنی فهرست کوچک‌تری از ابزارها داده می‌شود: ابزارهای نوشتن نه‌تنها رد می‌شوند، بلکه اصلاً به دستیار نشان داده نمی‌شوند.

ابزارکلید فقط‌خواندنیتوضیح
list_domainsهمه‌ی دامنه‌های در دسترس، با وضعیت و نقش شما
get_domainجزئیات کامل یک دامنه، وضعیت نیم‌سرورها و تنظیمات
list_dns_recordsرکوردها با شناسه، وضعیت پراکسی و پروتکل/پورت/Host مبدأ
get_ssl_statusاعتبار، انقضا، صادرکننده، SANها و نام‌های پوشش‌داده‌نشده
add_domainافزودن دامنه به حساب (دی‌ان‌اس مدیریت‌شده یا خارجی)
create_dns_recordساخت رکورد، همراه با پروتکل، پورت و Host مبدأ
update_dns_recordتغییر فیلدهای یک رکورد
delete_dns_recordحذف رکورد
check_nameserversبررسی دوباره‌ی واگذاری نیم‌سرورها و فعال‌سازی دامنه
issue_ssl_certificateصدور فوری گواهی، بدون انتظار برای چرخه‌ی خودکار
set_developer_modeدور زدن کش برای چند ساعت هنگام انتشار تغییرات
update_domain_settingsسقف و TTL کش، هدرهای امنیتی، Markdown برای ایجنت‌ها
ابزارکلید فقط‌خواندنیتوضیح
list_cache_entriesمرور محتوای کش‌شده: هاست، مسیر، نوع، نود، حجم و انقضا
get_cache_summaryتعداد و حجم کل اشیای کش‌شده، به تفکیک نود لبه
purge_cacheپاک‌سازی کل کش یک دامنه
purge_cache_by_pathپاک‌سازی (یا تازه‌سازی) هرچه با یک الگوی مسیر بخواند
purge_cache_entriesپاک‌سازی (یا تازه‌سازی) دقیقاً همان اشیایی که فهرست کرده‌اید
ابزارکلید فقط‌خواندنیتوضیح
list_rulesفهرست یک نوع قانون به ترتیب اجرا، با شناسه و تنظیمات
toggle_ruleفعال یا غیرفعال کردن یک قانون

list_rules و toggle_rule یک kind می‌گیرند: ‏cache، waf، drop، rate_limit، captcha، bot_route، fingerprint، redirect، rewrite، header، origin_pool، origin_route، basic_auth، error_page یا optimize. ساخت و ویرایش قوانین در پنل انجام می‌شود — سرور MCP می‌تواند آن‌ها را بخواند و یک قانون دردسرساز را موقتاً خاموش کند.

ابزارکلید فقط‌خواندنیتوضیح
get_analytics_summaryدرخواست، پهنای باند، بازدیدکننده، نسبت کش و نرخ خطا
get_top_urisپربازدیدترین آدرس‌های صفحه در یک بازه
search_request_logsلاگ خام درخواست‌ها با فیلتر وضعیت، مسیر، کش، مقصر خطا، IP و ray id
list_waf_eventsرویدادهای فایروال: کدام قانون، روی چه چیزی و با چه اقدامی
run_analytics_queryاجرای کوئری فقط‌خواندنی روی لاگ درخواست‌های شما
get_uptime_statusسلامت لحظه‌ای مبدأ برای هر زیردامنه — «الان پایین است؟»
list_uptime_incidentsتاریخچه‌ی قطعی‌ها
list_recommendationsیافته‌های NSIN برای دامنه و کاری که باید انجام دهید
get_traffic_usageمصرف روزانه به تفکیک cached / proxied / bypass / direct
get_plan_featuresسهمیه، میزان مصرف و امکاناتی که پلن فعال کرده است

سه ابزار پاک‌سازی داریم، از کلی به دقیق. هر سه به دسترسی cache.edit و پلنی با قابلیت پاک‌سازی کش نیاز دارند.

purge_cache_by_path گزینه‌ی روزمره است — همان پاک‌سازی بعد از انتشار:

  • path: "/assets/*" — هرچه زیر یک مسیر است
  • path: "/" — صفحه‌ی اصلی
  • path: "/blog/post-1" — یک صفحه

قواعد تطبیق: * نشانه‌ی wildcard است و الگوی بدون * به‌صورت زیررشته تطبیق داده می‌شود؛ یعنی /logo.png با /img/logo.png?v=2 هم می‌خواند. اگر این مهم است، الگو را مقید کنید (/assets/*). عبارت باقاعده (regex) پشتیبانی نمی‌شود. می‌توانید کار را به یک hostname یا یک node محدود کنید؛ اگر هیچ‌کدام را ندهید، پاک‌سازی همه‌ی هاست‌های دامنه روی همه‌ی نودها را می‌گیرد. همه‌ی گونه‌های کلید کش یک آدرس (کوئری‌استرینگ، موبایل، WebP/AVIF، گونه‌های CORS) همراه آن پاک می‌شوند.

هر فراخوانی تا ۱۰٬۰۰۰ شیء را پاک می‌کند و اگر الگو بیش از این تعداد را گرفته باشد truncated: true برمی‌گرداند — تا وقتی این مقدار false شود دوباره صدا بزنید. برای دیدن اینکه یک الگو چه چیزهایی را می‌گیرد، همان path را به list_cache_entries بدهید.

purge_cache_entries همان سطرهایی را که list_cache_entries برگردانده پاک می‌کند — وقتی که الگوی زیررشته‌ای بیش از حد لازم را می‌گیرد.

purge_cache هرچه دامنه در کش دارد، روی همه‌ی نودها، پاک می‌کند. گزینه‌ی سنگین است: تا پرشدن دوباره‌ی کش، همه‌ی ترافیک به مبدأ می‌رود.

هر دو ابزار دقیق mode: "refresh" را هم می‌پذیرند: فقط نسخه‌ی کش‌شده حذف می‌شود تا بازدیدکننده‌ی بعدی آن را از مبدأ بگیرد و ردیف در فهرست بماند. اگر کسی در حال انتشار پیاپی است، set_developer_mode بهتر از پاک‌سازی مکرر است.

run_analytics_query به دستیار اجازه می‌دهد به پرسش‌هایی پاسخ دهد که ابزار اختصاصی ندارند — «۲۰ آدرس برتر بر اساس تعداد 5xx در ۷ روز گذشته»، «پهنای باند ساعتی یک زیردامنه»، «کدام ASNها بیشترین ترافیک bypass را فرستاده‌اند». شما (یا هوش مصنوعی) یک SELECT روی جدول requests می‌فرستید و ستون‌ها و سطرها را به‌صورت JSON می‌گیرید (تا سقف ۱۰٬۰۰۰ سطر).

این قابلیت به‌شدت محدود شده است:

  • فقط خواندن. تنها یک SELECT (یا WITH … SELECT) پذیرفته می‌شود. نوشتن، DDL، تغییر تنظیمات، INTO OUTFILE/FORMAT و توابع جدولی (url، file، remote، s3، …) رد می‌شوند.
  • فقط داده‌ی خودتان. هر کوئری توسط موتور به دامنه‌هایی که کلید شما به آن‌ها دسترسی دارد محدود می‌شود؛ حتی داخل زیرکوئری هم راهی برای خواندن داده‌ی دیگران نیست.
  • محدود. زمان اجرا و تعداد سطرهای خوانده‌شده و بازگشتی سقف دارند تا کوئری سنگین از کنترل خارج نشود.

ستون‌های مفید requests: ‏event_time، domain_id، hostname، method، uri، status، bytesIn، bytesOut، duration (میلی‌ثانیه)، remoteAddr، country، asn، asnOrg، userAgent، cacheStatus (‏hit/miss/bypassbypassReason، cacheAge، reqStatus (‏cache/proxied/directisWS، protocol، referer، rayId، node، originStatus، originAddr، error، errFault (مقصر خطا: ‏origin/edge/clienterrReason، upstreamDuration (زمان رفت‌وبرگشت مبدأ)، originConnReused، originDialMs، originTlsMs، originTtfbMs، originTlsVersion، ja4، botKind، wafScore، mdConverted، optKind. برای دسته‌بندی زمانی از toStartOfHour(event_time) یا toStartOfDay(event_time) استفاده کنید.

توجه کنید که errFault = 'origin' خطاهایی را هم می‌گیرد که اصلاً به وضعیت 5xx نرسیده‌اند — تایم‌اوت، رد اتصال، یا مبدأیی که ارتباط را قطع کرده — یعنی قطعی‌هایی که فیلتر status >= 500 آن‌ها را نمی‌بیند.

  • سرور MCP دقیقاً با مجوزهای حساب شما عمل می‌کند. نقش‌های اشتراک‌گذاری اعمال می‌شوند: با دسترسی Viewer روی یک دامنه‌ی اشتراکی، ابزارهای نوشتن روی آن دامنه حتی با کلید کامل شکست می‌خورند.
  • محدودیت‌های پلن هم اعمال می‌شود. مانیتورینگ، لاگ درخواست‌ها، WAF و پاک‌سازی کش به پلن دامنه وابسته‌اند و ابزاری که به آن‌ها نیاز دارد با ذکر دلیل شکست می‌خورد.
  • هر عمل MCP از همان مسیر اعتبارسنجی، ثبت وقایع و شمارش مصرف REST API عبور می‌کند و در محدودیت نرخ کلید (۳۰۰ درخواست در دقیقه) حساب می‌شود.
  • ابطال کلید در پنل، دستیار را بلافاصله قطع می‌کند.