وقتی Cascade بورد را می‌بیند چه چیزی تغییر می‌کند

عامل Cascade در Windsurf از قبل کدبیس باز را می‌بیند. بدون MCP هیچ ایده‌ای ندارد الان روی چه تسکی کار می‌کنید، معیار پذیرش چیست، یا اصلاً باگی که دارد رفع می‌کند به شما تخصیص داده شده یا نه — آن زمینه در یک تب مرورگر است که باید با دست توضیحش بدهید. با اتصال سرور MCP وی‌کی‌اف‌گو، Cascade می‌تواند پیش از نوشتن حتی یک خط کد get_context_pack را صدا بزند و بعد از تمام‌شدن کار update_status را، همان‌جا در همان مکالمه‌ای که دارد فایل‌ها را ویرایش می‌کند.

تنظیمات: ~/.codeium/windsurf/mcp_config.json

Windsurf برخلاف اسکیم cursor:// در Cursor، لینک نصب یک‌کلیکی برای MCP ندارد — تنظیمات یک فایل JSON است که مستقیم ویرایشش می‌کنید. Windsurf Settings → Cascade → MCP Servers را باز کنید، یا مستقیم فایل را ویرایش کنید:

{
  "mcpServers": {
    "wkfgo": {
      "serverUrl": "https://YOUR_INSTANCE/api/mcp",
      "headers": {
        "Authorization": "Bearer wk_YOUR_KEY"
      }
    }
  }
}

به نام کلید دقت کنید: تنظیمات Windsurf از serverUrl استفاده می‌کند، نه url. چیز کوچکی است، اما رایج‌ترین دلیلی است که یک تنظیمات کارکردنِ Cursor بعد از کپی‌پیست در Windsurf بی‌صدا شکست می‌خورد — فیلدی که وی‌کی‌اف‌گو نیاز دارد اصلاً آنجا نیست. کلید شخصی wk_… خودتان را از Settings → Integrations → Connect your AI IDE بگیرید؛ یک کلید برای هر توسعه‌دهنده، هرگز یک توکن ادمین مشترک.

تأیید اتصال

بعد از ویرایش تنظیمات Windsurf را ری‌استارت کنید — سرورهای MCP فقط هنگام استارت خوانده می‌شوند. بعد در Cascade بپرسید:

«از list_tasks استفاده کن و تسک‌های تخصیص‌داده‌شده به من را نشان بده.»

جواب خالی یا forbidden تقریباً همیشه یکی از این دو دلیل را دارد: JSON بدشکل است (کاما اضافه‌ی انتهایی مقصر معمول است)، یا FeatureAccess کلید پروژه‌ای را که می‌پرسید پوشش نمی‌دهد. به‌ندرت شبکه است — نقطه‌پایانی MCP همانی است که Cursor و Claude Code هم با موفقیت استفاده می‌کنند.

یک چرخه‌ی کاری در Cascade

الگویی که در عمل جواب می‌دهد: پیش از شروع یک تغییر، get_context_pack({taskId}) معیار پذیرش، صفحات ویکی مرتبط و وابستگی‌ها را به مکالمه می‌آورد — بعد Cascade کد را بر اساس محدودیت‌های واقعی می‌نویسد، نه حدس‌زدن از یک عنوان تسک مبهم. وقتی تغییر آماده شد، submit_for_review تسک را جابه‌جا می‌کند و برنچ را لینک می‌کند، و log_time جلسه را بدون یک اپ تایمر جدا ثبت می‌کند.

get_context_pack → نوشتن تغییر → submit_for_review → log_time

هیچ‌کدام اینها به یک دستور اسلش یا حالت خاص نیاز ندارد — همان چرخه‌ی فراخوانی ابزاری است که Cascade از قبل برای ویرایش فایل استفاده می‌کند، فقط به سمت یک سرور دیگر.

اشتباهات رایج

فرض‌کردن اینکه url و serverUrl قابل‌تعویضند. نیستند، بین IDE‌ها. هر کلاینت MCP اسم فیلد خودش را برای همان مفهوم انتخاب کرده — Cursor و Claude Code از url استفاده می‌کنند، Windsurf از serverUrl، Gemini CLI از httpUrl. کپی‌کردن یک قطعه‌کد بین IDE‌ها بدون چک‌کردن نام کلید، رایج‌ترین شکست راه‌اندازی است.

یک توسعه‌دهنده تست می‌کند، بقیه هنوز در مرورگرند. MCP فقط وقتی جواب می‌دهد که کل تیم استفاده کند — یکپارچه‌سازی نیمه‌پذیرفته‌شده یعنی بورد برای بعضی تسک‌ها به‌روز است و برای بقیه قدیمی، که بدتر از یک بورد یکنواخت قدیمی است چون کسی نمی‌داند به کدام نیمه اعتماد کند.

رد‌کردن چک FeatureAccess. کلید MCP همان مجوزهای پروژه‌ی ورود وب را به ارث می‌برد. پیمانکاری بدون دسترسی مالی از طریق MCP هم روی ابزارهای مالی forbidden می‌گیرد — این یک باگ نیست که دورش بزنید، مدل دسترسی است که همان‌طور که طراحی شده کار می‌کند.

سؤالات متداول

آیا با حالت self-hosted/محلی Windsurf کار می‌کند؟ بله — MCP یک اتصال سمت‌کلاینت به نقطه‌پایانی /api/mcp نمونه‌ی وی‌کی‌اف‌گوی شماست؛ اینکه خودِ Windsurf کجا اجرا می‌شود اهمیتی ندارد.

می‌توانم همان کلید را هم در Windsurf و هم در Cursor استفاده کنم؟ بله، یک کلید شخصی به یک کلاینت محدود نیست. استفاده از کلیدهای جدا برای هر دستگاه، لغو یک دستگاه گم‌شده را ساده‌تر می‌کند.

آیا این جایگزین یکپارچه‌سازی گیت وی‌کی‌اف‌گو می‌شود؟ نه — لینک‌کردن کامیت‌ها به تسک‌ها هنوز از طریق قرارداد TASK-<id> در پیام کامیت اتفاق می‌افتد، مستقل از اینکه Cascade کامیت را نوشته یا یک انسان.

قدم بعدی