Skip to main content
Glama

hamravesh-mcp

کنترلِ کنسولِ هم‌روش / دارکوب از داخلِ هر کلاینتِ MCP (مثل Claude) — بدونِ پنل، بدونِ کلیک. Control the Hamravesh / Darkube console from any MCP client (Claude, etc.) — no panel, no clicking.

npm version CI license node

سرورِ MCP که به دستیارِ هوشِ مصنوعی اجازه می‌دهد اپ‌های هم‌روش (دارکوب) را مستقیم از طریقِ API داخلیِ کنسول مدیریت کند: دیدن و بررسیِ اپ‌ها، لاگ، ری‌استارت، دیپلوی، اسکیل، تغییرِ env، مدیریتِ دیتابیس/رجیستری/صورتحساب — و صدا زدنِ هر endpointِ دیگر.

A Model Context Protocol server that lets an AI assistant manage your Hamravesh (Darkube) apps directly via the console's internal API: list & inspect apps, view logs, restart, redeploy, scale, edit env vars, manage databases, registries, billing — and call any other endpoint.

⚠️ غیررسمی. این ابزار از API داخلیِ کنسولِ هم‌روش (api.hamravesh.com) استفاده می‌کند که عمومی/مستند نیست و ممکن است بدونِ اطلاع تغییر کند. Unofficial. Uses Hamravesh's internal console API (api.hamravesh.com), which is not a public/documented API and may change without notice.


فارسی

امکانات

  • 🔑 دو روشِ ورود — یا کلید API (هدرِ Authorization: Api-Key …، توصیه‌شده) یا ایمیل/رمز (JWT با تمدیدِ خودکار).

  • 🧰 ۲۱ ابزار — خواندنی (اپ‌ها، لاگ، کانتینرها، منیفست، بیلدها، دیتابیس، رجیستری، صورتحساب، کلیدها)، نوشتنی (ری‌استارت، دیپلوی، اسکیل، روشن/خاموش، تغییرِ env، ساخت/حذفِ اپ، ساخت/حذفِ کلید) و یک ابزارِ جوکر به‌نامِ hamravesh_request برای هر endpoint.

  • 🔒 پیش‌فرض امن — نوشتن و حذف تا وقتی خودت روشن نکنی خاموش‌اند. ابزارِ جوکر روی میزبانِ هم‌روش قفل است (بدونِ SSRF) و رازها از پیامِ خطا پاک می‌شوند.

  • 📦 بدونِ build، یک وابستگی — ESMِ ساده، فقط @modelcontextprotocol/sdk.

گرفتنِ کلید API

در پنلِ هم‌روش: تنظیماتِ سازمان ← امنیت ← API Keys ← یک کلید بساز. (یا به‌جایش ایمیل/رمز بده — جدولِ پایین.)

شروعِ سریع

با Claude، Cursor، VS Code، Windsurf و هر کلاینتِ MCP کار می‌کند. نیازی به نصبِ سراسری نیست — npx خودش موقعِ اجرا دانلودش می‌کند.

🪄 روشِ A — بدونِ کدنویسی (بذار Claude خودش انجامش دهد). اگر همه‌کارت را با Claude انجام می‌دهی، فقط بگو:

«MCP هم‌روش (hamravesh-mcp) را برایم نصب و تنظیم کن. کلیدِ APIم این است: … و سازمانم ….»

Claude خودش نصب و تنظیمش می‌کند. تمام.

⌨️ روشِ B — Claude Code، یک خط:

claude mcp add hamravesh --env HAMRAVESH_API_KEY=کلیدت --env HAMRAVESH_ORG=سازمانت -- npx -y hamravesh-mcp

📝 روشِ C — فایلِ پیکربندی (claude_desktop_config.json یا .mcp.jsonِ پروژه):

{
  "mcpServers": {
    "hamravesh": {
      "command": "npx",
      "args": ["-y", "hamravesh-mcp"],
      "env": {
        "HAMRAVESH_API_KEY": "کلیدِ تو",
        "HAMRAVESH_ORG": "نامِ سازمان"
      }
    }
  }
}

متغیرهای محیطی

متغیر

لازم؟

توضیح

HAMRAVESH_API_KEY

یکی از این دو

کلید API (توصیه‌شده).

HAMRAVESH_EMAIL + HAMRAVESH_PASSWORD

یکی از این دو

ایمیل/رمز (JWT). اگر 2FA داری HAMRAVESH_OTP.

HAMRAVESH_ORG

توصیه‌شده

سازمانِ پیش‌فرض (مثل wgcup)؛ در هر ابزار قابلِ تغییر.

HAMRAVESH_BASE

نه

پیش‌فرض https://api.hamravesh.com.

