Arcane RMCP

ai.dinglebear由 dinglebear.ai 發布v0.4.4更新於 Oct 24, 2026

Arcane Docker and Compose management over MCP and CLI with authenticated stdio and HTTP.

發布方自己的服務:RMCP

概覽

AI 產生的概覽

一個本機 MCP 橋接服務,讓助理透過既有的 Arcane API 伺服器檢視與管理 Docker 和 Compose 資源。

可以做什麼
透過單一 arcane 工具(搭配 action 與 subaction 參數)或對應的 CLI 指令,讀取 Arcane 狀態以及 Docker 環境、專案、容器、映像、網路、磁碟區、登錄檔、GitOps、更新、弱點與系統狀態。建立、更新、啟動、停止、重新啟動、刪除、清理、部署、同步、掃描並備份受支援的 Arcane 資源。檢查映像更新並檢視弱點發現,包括忽略或取消忽略。提供 quick_start 提示與 schema 資源,供用戶端探索用法。
適用情境
當你已經運行 Arcane 伺服器,並希望助理從本機 MCP 用戶端查詢或操作其 Docker 環境與 Compose 專案,而不必在 Arcane 介面中手動點選或自行撰寫 API 呼叫時使用。
執行需求
以本機程序執行,可透過 npx(npm 套件會從 GitHub Releases 下載相符的執行檔)、發行安裝腳本、Docker 或原始碼建置安裝。需要既有的 Arcane API 伺服器、RARCANE_API_URL 基礎位址與 RARCANE_API_KEY 密鑰,透過環境變數或設定檔提供。需要連線至 Arcane 伺服器與 GitHub Releases 的網路。
安裝前請注意
具備寫入能力:停止、刪除、清理、銷毀、還原等破壞性 Docker 與 Arcane 操作在經 params.confirm 或 CLI 的 --confirm 確認後會轉送至 Arcane;RARCANE_MCP_ALLOW_DESTRUCTIVE 會略過該確認,共用部署中不應設定。RARCANE_API_KEY 憑證只能放在環境變數或設定中,切勿放入工具參數。非回送位址的 HTTP 部署需要 bearer 認證、OAuth 或可信任閘道。它不會對 Arcane 做沙箱隔離,Docker 授權仍由 Arcane 負責。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Arcane RMCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

arcane-rmcp

Arcane Docker and Compose management over MCP and CLI with authenticated stdio and HTTP.

It exposes one MCP tool, arcane, plus the rarcane CLI. Agents can inspect Arcane environments, manage compose projects, containers, images, networks, volumes, registries, GitOps syncs, image updates, vulnerability findings, and system operations through stdio MCP, Streamable HTTP MCP, or direct shell commands.

30-second path: set RARCANE_API_URL and RARCANE_API_KEY, then run npx -y @dinglebear/rarcane status -> start loopback HTTP with RARCANE_MCP_HOST=127.0.0.1 npx -y @dinglebear/rarcane serve -> call tools/call with {"action":"status"}.

Status: operational RMCP upstream-client server. Write-capable; destructive Docker and Arcane operations require explicit confirmation. HTTP MCP supports loopback dev mode, static bearer tokens, and Google OAuth through lab-auth.

Not for: replacing Arcane, bypassing Docker or Arcane authorization, running arbitrary shell commands, storing registry or Git credentials, multi-tenant isolation, or passing Arcane API keys through MCP tool arguments.

Contents

Naming

SurfaceThis repo
Repositoryarcane-rmcp
Rust craterarcane
Binary / CLIrarcane
npm package@dinglebear/rarcane
npm binary aliasrarcane
MCP server namerarcane in bundled plugin/client config
MCP toolarcane
Config home~/.rarcane on hosts, /data in containers
Env prefixesRARCANE_*, RARCANE_MCP_*, RARCANE_RMCP_* for npm launcher controls

The repo and npm package use the upstream service name, while the shipped binary keeps the historical Rust CLI name rarcane. The MCP server may be registered as rarcane, but the tool clients call is arcane.

Capabilities And Boundaries

  • Read Arcane status plus Docker environment, project, container, image, network, volume, registry, GitOps, update, vulnerability, and system state.
  • Create, update, start, stop, restart, delete, prune, deploy, sync, scan, and back up supported Arcane resources through action/subaction dispatch.
  • Enforce action scopes and destructive-operation confirmation before forwarding write operations to Arcane.
  • Expose the quick_start prompt and rarcane://schema/mcp-tool resource for client-side discovery.
  • Provide setup, doctor, and watch commands for local plugin/runtime checks.
