سرور MCP
Rahdar از Model Context Protocol پشتیبانی میکند، پس یک دستیار میتواند «چرا ORDERS.DLQ انباشته شده» را روی کلاسترهای واقعی شما پاسخ دهد، بهجای حدسزدن.
سطح در معرض، شانزده ابزار مبتنی بر قصد است — diagnose، message_action، broker_config_change — نه آینهای از REST API. یک آینه، context مدل را صرف لولهکشی میکند و سرهمکردن تشخیص را به خودش وامیگذارد؛ این ابزارها بهجایش به شکل خودِ پرسشها ساخته شدهاند (ADR-0045، انگلیسی).
گرفتن یک کلید
وارد شوید ← منوی آواتار ← Account ← API keys ← New key ← زمان انقضا، دامنه و مجوزهایی که باید حمل کند و در صورت نیاز ابزارهای MCP مجاز را انتخاب کنید ← مقدار را کپی کنید. فقط یک بار نمایش داده میشود.
- انقضا. هر کلیدی منقضی میشود، حداکثر به اندازهٔ بیشینهٔ عمر تعیینشده برای نصب پس از ساخت (بهطور پیشفرض ۹۰ روز، Settings ← API tokens ← Maximum lifetime). کمکردن این بیشینه کلیدهای موجود را بیدرنگ کوتاهتر میکند.
- ابزارها. کلیدی که به ابزارهای مشخصی محدود شده فقط همانها و
rahdar_helpرا میبیند؛ ابزارهای دیگر نه فهرست و نه توصیف میشوند، و فراخوانی آنها دقیقاً همان پاسخ ابزاری ناموجود را میگیرد. - چرخش. Rotate یک رمز تازه میسازد و رمز قبلی را در بازهٔ همپوشانی (بهطور پیشفرض ۲۴ ساعت) فعال نگه میدارد، تا پیکربندی دستیار بدون قطعی بهروز شود. کلید مجوزها و زمان انقضایش را نگه میدارد.
- محدودیتها. هر کلید در دقیقه ۶۰۰ درخواست و همزمان ۸ درخواست، و هر کاربر روی همهٔ کلیدهایش در دقیقه ۱٬۲۰۰ درخواست مجاز است. هر پاسخ
RateLimit-Limit،RateLimit-RemainingوRateLimit-Resetدارد و درخواست اضافی429همراه باRetry-Afterمیگیرد. - مصرف تعداد درخواستهای روزانهٔ هر کلید را همراه با موارد ردشده، محدودشده و ناموفق نشان میدهد. مدیرانی که مجوز See and revoke every user's API tokens دارند همهٔ کلیدها را در Admin ← API keys میبینند؛ کلیدهای بلااستفاده علامت میخورند و هر کلیدی را میتوان باطل کرد (ADR-0136، انگلیسی).
اتصال
POST /mcp، روی همان origin رابط کاربری، با کلید بهعنوان bearer token.
{
"mcpServers": {
"rahdar": {
"type": "http",
"url": "https://rahdar.example.com/mcp",
"headers": { "Authorization": "Bearer as_..." }
}
}
}بدون کلاینت هم میشود آزمودش:
curl -s https://rahdar.example.com/mcp \
-H "Authorization: Bearer as_..." \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'چه چیزهایی هست
| نوع | نام | برای |
|---|---|---|
| Tool | rahdar_help | خودِ فهرست: هر ابزار، وضعیت و پارامترهایش |
| Tool | diagnose | یک کلاستر (نقش HA هر نود، split-brain، تأخیر replication، هشدارهای فعال) یا یک صف از ابتدا تا انتها |
| Tool | list_resources | صفها، آدرسها، مصرفکنندهها، نشستها، اتصالها، تولیدکنندهها، divertها، bridgeها |
| Tool | metric_series | یک سری زمانی سطلبندیشده برای یک سنجه |
| Tool | config_diff | پیکربندی هر نود در برابر اکثریت: کلیدهای دچار انحراف و نودهای متفاوت |
| Tool | broker_config | اعلامیهٔ کلاستر، انحراف هر نود، قطعهٔ broker.xml، یا اعمالهای گذشته |
| Tool | browse_messages | هدرها، یا یک بدنه بر اساس id |
| Tool | trace_request_reply | جریانها، آمار تأخیر و timeout، انتظارات پیکربندیشده |
| Tool | activity_log | رویدادهای بروکر، یا مسیر ممیزی خود Rahdar |
| Tool | message_action | انتقال / retry / حذف / انقضا / purge |
| Tool | queue_lifecycle | ساخت، بهروزرسانی، توقف، ازسرگیری یا نابودی یک صف، آدرس یا divert |
| Tool | broker_config_change | اعلام یک پیکربندی، یا اعمال آن اول روی قناری با تصدیق خطرها بر اساس شناسه |
| Tool | connection_action | بستن یک اتصال، نشست، مصرفکننده یا مصرفکنندههای یک آدرس |
| Tool | send_message | صفکردن یک پیام |
| Tool | alert_rule / rahdar_setting | قواعد هشدار؛ تنظیمات عملیاتی |
| Resource | rahdar://clusters، rahdar://permissions، rahdar://tools | این کلید چه میبیند و چه میتواند بکند |
| Resource | cluster://{id}/topology، cluster://{id}/capabilities، cluster://{id}/nodes/{nodeId}/settings | نودها؛ اتصال از چه پشتیبانی میکند، بههمراه broker.xml لازم برای باقی؛ تنظیمات مؤثر یک نود |
| Prompt | triage_cluster، investigate_queue، before_you_purge، tune_scrape_load | runbookها |
قرارداد ایمنی
دستیاری که یک API مدیریتی در دست دارد، دقیقاً همانجایی است که مدل ایمنی باید کسلکننده و صریح باشد. این یکی هست:
- یک کلید هرگز از مالکش فراتر نمیرود. دسترسیها در هر فراخوانی با دسترسیهای زندهٔ مالک اشتراک گرفته میشوند، پس محدودکردن یک فرد بیدرنگ کلیدهایش را هم محدود میکند (ADR-0046، انگلیسی).
- تغییرها بهطور پیشفرض dry-run اند. یک اجرای مخرب واقعی افزون بر آن نیاز دارد
confirmبرابر نام خودِ صف باشد — که پرسشی جدا ازoverrideمربوط به سقف انبوه است وconfirmهرگز آن را برآورده نمیکند. - هر فراخوانی ممیزی میشود، خواندنها هم، بهصورت
MCP_TOOL_CALLبه نام مالک و با نام کلید ضمیمهشده (ada [token: laptop-agent])، همراه با نام ابزار، کلاستر و نتیجه. ردیفهایی که یک تغییر مینویسد، شامل dry runها، زیر آن قرار میگیرند (ADR-0137، انگلیسی). - کل نصب را میتوان فقطخواندنی کرد. Settings ← MCP server ← Read-only همهٔ ابزارهای تغییردهنده را برای همهٔ کلیدها پنهان و رد میکند، هر
confirmای که داده شود. یک کلید فقطخواندنی همان کلیدی است که فقط مجوزهای خواندن دارد. - کلاستری که کلید بر آن دسترسی ندارد با این پاسخ برمیگردد: «چنین کلاستری وجود ندارد، یا این کلید بر آن دسترسی ندارد» — بدون نامبردن از مجوزی و بدون تأیید هیچ id ای.
کشف
rahdar_help یک ابزار است، نه یک منبع اختیاری؛ و یک کاتالوگ واحد schemaها، متن راهنما، منبع و دستورالعملهای سرور را میسازد — پس نمیتوانند با هم اختلاف پیدا کنند (ADR-0054، انگلیسی).