HAMRAVESH_ALLOW_WRITE

نه

1 برای فعال‌کردنِ ابزارهای نوشتن (پیش‌فرض خاموش).

HAMRAVESH_ALLOW_DELETE

نه

1 برای فعال‌کردنِ ابزارهای حذف (پیش‌فرض خاموش).

ایمنی

به‌صورتِ پیش‌فرض فقط خواندن مجاز است؛ هیچ تغییری روی سرویسِ زنده رخ نمی‌دهد. برای تغییر/حذف باید فلگ‌های بالا را روی 1 بگذاری. این یعنی امکان ندارد دستیار اشتباهی چیزی را خراب کند.

ابزارها

خواندنی (همیشه روشن): hamravesh_whoami، hamravesh_list_apps، hamravesh_get_app، hamravesh_app_containers، hamravesh_app_logs، hamravesh_app_manifests، hamravesh_app_builds، hamravesh_list_databases، hamravesh_list_registries، hamravesh_billing، hamravesh_list_apikeys

نوشتنی (نیازمندِ ALLOW_WRITE=1): hamravesh_restart_app، hamravesh_redeploy_app، hamravesh_scale_app، hamravesh_set_app_enabled، hamravesh_update_app_envs، hamravesh_create_app، hamravesh_create_apikey، و hamravesh_delete_app/hamravesh_delete_apikey (نیازمندِ ALLOW_DELETE=1)

جوکر: hamravesh_request — هر متد/مسیر (GET آزاد؛ نوشتن/حذف تابعِ فلگ‌ها).

مرجع

  • ENDPOINTS.md — کاتالوگِ دسته‌بندی‌شده.

  • WRITE-ENDPOINTS.md — شکلِ بدنهٔ همهٔ ۱۶۲ درخواستِ نوشتنی.

  • LIVE-STATUS.md — وضعیتِ زندهٔ هر endpoint با حسابِ admin.

  • ENDPOINTS-RAW.txt — لیستِ خامِ همهٔ ۵۷۸ آدرس (متد+مسیر).

توسعه

npm ci
npm test        # بدونِ شبکه: ابزارها و محافظِ نوشتن را چک می‌کند

Related MCP server: amp-mcp-server

English

Features

  • 🔑 Two auth modes — a stable API key (Authorization: Api-Key …, recommended) or email/password (JWT with auto-refresh).

  • 🧰 21 tools — read (apps, logs, containers, manifests, builds, databases, registries, billing, api-keys), write (restart, redeploy, scale, enable/disable, update env, create/delete app, create/delete api-key), plus a generic hamravesh_request escape hatch for any endpoint.

  • 🔒 Safe by default — write and delete operations are disabled unless you explicitly turn them on. The generic tool is host-locked (no SSRF) and secrets are redacted from error messages.

  • 📦 Zero build, one dependency — plain ESM, only @modelcontextprotocol/sdk.

Get an API key

In the Hamravesh panel: Organization settings → Security → API Keys → create one. (Or use email/password instead — see the table below.)

Quick start

Works with Claude, Cursor, VS Code, Windsurf and any MCP client. No global install — npx fetches it on demand.

🪄 Option A — No coding (let Claude do it). If you do everything through Claude, just tell it:

"Set up the hamravesh-mcp MCP server for me. My Hamravesh API key is … and my org is …."

Claude installs it and writes the config for you. Done.

⌨️ Option B — Claude Code, one line:

claude mcp add hamravesh --env HAMRAVESH_API_KEY=your-key --env HAMRAVESH_ORG=your-org -- npx -y hamravesh-mcp

📝 Option C — config file (Claude Desktop claude_desktop_config.json, or a project .mcp.json):

{
  "mcpServers": {
    "hamravesh": {
      "command": "npx",
      "args": ["-y", "hamravesh-mcp"],
      "env": {
        "HAMRAVESH_API_KEY": "your-api-key",
        "HAMRAVESH_ORG": "your-org-name"
      }
    }
  }
}

Environment variables

Variable

Required

Description

HAMRAVESH_API_KEY

one of these

API key (recommended).

HAMRAVESH_EMAIL + HAMRAVESH_PASSWORD

one of these

Email/password (JWT). HAMRAVESH_OTP if 2FA.

HAMRAVESH_ORG

recommended

Default organization (e.g. wgcup); per-call overridable.

HAMRAVESH_BASE

no

Defaults to https://api.hamravesh.com.

HAMRAVESH_ALLOW_WRITE

no

1 to enable write tools (default off).

HAMRAVESH_ALLOW_DELETE

no

1 to enable delete tools (default off).

Tools