This repo ownsArcane ownsExplicitly out of scope
MCP/CLI projection, request validation, auth policy, response shaping, setup checks, schema/resource exposure, and destructive gates.Docker state, Arcane projects and environments, upstream authorization, registry credentials, GitOps secrets, vulnerability scanner output, and API semantics.Direct Docker socket access, shell execution, credential storage, generic REST proxy behavior, multi-tenant sandboxing, scheduler behavior, and replacing the Arcane UI/API.

Install

PathCommandBest forNotes
npm / npxnpx -y @dinglebear/rarcane --helpLocal MCP clients and quick trials.Downloads the matching rarcane binary from GitHub Releases.
Release installercurl -fsSL https://raw.githubusercontent.com/dinglebear-ai/rarcane/main/scripts/install.sh | bashHost installs without Node.Installs rarcane for the current Linux host.
Docker / Composedocker compose up -dShared HTTP MCP deployments.Reads .env and exposes container port 40110.
Build from sourcecargo build --releaseDevelopment and audits.Produces target/release/rarcane.
Pluginclaude plugin install plugins/rarcaneClaude Code local plugin setup from this checkout.Uses the packaged skill and monitor metadata. The plugin ships no lifecycle hooks — run rarcane setup repair once after install.

npm / npx

Run the stdio MCP server or CLI without a manual binary install:

bash
npx -y @dinglebear/rarcane --helpnpx -y @dinglebear/rarcane mcpnpx -y @dinglebear/rarcane status

The npm package downloads rarcane during postinstall. Override download behavior only when testing packaging:

VariablePurpose
RARCANE_RMCP_SKIP_DOWNLOAD=1Skip postinstall binary download.
RARCANE_RMCP_VERSION or RARCANE_RMCP_BINARY_VERSIONSelect the GitHub Release tag.
RARCANE_RMCP_REPOSelect the GitHub repo used for release downloads.
RARCANE_RMCP_RELEASE_BASE_URLSelect a custom release base URL.

Build From Source

bash
git clone https://github.com/dinglebear-ai/rarcanecd rarcanecargo build --release./target/release/rarcane --help

Minimum supported Rust version: 1.90.

Quickstart

1. Configure Arcane

Point the bridge at an existing Arcane API server:

bash
export RARCANE_API_URL=https://arcane.example.comexport RARCANE_API_KEY=...

The API key is read from env or config only. Do not pass it in MCP tool arguments or CLI --params-json.

2. Run A Safe CLI Call

bash
npx -y @dinglebear/rarcane status

3. Start Loopback HTTP MCP

bash
RARCANE_MCP_HOST=127.0.0.1 npx -y @dinglebear/rarcane serve

In another shell:

bash
curl -sf http://127.0.0.1:40110/health

4. Make A First MCP Call

bash
curl -s -X POST http://127.0.0.1:40110/mcp \  -H "Content-Type: application/json" \  -H "Accept: application/json, text/event-stream" \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"arcane","arguments":{"action":"status"}}}'

Client Configuration

Claude Code Stdio

json
{  "mcpServers": {    "rarcane": {      "command": "npx",      "args": ["-y", "arcane-rmcp", "mcp"],      "env": {        "RARCANE_API_URL": "https://arcane.example.com",        "RARCANE_API_KEY": "..."      }    }  }}

Claude Code HTTP

json
{  "mcpServers": {    "rarcane": {      "type": "http",      "url": "http://127.0.0.1:40110/mcp",      "headers": {        "Authorization": "Bearer ${RARCANE_MCP_TOKEN}"      }    }  }}

Codex / Labby Gateway

Register Arcane through Labby as an HTTP upstream when sharing one long-running server, or run it directly as stdio for local-only use.

toml
[mcp_servers.rarcane]command = "npx"args = ["-y", "arcane-rmcp", "mcp"]

Generic MCP JSON

json
{  "command": "rarcane",  "args": ["mcp"],  "env": {    "RARCANE_API_URL": "https://arcane.example.com"  }}

Do not put RARCANE_API_KEY, registry credentials, Git credentials, OAuth secrets, SSH keys, passwords, or upstream bearer tokens in MCP tool arguments. Use env, config files, or the MCP client's secret storage. MCP callers never provide credentials, tokens, keys, or secrets as action arguments.

Runtime Surfaces

SurfaceStatusEntry pointPurpose
MCP stdioSupportedrarcane mcp, npx -y @dinglebear/rarcane mcpLocal child-process MCP clients.
MCP HTTPSupportedrarcane serve, POST /mcpStreamable HTTP MCP for local or shared server deployments.
CLISupportedrarcane <command>Scriptable parity and debugging.
PromptSupportedquick_startGuides a client through status and public help.
ResourceSupportedrarcane://schema/mcp-toolJSON schema for the arcane tool.
REST APINot shippedN/AArcane already owns the REST API.
Web UINot shippedN/AArcane already owns the web UI.

