Jabali Panel
What it does
Manage domains, DNS, mail, databases and backups on a Jabali Panel hosting server.
- Connects 내 컴퓨터에서 실행
- Account or key Needs JABALI_API_TOKEN · 1 setting to fill in (JABALI_PANEL_URL)
- Category 개발자 도구
설치
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
검사 3/3 통과 · 내 컴퓨터에서 실행돼요
먼저: 어떤 AI를 쓰시나요?
쓰는 앱을 고르면 아래에 단계가 나옵니다.
Claude에 연결할 수 있지만 먼저 준비가 필요해요
키 필요 없음, 설치 필요 없음 · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
파일을 두 번 클릭한 뒤 컴퓨터용 Claude 앱에서 Install 누르기
해 보기
Jabali Panel을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude가 Jabali Panel을 쓰고 있다고 하거나 답에 Jabali Panel 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
ChatGPT는 아직 Jabali Panel에 연결할 수 없어요
Jabali Panel는 내 컴퓨터에 설치해서 쓰지만 ChatGPT는 웹에서 도는 서버만 연결할 수 있어요
대신 이렇게 할 수 있어요
A · Jabali Panel에 연결되는 앱 쓰기
- 키 필요 없음, 설치 필요 없음 · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
B · 개발자 도구에서 ChatGPT에 연결되는 다른 서버
같은 분류에서 많이 쓰는 것 중 키 없이 주소만으로 연결되는 것을 골랐어요
- Sentry✓ ChatGPT
- Compiler Explorer✓ ChatGPT
- GitDiagram✓ ChatGPT
Claude Code는 아직 Jabali Panel에 연결할 수 없어요
제작자가 컴퓨터용 Claude 앱 설치 파일만 제공해요
대신 이렇게 할 수 있어요
A · Jabali Panel에 연결되는 앱 쓰기
- 키 필요 없음, 설치 필요 없음 · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
Cursor는 아직 Jabali Panel에 연결할 수 없어요
제작자가 컴퓨터용 Claude 앱 설치 파일만 제공해요
대신 이렇게 할 수 있어요
A · Jabali Panel에 연결되는 앱 쓰기
- 키 필요 없음, 설치 필요 없음 · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
VS Code는 아직 Jabali Panel에 연결할 수 없어요
제작자가 컴퓨터용 Claude 앱 설치 파일만 제공해요
대신 이렇게 할 수 있어요
A · Jabali Panel에 연결되는 앱 쓰기
- 키 필요 없음, 설치 필요 없음 · 컴퓨터용 Claude 앱(Windows 또는 Mac)에서만 되고 웹이나 모바일은 안 돼요
개발자용: 터미널 명령과 JSON 설정
직접 입력할 값
JABALI_PANEL_URL필수 envPanel API URL, for example https://panel.example:8443/api/v1JABALI_API_TOKEN비밀 필수 envA jat_ API token from the panel. Use a non-admin token.
설명은 아직 영어 원문입니다.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
한눈에 보기
- 주간 다운로드i
- npm/PyPI에 없음
- 연결 방식
- 내 컴퓨터에서 실행
- 최신 버전i
- 0.6.1
- 레지스트리 공개i
- 2026년 11월 1일
- 코드 마지막 변경i
- 2026년 11월 1일
- 제작자
- shukiv
- 패키지
mcpb: …/jabali-mcp-0.6.1.mcpb- 웹사이트
- jabali-panel.com
- 레지스트리 상태
- 활성
어떤 앱에서 쓸 수 있나요
이 서버의 연결 방식과 각 앱의 공식 문서를 바탕으로 했어요. 2026년 11월 10일 확인.
내 컴퓨터에서 실행하는 앱
ClaudeGooseLM StudioMsty StudioCherry StudioVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
할 수 있는 일
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
기본 점검i
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 14일 점검
- ✓ 통과
제작자와 저장소 일치
레지스트리 이름이 GitHub 계정 shukiv 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
- ✓ 통과
계속 관리되고 있음
코드 마지막 변경: 13일 전
- ✓ 통과
라이선스 있음
AGPL-3.0 사용
- – 해당 없음
엔드포인트 응답
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
- – 해당 없음
OAuth로 로그인
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
- … 아직 점검 안 함
도구 설명에 숨겨진 지시 없음
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
토론
질문하고, 팁을 나누고, 안 되는 점을 알려 주세요. "도움이 됨"이 많은 순서예요.
사용자 리뷰
아직 리뷰가 없어요
개발자 도구 카테고리의 다른 서버와 비교i
- 이 카테고리의 다른 서버 5876개 중 77%보다 스타가 많아요
- 이 카테고리의 다른 서버 5876개 중 65%보다 최근에 레지스트리에 공개됐어요
- 기본 점검 결과가 이 카테고리의 다른 서버 5876개 중 100%와 같거나 더 좋아요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
자주 묻는 질문
Jabali Panel, 안전한가요?
해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
어떤 키나 코드가 필요한가요?
입력해야 할 값: JABALI_API_TOKEN
내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
아직 관리되고 있나요?
GitHub 저장소는 마지막으로 13일 전 변경됐고, 최신 버전(0.6.1)은 13일 전 레지스트리에 올라왔어요.
어떤 앱에서 쓸 수 있나요?
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 MCPB도 있어야 해요.
같은 카테고리의 다른 것
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Serena MCP: the IDE for your agent
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
제작자의 README
README 열기
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
jabali-mcp
A [Model Context Protocol](https://modelcontextprotocol.io) server for [Jabali Panel](https://github.com/shukiv/jabali-panel).
Install | Set up | Tools | Safety | Generation
Lets an AI assistant drive panel operations — domains, DNS, mail, applications, databases, backups — through natural language. It's a thin, generated wrapper over the panel's existing REST API: it reimplements no auth, validation, or scoping, it rides them.
Status: working MVP. Read tools + gated write/destructive tools + a fleet
registry, generated from the panel's OpenAPI spec (a golden test fails if the
checked-in code drifts from the spec).
Install
Prerequisites: Go 1.25+ and a reachable Jabali Panel with an API token (see Set up). The server speaks MCP over stdio — an MCP client (Claude Code, Claude Desktop, …) launches it; you don't run it as a daemon.
Prebuilt binaries
Grab the binary for your platform from the latest release (linux/darwin × amd64/arm64, with SHA256SUMS), then:
chmod +x jabali-mcp_*_linux_amd64
sudo install -m 0755 jabali-mcp_*_linux_amd64 /usr/local/bin/jabali-mcp
With go install
go install github.com/shukiv/jabali-mcp/cmd/jabali-mcp@latest
The binary lands in $(go env GOBIN) (or $(go env GOPATH)/bin).
From source
git clone https://github.com/shukiv/jabali-mcp.git
cd jabali-mcp make build # -> ./jabali-mcp (stamps the version from git describe)
Update
jabali-mcp update --check # report the latest release, install nothing
jabali-mcp update # re-installs the latest (go install …@latest) jabali-mcp update --ref v1.2.3 # pin a tag/commit jabali-mcp update --dry-run # print the command only
Self-update runs go install, so it needs Go on the PATH. Restart your MCP client afterward to pick up the new binary. (Installed from a checkout instead? git pull && make build. Installed a prebuilt binary? Download the new release.)
Verify
JABALI_PANEL_URL=https://panel.example:8443/api/v1 \
JABALI_API_TOKEN=jat_… \ jabali-mcp < /dev/null
-> jabali-mcp — read-only; panels: [default]
It reads config from the environment, prints a one-line status to stderr, then serves MCP on stdin/stdout (it exits on EOF, which is why the < /dev/null smoke test returns immediately).
Set up
Quickest: the guided walkthrough
jabali-mcp init
It prompts for each panel (name, URL, token), verifies the token against the panel, and writes a 0600 panels.json to your config dir (~/.config/jabali-mcp/panels.json). Add as many panels as you like — one for a single instance, several for a fleet. Because that path is the default, the server finds it with no env vars, so registering with a client is just:
claude mcp add jabali -- jabali-mcp # no --env needed after init
Re-run init any time to reconfigure. The manual steps below are the same thing by hand.
Manual
1. Mint an API token. In the panel, go to the tenant shell → API Tokens and create one. The plaintext jat_… is shown once — copy it. Use a non-admin (tenant) token so the server is confined to that one account.
2. Point the server at your panel with these environment variables:
| Variable | Required | Meaning |
|---|---|---|
JABALI_PANEL_URL | ✓ | e.g. https://panel.example:8443/api/v1 |
JABALI_API_TOKEN | ✓ | the jat_… bearer token |
JABALI_PANEL_NAME | logical name (default default) | |
JABALI_CA_FILE | PEM bundle to trust a self-hosted panel CA | |
JABALI_MCP_ALLOW_WRITE | 1 to enable mutating tools (default: read-only) | |
JABALI_MCP_DRY_RUN | 1 to force every write to preview instead of act | |
JABALI_MCP_ADMIN | 1 to also expose the /admin/* tools (needs an admin token) | |
JABALI_PANELS_FILE | JSON array of panels for fleet mode (overrides the single-panel vars) |
3. Register it with your MCP client. In every example below jabali-mcp is assumed on your PATH (else use its full path), and the two required env vars are shown inline. It's a stdio MCP server, so any MCP-capable client can launch it.
Claude Code (CLI — writes .mcp.json / your Claude config):
claude mcp add jabali \
--env JABALI_PANEL_URL=https://panel.example:8443/api/v1 \ --env JABALI_API_TOKEN=jat_… \ -- jabali-mcp
Claude Desktop — claude_desktop_config.json:
{
"mcpServers": { "jabali": { "command": "jabali-mcp", "env": { "JABALI_PANEL_URL": "https://panel.example:8443/api/v1", "JABALI_API_TOKEN": "jat_…" } } } }
OpenAI Codex (CLI — writes ~/.codex/config.toml):
codex mcp add jabali \
--env JABALI_PANEL_URL=https://panel.example:8443/api/v1 \ --env JABALI_API_TOKEN=jat_… \ -- jabali-mcp
or edit ~/.codex/config.toml by hand — note it's TOML, and the key is mcp_servers (underscore), not the JSON mcpServers:
[mcp_servers.jabali]
command = "jabali-mcp"
[mcp_servers.jabali.env] JABALI_PANEL_URL = "https://panel.example:8443/api/v1" JABALI_API_TOKEN = "jat_…"
OpenCode — opencode.json:
{
"$schema": "https://opencode.ai/config.json", "mcp": { "jabali": { "type": "local", "command": ["jabali-mcp"], "environment": { "JABALI_PANEL_URL": "https://panel.example:8443/api/v1", "JABALI_API_TOKEN": "jat_…" }, "enabled": true } } }
Kimi Code CLI (writes ~/.kimi/mcp.json):
kimi mcp add --transport stdio jabali \
-e JABALI_PANEL_URL=https://panel.example:8443/api/v1 \ -e JABALI_API_TOKEN=jat_… \ -- jabali-mcp
Cursor, Windsurf, Cline, Gemini CLI, and other clients that use the standard mcpServers JSON take the same entry as Claude Desktop above — a { "command": "jabali-mcp", "env": { … } } block under mcpServers in that client's config file.
Start read-only. When you want mutations, add JABALI_MCP_ALLOW_WRITE=1 to the env (and, at first, JABALI_MCP_DRY_RUN=1 to watch what it would do).
Run it on a remote box over SSH
Because it speaks stdio, any of the above can launch it on a remote host over SSH instead of locally — the tool stream tunnels through the SSH pipe. Set the client's command to ssh and pass the remote invocation as its argument, e.g. for Claude Desktop:
{
"mcpServers": { "jabali-prod": { "command": "ssh", "args": ["operator@box", "JABALI_PANEL_URL=https://localhost:8443/api/v1 JABALI_API_TOKEN=jat_… jabali-mcp"] } } }
On the box the panel API is reachable at localhost, and the token still scopes everything to its user. Nothing to install client-side beyond an SSH key.
Fleet (multiple panels)
The easiest path is jabali-mcp init — add several panels when it asks "Add another panel?". It writes them to the default panels.json, which the server loads automatically.
Equivalently, point JABALI_PANELS_FILE at a JSON array (this overrides the single-panel vars), or write that array yourself:
[
{ "name": "prod-a", "url": "https://a:8443/api/v1", "token": "jat_…" }, { "name": "prod-b", "url": "https://b:8443/api/v1", "token": "jat_…" } ]
Config resolution order: JABALI_PANELS_FILE → single-panel env (JABALI_PANEL_URL + JABALI_API_TOKEN) → the default panels.json. In a fleet, every tool takes an optional panel argument to pick one; omit it for the first (default) panel.
Admin tools (same binary, separate opt-in)
The admin operator surface (list/create users, read/update server settings, run panel updates and read their status) lives in the same binary but a separate registration group, exposed only with JABALI_MCP_ADMIN=1. It fronts whole-box operations — a far larger blast radius than the tenant tools — so it is deliberately opt-in and requires an admin token (the panel's RequireAdmin rejects a non-admin token with 403 regardless of the flag). Admin write tools still need ALLOW_WRITE, and admin_run_updates is confirm-gated. admin_renew_ssl and admin_retry_ssl also live here: their paths look tenant-scoped, but the panel registers them behind RequireAdmin. Give the admin server its own admin token; use tenant tokens for everything else.
Auth model — inherits the panel's tenant isolation
Tools authenticate with the per-user Bearer token. The token acts as its owning user and the panel enforces ownership on every endpoint, so the server can only ever reach the resources that token's user owns — a tenant token is confined to that tenant. That is why a non-admin token is the safe default.
Safety
This fronts a hosting control plane, so mutation is fenced in four layers:
- Read-only by default. Write tools register only with
JABALI_MCP_ALLOW_WRITE=1. - Destructive tools require `confirm: true`. Every
delete_*/revoke_*/rotate_*_passwordtool (plusrestore_backup,disable_ssl) returns a preview and acts only when re-called withconfirm: true. A model cannot destroy state in one step — the guard against a prompt-injected tool call. - Tool hints. Read tools carry
readOnlyHint; destructive tools carrydestructiveHintso clients can surface the risk. - Dry-run. Any write tool accepts
dry_run: trueto return the exact request it *would* send without acting;JABALI_MCP_DRY_RUN=1forces that globally.
TLS verification is always on. To trust a self-hosted panel's private CA, point JABALI_CA_FILE at its bundle — that *adds* the CA, it never disables verification.
Tools
Full per-tool reference with arguments and constraints: [docs/TOOLS.md](docs/TOOLS.md) (generated — make docs).
Read (always on): list_domains, get_domain, list_dns_records, list_mailboxes, list_forwarders, list_applications, list_databases, list_backups, list_api_tokens, list_mail_logs, tail_web_log, get_ssl_status, get_domain_whois, get_domain_bandwidth, whoami, get_disk_usage, list_activity, list_cron_jobs, get_cron_job, get_cron_log, list_app_catalog, get_application, get_database, list_database_users, get_mailbox, get_autoresponder, get_backup_manifest, list_ssh_keys, get_php_settings, list_php_versions, list_files, preview_file — plus the composite diagnose_domain (config + SSL + DNS + recent errors + bandwidth in one answer; a failed probe is reported without failing the rest) and report_issue (draft a bug report / feature request for the jabali-panel or jabali-mcp GitHub repo as a prefilled link; in write mode it can also file it directly via gh, gated by confirm: true) and search_docs (look up the official panel documentation from jabali-panel.com mid-task — anonymous, origin-restricted fetches; override the source with JABALI_DOCS_URL).
preview_filereads file contents (up to 1 MiB) into the conversation — that
can include secrets such as
wp-config.php.create_database_userand the
rotate_*_passwordtools return the plaintext secret once, by panel design.
Write (needs `JABALI_MCP_ALLOW_WRITE=1`): create_domain, update_domain, create_dns_record, update_dns_record, create_mailbox, create_forwarder, create_backup, install_application, `create_dat