
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
marzban-mcp
Advanced tools
An MCP server that lets AI agents manage a Marzban panel — built on marzban-sdk.
Users, subscriptions, nodes, and the core config — through Claude, Cursor, or any MCP-compatible client.
Point an AI agent at your panel and it can actually run it — not just read about it. No custom integration code, just an entry in your MCP config.
npm install -g marzban-mcp
You don't usually need to install it yourself — your MCP client runs it via npx (see below). Prefer a container? A multi-arch image is published at ilmar7786/marzban-mcp:
docker pull ilmar7786/marzban-mcp
Add it to your client's MCP config with your panel's URL and an admin login. Every client reads roughly the same shape:
{
"mcpServers": {
"marzban": {
"command": "npx",
"args": ["-y", "marzban-mcp"],
"env": {
"MARZBAN_BASE_URL": "https://panel.example.com",
"MARZBAN_USERNAME": "admin",
"MARZBAN_PASSWORD": "secret"
}
}
}
}
Claude Desktop, Claude Code, Cursor and other MCP clients all read the same
mcpServers block — just from a different config file. Restart the client
and the tools below become available.
tools/list at all, not just hidden behind a hint.proxies, subscription_url and links stay hidden unless you explicitly opt in.marzban-sdk — the same auth, retry and reconnect behavior as the SDK itself, just exposed as MCP tools.| Variable | Required | Description |
|---|---|---|
MARZBAN_BASE_URL | Yes | Your panel's URL, e.g. https://panel.example.com |
MARZBAN_USERNAME | Yes | Admin username |
MARZBAN_PASSWORD | Yes | Admin password — also used to silently re-authenticate on expiry |
Everything else — profile, output format, verbosity, tool allow/deny filters, log level, link masking — is optional and documented in Configuration.
21 tools, namespaced marzban_<area>_<action>: Users (11) · Config (5)
· System & nodes (3) · Subscription (2). Three prompts —
expiring_users_audit, node_diagnostics, traffic_report — chain those
tools into ready-made investigations. Full list at
Tools &
Prompts.
A profile isn't a hint — a tool outside it never appears in tools/list, so a
model can't call what it can't see. readonly exposes only lists and
lookups; standard (default) adds full user CRUD, renewals and status
changes; full adds destructive tools — delete, reset traffic, rewrite
config, restart the core.
Destructive tools also gate on confirmation: the first call never runs
anything — it describes exactly what would happen and returns a one-time
token. Only a second call, with that token attached, executes. MARZBAN_MCP_CONFIRM
controls how often this is required: auto (default, once per tool and
exact arguments, for 5 minutes — a different target or a wider call always
needs its own confirmation), always (every call), or off (unattended
environments only — no safety net once set).
Confirmation decides whether a call may run; it doesn't decide whether it has already run. So each destructive call is also remembered for 5 minutes: an identical repeat — the kind a client sends after a timeout — returns the recorded result of the first one, with a note saying so, and never reaches the panel. When a request went out and no answer came back, the outcome is reported as unknown, with instructions to check the state with a read-only tool rather than retry. A fresh confirmation still runs the operation for real, and restarting the server clears the memory.
Full setup guides and the complete tool/prompt reference live at ilmar7786.github.io/marzban-sdk:
This package lives in the marzban-sdk
monorepo — see the root CONTRIBUTING.md
for how to submit a patch. Running the server locally in watch mode, poking
it with the MCP Inspector, or wiring a client to your own build? See
ARCHITECTURE.md § Local development & manual testing.
Found a bug or have an idea?
Open an issue.
marzban-mcp saves you time, consider giving it a ⭐ on GitHub.
FAQs
MCP server for the Marzban API, built on marzban-sdk.
The npm package marzban-mcp receives a total of 65 weekly downloads. As such, marzban-mcp popularity was classified as not popular.
We found that marzban-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.