MCP Tool Reference

One MCP tool is exposed: arcane. Pass the required action argument and, for most domains, a required subaction.

ActionCommon subactionsScope
helpaction reference or domain-specific helppublic
statuslocal bridge and Arcane config statusrarcane:read
elicit_nameMCP elicitation demonstrationrarcane:read
scaffold_intentside-effect-free scaffold planning handoffrarcane:read
environmentlist, get, create, update, delete, testread/write
projectlist, get, create, update, up, down, restart, pull, destroy, redeploy, buildread/write
containerlist, get, create, start, stop, restart, update, delete, statsread/write
imagelist, get, pull, delete, prune, scanread/write
networklist, get, create, delete, pruneread/write
volumelist, get, create, delete, prune, browse, list-backups, create-backup, delete-backup, restore, restore-filesread/write
systemdocker-info, prune, start-all, stop-all, convertread/write
image-updatecheck-all, check, check-batch, summaryread
vulnerabilitysummary, list, scanner-status, ignore, unignore, list-ignoredread/write
registrylist, get, create, update, delete, testread/write
gitopslist, get, create, update, delete, sync, status, browseread/write

Action specs in src/actions.rs and the generated schema notes in docs/MCP_SCHEMA.md are the source of truth for required parameters.

Example read-only tool arguments:

json
{  "action": "container",  "subaction": "list",  "envId": "default"}

Example destructive operation:

json
{  "action": "container",  "subaction": "stop",  "envId": "default",  "id": "my-container",  "params": {    "confirm": true  }}

CLI Reference

rarcane exposes the same service layer as the MCP tool:

bash
rarcane statusrarcane help --domain containerrarcane call --action container --subaction list --env-id defaultrarcane call --action system --subaction docker-info --env-id defaultrarcane call --action container --subaction stop --env-id default --id my-container --confirmrarcane doctor --jsonrarcane watch --url http://127.0.0.1:40110rarcane setup checkrarcane setup repair

--params-json accepts action-specific JSON payloads. Do not use it to pass credentials.

Configuration

Host installs read ~/.rarcane/.env, ~/.rarcane/config.toml, and process env. Containers read /data/.env, /data/config.toml, and process env.

VariableDefaultPurpose
RARCANE_API_URLunsetArcane API base URL.
RARCANE_API_KEYunsetArcane API key or bearer token.
RARCANE_MCP_HOST127.0.0.1HTTP bind host.
RARCANE_MCP_PORT40110HTTP bind port.
RARCANE_MCP_SERVER_NAMEarcane-rmcpAdvertised MCP server name.
RARCANE_MCP_TOKENunsetStatic bearer token for HTTP MCP.
RARCANE_MCP_NO_AUTHfalseDisable auth only for loopback development.
RARCANE_NOAUTHfalseTrust an upstream gateway to enforce auth.
RARCANE_MCP_ALLOWED_HOSTSunsetExtra accepted Host header values.
RARCANE_MCP_ALLOWED_ORIGINSunsetExtra accepted CORS origins.
RARCANE_MCP_PUBLIC_URLunsetPublic base URL for OAuth issuer metadata.
RARCANE_MCP_AUTH_MODEbearerbearer or oauth.
RARCANE_MCP_ALLOW_DESTRUCTIVEfalseBypass the per-call destructive confirmation gate. Do not set in shared deployments.
RARCANE_HOME~/.rarcaneConfig/appdata root override.
RUST_LOGinfoLog filter.

Authentication

Stdio MCP runs as a local trusted child process and does not use HTTP auth.

HTTP MCP auth policy:

StateConditionBehavior
Loopback devBound to 127.0.0.1, localhost, or [::1]Local unauthenticated development is allowed.
Mounted bearerNon-loopback with RARCANE_MCP_TOKENRequires Authorization: Bearer <token> and action scopes.
Mounted OAuthRARCANE_MCP_AUTH_MODE=oauthUses Google OAuth/JWT through lab-auth; static bearer remains supported.
Trusted gatewayRARCANE_NOAUTH=trueAssumes a reverse proxy or gateway already enforced auth.

OAuth mode uses the RARCANE_MCP_* Google OAuth variables documented in docs/CONFIG.md.

OAuth mode is single-replica: client/session state and signing keys are local to one host. Do not run multiple OAuth replicas until those stores are externalized or safely shared.

Safety And Trust Model

  • Arcane API credentials are loaded from config/env only.
  • MCP callers select actions and payloads, not upstream credentials.
  • Destructive subactions reject unless params.confirm=true or CLI --confirm is present.
  • Unknown actions, unknown subactions, missing environment IDs, missing IDs, and unsafe volume paths are rejected before upstream calls.
  • Non-loopback HTTP deployments must use bearer auth, OAuth, or a trusted authenticated gateway.
  • This bridge does not sandbox Arcane itself. Arcane remains responsible for Docker authorization and the effects of Docker operations.