Read (always on): hamravesh_whoami, hamravesh_list_apps, hamravesh_get_app, hamravesh_app_containers, hamravesh_app_logs, hamravesh_app_manifests, hamravesh_app_builds, hamravesh_list_databases, hamravesh_list_registries, hamravesh_billing, hamravesh_list_apikeys

Write (need ALLOW_WRITE=1): hamravesh_restart_app, hamravesh_redeploy_app, hamravesh_scale_app, hamravesh_set_app_enabled, hamravesh_update_app_envs, hamravesh_create_app, hamravesh_create_apikey, hamravesh_delete_app/hamravesh_delete_apikey (need ALLOW_DELETE=1)

Generic: hamravesh_request — any method/path (GET free; write/delete follow the flags).

Reference

Develop

npm ci
npm test        # network-free: checks tools + write guard

مجوز / License

MIT © محمد باختری — Mohammad Bakhtari

Available Tools

30 tools
hamravesh_app_buildsC

تاریخچه‌ی بیلدهای یک اپ.

Inputs: app_id (required), limit, org.

hamravesh_app_containersC

فهرست پادها/کانتینرهای یک اپ.

Inputs: app_id (required), org.

hamravesh_app_logsB

لاگ‌های یک اپ. ابتدا با hamravesh_app_containers نامِ pod را بگیر. endpoint پارامترهای from_index/to_index/reference_index می‌خواهد؛ این ابزار پیش‌فرضِ معقول می‌گذارد (آخرین ~۲۰۰ خط).

Inputs: app_id (required), pod_name, container_name, lines, +5 more.

hamravesh_app_manifestsC

منیفست‌های Kubernetes یک اپ (YAML).

Inputs: app_id (required), org.

hamravesh_billingC

وضعیت مالی سازمان: کیف‌پول‌ها، بودجه و بدهی.

Inputs: org.

hamravesh_create_apikeyC

