bunkerweb-mcp
Official MCP for BunkerWeb
Install / Use
claude mcp add bunkerity -- npx -y github:bunkerity/bunkerweb-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
SecuritySupported Platforms
Our assessment of bunkerweb-mcp
bunkerweb-mcp scores 71/100 on our quality scale, 1049th of 1,109 Security skills we index.
Its MCP Server is 18 KB long, well organised into 14 sections with 3 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated yesterday, so bunkerweb-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
bunkerweb-mcp compared with similar skills
All 4 of these similar skills score higher than bunkerweb-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| bunkerweb-mcp (this skill)by bunkerity | 71 | 10 | 1d ago | MCP Server |
| headroomby headroomlabs-ai | 100 | 78.0k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 104.6k | 2d ago | MCP Server |
| Scraplingby D4Vinci | 100 | 90.0k | today | MCP Server |
| crawl4aiby unclecode | 100 | 86.4k | 1d ago | MCP Server |
Frequently asked questions
- How do I install bunkerweb-mcp?
- Run
claude mcp add bunkerity -- npx -y github:bunkerity/bunkerweb-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does bunkerweb-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is bunkerweb-mcp safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is bunkerweb-mcp still maintained?
- The repository was last updated yesterday, so bunkerweb-mcp is actively maintained.
Skill content
View source on GitHubManage services, instances, bans, configuration snippets, plugins, and scheduler jobs. Connect through streamable HTTP or a local stdio subprocess. Legacy JSON-RPC HTTP and WebSocket endpoints remain available for existing integrations.
You need a reachable BunkerWeb API and its credentials when authentication is enabled. See the BunkerWeb documentation for API setup.
Quick start
Connect to an existing BunkerWeb API
- Clone this repository and open its directory.
- Copy .env.example to
.env. SetBUNKERWEB_BASE_URLto an API address reachable from the container, and supply its bearer token or Basic credentials. A container'slocalhostrefers to itself. - Set
MCP_ALLOWED_HOSTS=localhost,localhost:8080,127.0.0.1,127.0.0.1:8080for local HTTP clients. KeepSEARCH_MODE=disabledunless you have a search service. - Run
docker compose -f docker-compose-mcp-only.yml up --build -d. - Check liveness with
curl http://127.0.0.1:8080/health; expect"status":"healthy". - Connect your client to
http://127.0.0.1:8080/mcp/.
The MCP-only Compose file loads .env, builds the
server, and publishes port 8080. For the published image instead, run
docker run --rm -p 127.0.0.1:8080:8080 --env-file .env bunkerity/bunkerweb-mcp:latest.
Use a release tag for a fixed version; the release workflow
builds images for AMD64 and ARM64.
Try the bundled demo stack
Run docker compose up --build -d from the repository directory. The default
docker-compose.yml starts BunkerWeb 1.6.13, its scheduler and
API, MariaDB, Redis, and this server. It publishes BunkerWeb on ports 80/443 and
MCP on 8080. The included .mcp.json points Claude Code at this server.
The demo publishes /mcp/ on port 8080 on all interfaces without a client token check.
This file sets the API URL and demo credentials in its service definitions;
editing .env does not replace those values. It also disables search and MCP DNS
rebinding protection. Use it on a trusted development machine; review credentials,
port exposure, and host validation before exposing it to a network.
Connect an MCP client
Streamable HTTP
Use /mcp/, including the trailing slash. The repository's Claude Code config uses:
{
"mcpServers": {
"bunkerweb": {
"type": "http",
"url": "http://127.0.0.1:8080/mcp/"
}
}
}
For a remote server, change the URL to your HTTPS endpoint. When runtime log
access is enabled, add "headers": {"x-mcp-token": "<shared-secret>"} inside the
server entry. Read the authentication limits in Security before exposing HTTP.
Stdio: Claude Code or Claude Desktop
From the repository directory, install with Python 3.11 or newer using the hash-pinned build and runtime dependencies:
python3 -m venv .venv
.venv/bin/pip install --require-hashes --no-deps -r requirements-build.txt -r requirements.txt
.venv/bin/pip install --no-deps --no-build-isolation .
This creates .venv/bin/bunkerweb-mcp in your checkout. Use its absolute path in
the client JSON below, replacing /absolute/path/to with your repository directory.
It runs a stdio subprocess without an HTTP listener.
For Claude Code, replace the HTTP entry in .mcp.json with this configuration.
For Claude Desktop, put it in claude_desktop_config.json:
{
"mcpServers": {
"bunkerweb": {
"command": "/absolute/path/to/.venv/bin/bunkerweb-mcp",
"env": {
"BUNKERWEB_BASE_URL": "http://api.example.com:8888",
"BUNKERWEB_API_TOKEN": "<api-token>",
"SEARCH_MODE": "disabled"
}
}
}
}
Replace the executable path and API address with your own. Keep real credentials out of version control. Stdio uses your local process permissions and API credentials.
Configuration
config.py reads environment variables and .env.
Defaults below come from that settings model; Compose service values and container
environment variables can override them. unset denotes an absent value or an empty string.
| Environment variable | Default | Meaning |
| --- | --- | --- |
| BUNKERWEB_BASE_URL | http://localhost:8888 | Base URL for the BunkerWeb control-plane API. |
| BUNKERWEB_API_TOKEN | unset | Static API token used for Authorization bearer header (masked in logs). |
| BUNKERWEB_BASIC_USERNAME | unset | Username for HTTP Basic authentication. |
| BUNKERWEB_BASIC_PASSWORD | unset | Password for HTTP Basic authentication (masked in logs). |
| BUNKERWEB_REQUEST_TIMEOUT_SECONDS | 30.0 | HTTP request timeout in seconds. |
| BUNKERWEB_MAX_RETRIES | 3 | Maximum number of retries for transient HTTP errors. |
| BUNKERWEB_RETRY_BACKOFF_INITIAL | 0.5 | Initial backoff delay in seconds. |
| BUNKERWEB_RETRY_BACKOFF_MAX | 5.0 | Maximum backoff delay in seconds. |
| BUNKERWEB_WEBSOCKET_TOKEN | unset | Shared secret for legacy RPC/WebSocket access; also required on MCP HTTP when runtime logs are enabled. See Security. |
| BUNKERWEB_LOG_LEVEL | INFO | Application log level. |
| BUNKERWEB_LOGS_PATH | unset | Runtime log directory; unset disables log tools. Mount read-only. |
| BUNKERWEB_PROMPT_CATALOG | unset | Custom tool-prompt JSON path; unset uses the bundled catalog. |
| BUNKERWEB_REDACT_SECRETS | false | Mask the values of settings whose names match a sensitive pattern in tool and resource outputs, withhold upstream error details and refuse writes to sensitive settings. See Security. |
| BUNKERWEB_REDACT_PATTERN | unset | Regular expression that replaces the built-in sensitive setting name pattern; unset keeps the built-in one. Avoid nested quantifiers such as (a+)+$. |
| SEARCH_MODE | remote | remote enables documentation search; disabled omits the tool. Compose and .env.example use disabled. |
| SEARCH_API_URL | http://localhost:8000 | URL of the remote search service API. |
| SEARCH_TIMEOUT | 10.0 | Search API request timeout in seconds. |
| MCP_ENABLE_DNS_REBINDING_PROTECTION | true | Enable DNS rebinding protection for MCP endpoints (recommended for production). |
| MCP_ALLOWED_HOSTS | localhost,127.0.0.1 | Comma-separated MCP Host allowlist. Include the port variants clients send. |
| MCP_ALLOWED_ORIGINS | unset | Comma-separated MCP Origin allowlist for browser clients. |
| MCP_ENABLE_SKILLS | true | Serve bundled Agent Skills as skill://bunkerweb/ resources. Set false to omit them. |
| MCP_READ_ONLY | false | Register only read-only tools; write tools are not available on any transport. |
| RATE_LIMIT_ENABLED | false | Enable rate limiting on endpoints. |
| RATE_LIMIT_TOOLS | 30/minute | Requests to /tools per client IP, when rate limiting is enabled. |
| RATE_LIMIT_RPC | 100/minute | Requests to /rpc per client IP, when rate limiting is enabled. |
| RATE_LIMIT_WS | 500/minute | Messages per WebSocket connection, when rate limiting is enabled. |
| CACHE_ENABLED | true | Cache selected read operations in process memory. |
WORKERS is a Docker entrypoint setting, default 1, rather than a Pydantic
setting. Caches and rate-limit state live in each worker process.
Search needs a separate service: set SEARCH_MODE=remote and SEARCH_API_URL
to its URL. This repository does not bundle that service. Without it, disable search;
otherwise the server registers search_bunkerweb_docs and readiness checks the service.
Tools and resources
Read GET /tools for the running server's tool names, descriptions, and input
schemas. The registry defines 44 API tools:
| Group | Tools |
| --- | --- |
| Authentication and probes | authenticate, ping, health, diagnose |
| Instances | list_instances, instance_get, instance_create, instance_update, instance_delete, instances_delete_bulk, instance_ping, instances_ping_all, instance_stop, instances_stop_all, reload_instance, reload_instances |
| Bans | list_bans, ban_ip, unban_ip |
| Services | list_services, get_service, create_service, update_service, delete_service, convert_service |
| Global configuration | global_config_read, global_config_update |
| Custom configuration | configs_list, config_get, config_create, config_update, config_delete, configs_delete_bulk, configs_upload, config_upload_update |
| Plugins | plugins_list, plugins_upload, plugin_delete |
| Job cache files | cache_list, cache_fetch_file, cache_delete_file, cache_delete_bulk |
| Scheduler jobs | jobs_list, jobs_run |
Optional tools:
logs_list,logs_read: register whenBUNKERWEB_LOGS_PATHpoints to a runtime log directory. Mount it read-only; HTTP mode also requires the shared secret. Reads scan up to 1 MiB and return at most 500 lines or 64 KiB of content, with cursors for older history. Compressed.gzrotations are excluded. Treat log content as untrusted data.search_bunkerweb_docs: registers in remote search mode.
Use diagnose to check the connected API's host, reachability, authentication, version,
MULTISITE, and instance counts. Pass service to inspect its existence, draft state,
and setting-owner counts. An unknown version appears as
unknown (strictest rules applied).
update_service checks setting names and ownership before sending changes. It refuses
the request if validation reads fail or MULTISITE is not yes. It skips invalid or
externally owned keys and unsupported renames; if nothing remains, it sends no write.
After an accepted write, it reads the service back without the result cache. The result
adds summary as its first field and a receipt with db (verified, partial, or
unverified), plus issues and hints when needed. These report names and reasons,
without setting values. For example, a complete match reads
DB VERIFIED (2/2 MATCH). LIVE UNVERIFIED. A failed read-back reads
WRITE ACCEPTED. DB UNVERIFIED. LIVE UNVERIFIED. Only a read-back that confirms a
draft adds DRAFT: NOT PUBLISHED. A failed read-back omits the draft marker.
The summary always ends LIVE UNVERIFIED. BunkerWeb 1.6
Truncated for display — read the full file on GitHub.
Related Skills
headroom
78.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Agent-Reach
104.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
90.0k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
86.4kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key. Join our Discord https://discord.gg/VuxzM8mtf
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