Architecture

text
ArcaneClient  (src/arcane.rs)      HTTP transport and redacted errors      |ArcaneService (src/app.rs)         action validation, confirmation, response normalization      |MCP shim      (src/mcp/tools.rs)   JSON args -> service -> ValueCLI shim      (src/cli.rs)         argv -> service -> stdout

Distribution Contract

  • Cargo.toml, Cargo.lock, packages/arcane-rmcp/package.json, .release-please-manifest.json, and server.json must agree on the released version.
  • GitHub Releases publish the rarcane binary consumed by the npm launcher.
  • The npm package name is @dinglebear/rarcane; the installed binary alias is rarcane.
  • Docker/OCI metadata uses ghcr.io/dinglebear-ai/rarcane:<version>.
  • plugins/rarcane/.mcp.json must launch npx -y @dinglebear/rarcane mcp so stdio clients start the MCP transport rather than the HTTP server.
  • The root README is curated. Generated or source-of-truth details live in src/actions.rs, docs/MCP_SCHEMA.md, and the package/registry manifests.

Development

bash
cargo fmt --checkcargo testcargo clippy -- -D warningscargo build --releasenpm --prefix packages/arcane-rmcp run check

Verification

bash
just verify                 # fmt-check → lint → check → testjust template-check         # patterns, plugin layout, schema docs, scaffold contractnpm --prefix packages/arcane-rmcp run checkgit diff --check

Runtime smoke:

bash
RARCANE_API_URL=https://arcane.example.com \RARCANE_API_KEY=... \rarcane status

HTTP smoke:

bash
RARCANE_MCP_HOST=127.0.0.1 rarcane servecurl -sf http://127.0.0.1:40110/health

Deployment

Use loopback for local development:

bash
RARCANE_MCP_HOST=127.0.0.1 rarcane serve

Use Docker Compose for shared HTTP deployment:

bash
cp .env.example .envdocker compose up -d

When binding to a non-loopback address, configure RARCANE_MCP_TOKEN, RARCANE_MCP_AUTH_MODE=oauth, or RARCANE_NOAUTH=true behind an authenticated gateway.

Troubleshooting

SymptomCheck
RARCANE_API_URL is requiredSet RARCANE_API_URL in env or ~/.rarcane/.env.
Arcane calls return unauthorizedRefresh RARCANE_API_KEY in Arcane and restart the bridge.
HTTP /mcp returns unauthorizedSet RARCANE_MCP_TOKEN and send Authorization: Bearer <token>.
Stdio client hangs or logs JSON errorsEnsure client config runs arcane-rmcp mcp, not the default HTTP server mode.
Destructive action is rejectedAdd CLI --confirm or MCP params.confirm=true after verifying the target.
Port conflictSet RARCANE_MCP_PORT or stop the process already using 40110.

Related Servers

  • soma - RMCP runtime for provider-backed MCP servers.
  • unifi-rmcp - UniFi controller REST API bridge.
  • tailscale-rmcp - Tailscale API bridge for devices, users, and tailnet operations.
  • unraid - Unraid GraphQL bridge for NAS and server management.
  • apprise-rmcp - Apprise notification fan-out bridge for many delivery backends.
  • gotify-rmcp - Gotify push notification bridge for sends, messages, apps, and clients.
  • yarr - Media-stack bridge for Sonarr, Radarr, Prowlarr, Plex, and related services.
  • ytdl-rmcp - Media download and metadata workflow server.
  • synapse-rmcp - Local Synapse workflow server for scout and flux actions.
  • cortex - Syslog and homelab log aggregation MCP server.
  • axon - RAG, crawl, scrape, extract, and semantic search project.
  • labby - Homelab control plane and MCP gateway project.
  • lumen - Local semantic code search MCP server.

Documentation

  • docs/API.md is the curated action-contract overview.
  • docs/CONFIG.md is the curated configuration and auth reference.
  • docs/QUICKSTART.md is the curated smoke-test guide.
  • docs/MCP_SCHEMA.md is the generated/schema-drift contract for actions, resources, prompts, and validation rules.
  • plugins/rarcane/skills/rarcane/SKILL.md is the agent usage guide.

License

Original Dinglebear-authored portions of this project are licensed under AGPL-3.0-only. Separate commercial licensing is available for organizations that need terms outside the AGPL. Third-party material remains under its original license. See LICENSING.md.

來源:README.md,提交 7d16337

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.4.4最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Rmcp 整合