DryRun؛ MCP پستگرس بدون اتصال به دیتابیس
خلاصهٔ کاملتر
دستیارهای هوش مصنوعی خوب SQL مینویسن، ولی به گفتهٔ سازندههای DryRun عملاً کورن: از اسکیما، ایندکسها و محدودیتهای دیتابیس شما خبر ندارن و ممکنه مایگریشنی بسازن که روی شلوغترین جدول قفل ACCESS EXCLUSIVE بگیره و سرویس رو بخوابونه. راهحل رایج، یعنی دادن رشتهٔ اتصال دیتابیس به سرور MCP، به نظر نویسنده خودش یه دردسر امنیتیه و نمونههاش هم دیده شده: پاک شدن دیتابیس پروداکشن به دست یه ایجنت، و حتی SQL injection توی سرورهای MCP که قرار بود فقطخواندنی باشن.
DryRun عمداً دو تیکهٔ جداست: یه ابزار خط فرمان و یه سرور MCP. سیالآی یه بار به پستگرس وصل میشه و کل کاتالوگ — جدولها، ایندکسها، محدودیتها، پارتیشنها، پالیسیهای RLS، تریگرها و اکستنشنها — رو توی یه فایل JSON میریزه. بعدش همهچی آفلاینه: بیش از ۲۰ قانون لینت قراردادی و ۱۳ قانون ساختاری (ایندکس تکراری، کلید خارجی بدون ایندکس پوششی، FK حلقوی)، تحلیل امنیت مایگریشن با تشخیص نوع قفل و بازنویسی جدول، اعتبارسنجی کوئری با libpg_query و diff بین اسنپشاتها.
سرور MCP از همون اسنپشات میخونه و ۱۴ ابزار رو روی stdio یا SSE در اختیار دستیار میذاره: کاوش اسکیما، اعتبارسنجی کوئری، بررسی مایگریشن، لینت و سلامت vacuum. هیچ اتصالی به دیتابیس لازم نیست و دستیار هیچوقت رمز و دسترسی رو نمیبینه. استدلال نویسنده اینه که کانتکست اسکیما ذاتاً جاش توی یه فایله نه توی یه اتصال زنده، چون فقط موقع دیپلوی یه مایگریشن عوض میشه، نه بین دو تا کوئری.
همین باعث میشه اشتراکگذاری توی تیم راحت بشه: یه نفر که دسترسی داره اسنپشات رو میگیره و بقیه فقط ایمپورتش میکنن.
dryrun dump-schema --source postgres://... --pretty -o schema.json
dryrun init
dryrun import schema.jsonاسنپشاتها content-addressed و idempotent هستن، پس میشه اونها رو توی یه ریپوی گیت یا هر رجیستری OCI مثل GHCR و Artifact Registry پوش کرد و بقیهٔ تیم فقط pull بزنن. نویسنده اضافه میکنه که سرور MCP فعلاً تکدیتابیسه و برای چند دیتابیس باید چند پروسهٔ جدا بالا آورد.
نکات کلیدی:
- شناخت اسکیما از یه اسنپشات JSON آفلاین، نه از اتصال زنده به دیتابیس
- CLI کاتالوگ رو استخراج و تحلیل میکنه؛ سرور MCP همون تحلیل رو به دستیار میده
- بیش از ۲۰ قانون لینت قراردادی + ۱۳ قانون ساختاری، تحلیل قفل مایگریشن و اعتبارسنجی کوئری
- رمز و دسترسی دیتابیس از ماشین DBA بیرون نمیره؛ بقیه فقط اسنپشات رو میگیرن
- اشتراک اسنپشات از مسیر فایل، ریپوی گیت یا رجیستری OCI؛ لایسنس BSD 2-Clause