ساخت یک کلید API جدید برای سازمان. مقدار کلید فقط همین یک بار برمی‌گردد. (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: name (required), org.

hamravesh_create_appA

ساخت یک اپِ داکر-ایمیجِ جدید در دارکوب (بدنه‌اش با تست زنده تأیید شده). به plan (uuid پلن منابع)، namespace (id عددی namespace) و organization (id عددی سازمان) نیاز دارد — این مقادیر را از hamravesh_get_app روی یک اپِ موجود ببین (plan آن، و idِ namespace و organization همان اپ را بردار). (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: name (required), image_repo (required), image_tag (required), service_port (required), +10 more.

hamravesh_create_databaseA

ساخت یک دیتابیسِ مدیریت‌شده (DBaaS). واحدها: cpu = millicore (۱۰۰۰=۱ core)، ram/disk = MB. num_of_standbys = تعدادِ standby (۰ = فقط master). plan را از GET /dbaas/api/v1/app/plans/ بگیر (code_name مثل fixed-plan-0). engine باید دقیقاً با همان حروف باشد: PostgreSQL / MySQL / MongoDB / Redis / … . cluster_id و namespace_id را از یک دیتابیس یا اپِ موجود (list/get) بردار. (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: name (required), engine (required), version (required), plan (required), +8 more.

hamravesh_create_saasA

ساختِ یک سرویسِ بازارچه/SaaS (اپِ یک‌کلیکی مثل GitLab Runner / n8n / WordPress / Grafana). هر محصول فیلدهای خودش را دارد؛ اول با hamravesh_list_marketplace_products محصول (id/product_type/suggested_plan_id/plans) و فیلدهای لازم را ببین، سپس بدنه‌ی کامل را در body بده (passthrough). endpoint: POST /marketplace/api/v1/app/saas/. (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: body (required), org, dry_run.

hamravesh_database_powerC

روشن یا خاموش کردنِ یک دیتابیسِ DBaaS. (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), action (required), org.

hamravesh_delete_apikeyC

حذف یک کلید API (با شناسه‌ی id، نه مقدار value). (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: id (required), org.

hamravesh_delete_appA

حذفِ کاملِ یک اپ دارکوب (برگشت‌ناپذیر). نیازمند ALLOW_DELETE. (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), org.

hamravesh_delete_databaseA

حذفِ کاملِ یک دیتابیسِ DBaaS (برگشت‌ناپذیر). نیازمندِ ALLOW_DELETE. (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), org.

hamravesh_get_appB

جزئیات کامل یک اپ دارکوب (env، دامنه، منابع، بیلد، وضعیت). برای جلوگیری از نشتِ رمز، مقدارِ env ها به‌صورتِ پیش‌فرض ماسک می‌شود؛ با reveal_secrets=true مقدارها نمایش داده می‌شوند.

Inputs: app_id (required), org, reveal_secrets.

hamravesh_get_databaseC

جزئیاتِ یک دیتابیسِ DBaaS (با شناسه‌ی app_id آن).

Inputs: app_id (required), org.

hamravesh_get_saasC

جزئیاتِ یک سرویسِ SaaSِ نصب‌شده (با service_id).

Inputs: service_id (required), org.

hamravesh_list_apikeysC

فهرست کلیدهای API سازمان.

Inputs: org.

hamravesh_list_appsA

فهرست اپ‌های دارکوب یک سازمان (با وضعیت، دامنه، منابع، replicas).

Inputs: org.

hamravesh_list_databasesC

فهرست دیتابیس‌های مدیریت‌شده (DBaaS) یک سازمان.

Inputs: org.

hamravesh_list_marketplace_productsC

فهرستِ محصولاتِ بازارچه/SaaS (اپ‌های یک‌کلیکی: GitLab Runner، n8n، WordPress، Grafana، Metabase، …). ⚠️ مسیرِ بازارچه پیشوندِ /marketplace/ دارد (نه /api/v1/app/) — همین باعثِ ۴۰۴ در گزارش‌های قبلی بود.

Inputs: org.

hamravesh_list_registriesC

فهرست کانتینر رجیستری‌ها و مصرف فضای آن‌ها.

Inputs: org.

hamravesh_list_saasC

فهرستِ سرویس‌های بازارچه/SaaSِ نصب‌شده‌ی یک سازمان.

Inputs: org.

hamravesh_redeploy_appC

دیپلوی مجدد اپ از روی آخرین کامیت/بیلد. (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), org.

hamravesh_requestA

درخواست خام به هر endpoint هم‌روش (برای کارهایی که ابزار اختصاصی ندارند). GET همیشه مجاز است؛ POST/PUT/PATCH نیازمند ALLOW_WRITE و DELETE نیازمند ALLOW_DELETE است. فهرست کامل مسیرها در ENDPOINTS.md پروژه است.

Inputs: method (required), path (required), org, params, +2 more.

hamravesh_restart_appC

ری‌استارت یک اپ (همه‌ی پادها دوباره راه می‌افتند). (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), org.

hamravesh_scale_appA

تغییر تعداد replica های یک اپ. (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), replicas (required), org.

hamravesh_set_app_enabledC

روشن/خاموش کردن یک اپ (is_enabled). (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), enabled (required), org.

hamravesh_set_basic_authA

تنظیمِ Basic Auth روی ingressِ یک اپ دارکوب (محافظت با یوزر/پسورد). برای حذفِ محافظت، username/password را خالی بگذار. (روشِ امن: GET اپ → ادغام → PUT.) (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), username, password, org.

hamravesh_update_app_envsA

به‌روزرسانی متغیرهای محیطی یک اپ. envs = متغیرهای عادی، secret_envs = متغیرهای محرمانه (Vault). هر آیتم به‌شکلِ {name, value} است. حداقل یکی از این دو را بده. ⚠️ ابتدا با hamravesh_get_app شکل فعلی را ببین؛ این کلِ آرایه(های) داده‌شده را جایگزین می‌کند (نه merge). (غیرفعال — برای فعال‌سازی HAMRAVESH_ALLOW_WRITE=1) [پیش‌نمایش: dry_run:true یا env HAMRAVESH_DRY_RUN=1]

Inputs: app_id (required), envs, secret_envs, org.

hamravesh_whoamiA

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

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.9/5.0

    Scored across 30 tools

    Disambiguation4/5

    Each tool targets a distinct resource/action, and the main potential confusions (e.g., list_saas vs. list_marketplace_products, create_saas vs. create_app) are clarified by their descriptions. A couple of similar lifecycle actions on different resources could still cause misselection, but the boundaries are mostly clear.

    Naming Consistency4/5

    The dominant hamravesh_verb_noun pattern is consistent and readable. The few exceptions like app_containers, app_logs, app_manifests, and database_power break the otherwise predictable convention, but they are still recognizable and not chaotic.

    Tool Count2/5

    At 30 tools, the server exceeds the 25-tool threshold and feels heavy even for a broad cloud-management API. Several write tools are disabled by default, and some subresource operations could plausibly be consolidated, making the surface larger than necessary.

    Completeness3/5

    Core app and database lifecycles are well covered, including create/read/delete, but SaaS has no update/delete tool, database plans/updates are missing as dedicated tools, and app updates are limited to envs/basic auth. The raw hamravesh_request tool helps agents work around these gaps, but notable operations still lack first-class support.

    Maintenance

    ActivityNo data
    ResponsivenessSyncing

    Related MCP Connectors

    Related MCP Servers