MCP-Server

bunny-net

io.usefulapi/bunny-net
Cloud & Infrastruktur Medien & Inhalte Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Manages bunny.net CDN pull zones, DNS, edge storage and video libraries, including cache purging, access controls and usage inspection.

bunny_add_blocked_ip
Block an IP on a pull zone
WRITE. Block an IP address from a pull zone (undo with bunny_remove_blocked_ip). bunny.net: POST /pullzone/{id}/addBlockedIp.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pull_zone_id', 'ip'], 'properties': {'ip': {'type': 'string', 'pattern': '^[0-9A-Fa-f:.*\\/]{2,64}$', 'description': 'The IP address, e.g. 203.0.113.7.'}, 'pull_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The Pull Zone ID.', 'exclusiveMinimum': 0}}}
bunny_add_dns_record
Add a DNS record
WRITE. Add a record to a DNS zone. Takes effect on live DNS. bunny.net: PUT /dnszone/{zoneId}/records.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['zone_id', 'type', 'name', 'value'], 'properties': {'tag': {'type': 'string', 'maxLength': 255, 'description': "Tag (CAA), e.g. 'issue'."}, 'ttl': {'type': 'integer', 'maximum': 2147483647, 'minimum': 0, 'description': 'TTL in seconds.'}, 'name': {'type': 'string', 'maxLength': 255, 'description': "Record name relative to the zone; empty string for the apex, e.g. 'www'."}, 'port': {'type': 'integer', 'maximum': 65535, 'minimum': 0, 'description': 'Port (SRV).'}, 'type': {'enum': ['A', 'AAAA', 'CNAME', 'TXT', 'MX', 'Redirect', 'Flatten', 'PullZone', 'SRV', 'CAA', 'PTR', 'Script', 'NS', 'SVCB', 'HTTPS', 'TLSA'], 'type': 'string', 'description': 'Record type.'}, 'flags': {'type': 'integer', 'maximum': 255, 'minimum': 0, 'description': 'Flags (CAA).'}, 'value': {'type': 'string', 'maxLength': 4096, 'description': 'Record value, e.g. an IP for A, a hostname for CNAME, text for TXT.'}, 'weight': {'type': 'integer', 'maximum': 65535, 'minimum': 0, 'description': 'Weight (SRV, weighted records).'}, 'comment': {'type': 'string', 'maxLength': 1024, 'description': 'Free-text note on the record.'}, 'zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The DNS Zone ID.', 'exclusiveMinimum': 0}, 'disabled': {'type': 'boolean', 'description': 'Keep the record but stop serving it.'}, 'priority': {'type': 'integer', 'maximum': 65535, 'minimum': 0, 'description': 'Priority (MX, SRV).'}, 'accelerated': {'type': 'boolean', 'description': 'Route the record through the CDN (CDN acceleration).'}, 'pull_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Pull Zone ID, for type PullZone.', 'exclusiveMinimum': 0}}}
bunny_export_dns_zone
Export a DNS zone
Export one DNS zone as a BIND zone file (plain text) — handy for review, diffing or backup before a change. bunny.net: GET /dnszone/{id}/export.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['zone_id'], 'properties': {'zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The DNS Zone ID.', 'exclusiveMinimum': 0}}}
bunny_get_audit_log
Get the audit log
Who changed what on one day: the account audit log (timestamp, product, resource, action, actor and a diff). Paginate with continuation_token. bunny.net: GET /user/audit/{date}.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'The day to read, YYYY-MM-DD.'}, 'limit': {'type': 'integer', 'maximum': 10000, 'minimum': 1, 'description': 'Max entries, 1-10000. Default 100.'}, 'order': {'enum': ['Ascending', 'Descending'], 'type': 'string', 'description': 'Sort by time.'}, 'product': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only these products.'}, 'actor_id': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only changes by these actors.'}, 'resource_id': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only these resource IDs.'}, 'resource_type': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only these resource types.'}, 'continuation_token': {'type': 'string', 'description': 'ContinuationToken from the previous page.'}}}
bunny_get_billing
Get billing details
The account balance, this month's charges broken down by product (traffic per continent, storage, DNS, Stream, scripting, Shield, ...) and recent billing records. Payment-method tokens are redacted. bunny.net: GET /billing.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
bunny_get_dns_zone
Get a DNS zone
Fetch one DNS zone with its settings and records. bunny.net: GET /dnszone/{id}.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['zone_id'], 'properties': {'zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The DNS Zone ID.', 'exclusiveMinimum': 0}}}
bunny_get_pull_zone
Get a pull zone
Fetch one pull zone with all its settings: origin, hostnames, caching, security, edge rules (with their GUIDs, needed by bunny_set_edge_rule_enabled), blocked IPs, limits and usage. Secrets (token-auth key, AWS signing secret, certificate private keys) are redacted. bunny.net: GET /pullzone/{id}.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pull_zone_id'], 'properties': {'pull_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The Pull Zone ID.', 'exclusiveMinimum': 0}, 'include_certificate': {'type': 'boolean', 'description': "Include each hostname's public SSL certificate (private keys are always redacted)."}}}
bunny_get_statistics
Get CDN statistics
CDN traffic statistics for the account or one pull zone: total bandwidth, origin traffic, requests served, cache hit rate and average origin response time, plus optional charts (bandwidth, requests, origin traffic, response times, 3xx/4xx/5xx errors, geographic distribution). bunny.net: GET /statistics.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'hourly': {'type': 'boolean', 'description': 'Hourly instead of daily grouping.'}, 'date_to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}(T[\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$', 'description': 'End of the range, YYYY-MM-DD or ISO 8601. Omit both dates for the last 30 days.'}, 'date_from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}(T[\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$', 'description': 'Start of the range, YYYY-MM-DD or ISO 8601. Omit both dates for the last 30 days.'}, 'region_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Only this edge region (see bunny_list_regions).', 'exclusiveMinimum': 0}, 'load_errors': {'type': 'boolean', 'description': 'Include the 3xx/4xx/5xx response charts.'}, 'pull_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Only this pull zone. Omit for the whole account.', 'exclusiveMinimum': 0}, 'load_bandwidth_used': {'type': 'boolean', 'description': 'Include the bandwidth charts.'}, 'load_origin_traffic': {'type': 'boolean', 'description': 'Include the origin traffic chart.'}, 'load_requests_served': {'type': 'boolean', 'description': 'Include the requests-served chart.'}, 'load_origin_response_times': {'type': 'boolean', 'description': 'Include the origin response time chart.'}, 'load_geographic_traffic_distribution': {'type': 'boolean', 'description': 'Include traffic by country.'}}}
bunny_get_storage_zone
Get a storage zone
Fetch one edge storage zone: hostname, region, replication, storage used, files stored, 404 handling and connected pull zones. Storage passwords are redacted. bunny.net: GET /storagezone/{id}.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['storage_zone_id'], 'properties': {'storage_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The Storage Zone ID.', 'exclusiveMinimum': 0}}}
bunny_get_storage_zone_statistics
Get storage zone statistics
Daily charts of storage used and file count for one storage zone. bunny.net: GET /storagezone/{id}/statistics.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['storage_zone_id'], 'properties': {'date_to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}(T[\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$', 'description': 'End of the range, YYYY-MM-DD or ISO 8601. Omit both dates for the last 30 days.'}, 'date_from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}(T[\\d:.]+(Z|[+-]\\d{2}:?\\d{2})?)?$', 'description': 'Start of the range, YYYY-MM-DD or ISO 8601. Omit both dates for the last 30 days.'}, 'storage_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The Storage Zone ID.', 'exclusiveMinimum': 0}}}
bunny_get_video_library
Get a video library
Fetch one Stream video library with its full configuration (resolutions, DRM, referrer rules, transcribing, watermark). Library API keys are redacted. bunny.net: GET /videolibrary/{id}.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['library_id'], 'properties': {'library_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The Video Library ID.', 'exclusiveMinimum': 0}}}
bunny_list_dns_records
List DNS records
List the records in one DNS zone, optionally filtered by type or search term. Record Type comes back as bunny.net's integer code (0=A, 1=AAAA, 2=CNAME, 3=TXT, 4=MX, 5=Redirect, 6=Flatten, 7=PullZone, 8=SRV, 9=CAA, 10=PTR, 11=Script, 12=NS, 13=SVCB, 14=HTTPS, 15=TLSA). bunny.net: GET /dnszone/{zoneId}/records.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['zone_id'], 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, 1-based. Default 1.'}, 'type': {'enum': ['A', 'AAAA', 'CNAME', 'TXT', 'MX', 'Redirect', 'Flatten', 'PullZone', 'SRV', 'CAA', 'PTR', 'Script', 'NS', 'SVCB', 'HTTPS', 'TLSA'], 'type': 'string', 'description': 'Only records of this type.'}, 'search': {'type': 'string', 'description': 'Filter results by this search term.'}, 'zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The DNS Zone ID.', 'exclusiveMinimum': 0}, 'per_page': {'type': 'integer', 'maximum': 1000, 'minimum': 5, 'description': 'Items per page, 5-1000. Default 1000.'}}}
bunny_list_dns_zones
List DNS zones
List the DNS zones hosted on bunny.net, with nameserver detection, DNSSEC and logging status. bunny.net: GET /dnszone.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, 1-based. Default 1.'}, 'search': {'type': 'string', 'description': 'Filter results by this search term.'}, 'per_page': {'type': 'integer', 'maximum': 1000, 'minimum': 5, 'description': 'Items per page, 5-1000. Default 1000.'}}}
bunny_list_pull_zones
List pull zones
List the CDN pull zones on the account. By default returns a compact view per zone (id, name, origin URL, enabled/suspended, hostnames, linked storage zone, bandwidth and charges this month); set full=true for every setting. bunny.net: GET /pullzone.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'full': {'type': 'boolean', 'description': 'Return every pull zone setting instead of the compact view.'}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, 1-based. Default 1.'}, 'search': {'type': 'string', 'description': 'Filter results by this search term.'}, 'per_page': {'type': 'integer', 'maximum': 1000, 'minimum': 5, 'description': 'Items per page, 5-1000. Default 1000.'}}}
bunny_list_regions
List edge regions
List bunny.net's edge regions with their IDs, codes, location and per-GB traffic price. A cheap way to confirm the API key works. bunny.net: GET /region.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
bunny_list_storage_zones
List storage zones
List the edge storage zones on the account: region, replication regions, storage used, file count, tier and connected pull zones. Storage passwords are redacted. bunny.net: GET /storagezone.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, 1-based. Default 1.'}, 'search': {'type': 'string', 'description': 'Filter results by this search term.'}, 'per_page': {'type': 'integer', 'maximum': 1000, 'minimum': 5, 'description': 'Items per page, 5-1000. Default 1000.'}, 'include_deleted': {'type': 'boolean', 'description': 'Also return deleted storage zones.'}}}
bunny_list_video_libraries
List video libraries
List the Stream video libraries: video count, storage and traffic usage, linked pull/storage zones and player/encoding settings. Library API keys are redacted. bunny.net: GET /videolibrary.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Page number, 1-based. Default 1.'}, 'search': {'type': 'string', 'description': 'Filter results by this search term.'}, 'per_page': {'type': 'integer', 'maximum': 1000, 'minimum': 5, 'description': 'Items per page, 5-1000. Default 1000.'}}}
bunny_purge_pull_zone_cache
Purge a pull zone's cache
WRITE. Purge the cached content of one pull zone — everything, or only files carrying a cache tag. Nothing is lost (the CDN refetches from the origin) but the origin takes the refill load. bunny.net: POST /pullzone/{id}/purgeCache.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pull_zone_id'], 'properties': {'cache_tag': {'type': 'string', 'maxLength': 512, 'minLength': 1, 'description': 'Only purge files with this cache tag.'}, 'pull_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The Pull Zone ID.', 'exclusiveMinimum': 0}}}
bunny_purge_url
Purge a URL from cache
WRITE. Purge one URL from the CDN cache. A URL ending in '/' purges everything under it unless exact_path is true; a '*' wildcard is also accepted. The CDN refetches from the origin. bunny.net: POST /purge.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['url'], 'properties': {'url': {'type': 'string', 'pattern': '^https?:\\/\\/\\S+$', 'maxLength': 2048, 'description': 'The CDN URL to purge, e.g. https://myzone.b-cdn.net/css/site.css.'}, 'async': {'type': 'boolean', 'description': 'Return immediately instead of waiting for the purge to finish.'}, 'exact_path': {'type': 'boolean', 'description': "For a URL ending in '/', purge only that exact path."}}}
bunny_remove_blocked_ip
Unblock an IP on a pull zone
WRITE. Remove an IP address from a pull zone's block list. bunny.net: POST /pullzone/{id}/removeBlockedIp.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pull_zone_id', 'ip'], 'properties': {'ip': {'type': 'string', 'pattern': '^[0-9A-Fa-f:.*\\/]{2,64}$', 'description': 'The IP address, e.g. 203.0.113.7.'}, 'pull_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The Pull Zone ID.', 'exclusiveMinimum': 0}}}
bunny_set_edge_rule_enabled
Enable or disable an edge rule
WRITE. Turn one edge rule on a pull zone on or off (reversible — the rule is kept). Get the rule's GUID from bunny_get_pull_zone (EdgeRules[].Guid). bunny.net: POST /pullzone/{pullZoneId}/edgerules/{edgeRuleId}/setEdgeRuleEnabled.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pull_zone_id', 'edge_rule_id', 'enabled'], 'properties': {'enabled': {'type': 'boolean', 'description': 'true to enable, false to disable.'}, 'edge_rule_id': {'type': 'string', 'pattern': '^[A-Za-z0-9-]{1,64}$', 'description': "The edge rule's GUID."}, 'pull_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The Pull Zone ID.', 'exclusiveMinimum': 0}}}
bunny_update_dns_record
Update a DNS record
WRITE. Update an existing DNS record. Takes effect on live DNS. Read the record first with bunny_list_dns_records and pass its type, name and value along with any other fields you want to keep or change. bunny.net: POST /dnszone/{zoneId}/records/{id}.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['zone_id', 'record_id', 'type', 'name', 'value'], 'properties': {'tag': {'type': 'string', 'maxLength': 255, 'description': "Tag (CAA), e.g. 'issue'."}, 'ttl': {'type': 'integer', 'maximum': 2147483647, 'minimum': 0, 'description': 'TTL in seconds.'}, 'name': {'type': 'string', 'maxLength': 255, 'description': "Record name relative to the zone; empty string for the apex, e.g. 'www'."}, 'port': {'type': 'integer', 'maximum': 65535, 'minimum': 0, 'description': 'Port (SRV).'}, 'type': {'enum': ['A', 'AAAA', 'CNAME', 'TXT', 'MX', 'Redirect', 'Flatten', 'PullZone', 'SRV', 'CAA', 'PTR', 'Script', 'NS', 'SVCB', 'HTTPS', 'TLSA'], 'type': 'string', 'description': 'Record type.'}, 'flags': {'type': 'integer', 'maximum': 255, 'minimum': 0, 'description': 'Flags (CAA).'}, 'value': {'type': 'string', 'maxLength': 4096, 'description': 'Record value, e.g. an IP for A, a hostname for CNAME, text for TXT.'}, 'weight': {'type': 'integer', 'maximum': 65535, 'minimum': 0, 'description': 'Weight (SRV, weighted records).'}, 'comment': {'type': 'string', 'maxLength': 1024, 'description': 'Free-text note on the record.'}, 'zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The DNS Zone ID.', 'exclusiveMinimum': 0}, 'disabled': {'type': 'boolean', 'description': 'Keep the record but stop serving it.'}, 'priority': {'type': 'integer', 'maximum': 65535, 'minimum': 0, 'description': 'Priority (MX, SRV).'}, 'record_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'The DNS record ID.', 'exclusiveMinimum': 0}, 'accelerated': {'type': 'boolean', 'description': 'Route the record through the CDN (CDN acceleration).'}, 'pull_zone_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Pull Zone ID, for type PullZone.', 'exclusiveMinimum': 0}}}
Hinzugefügt
bunny_remove_blocked_ip
2. October 2026 02:40
Hinzugefügt
bunny_add_blocked_ip
2. October 2026 02:40
Hinzugefügt
bunny_set_edge_rule_enabled
2. October 2026 02:40
Hinzugefügt
bunny_update_dns_record
2. October 2026 02:40
Hinzugefügt
bunny_add_dns_record
2. October 2026 02:40
Hinzugefügt
bunny_purge_url
2. October 2026 02:40
Hinzugefügt
bunny_purge_pull_zone_cache
2. October 2026 02:40
Hinzugefügt
bunny_get_audit_log
2. October 2026 02:40
Hinzugefügt
bunny_get_billing
2. October 2026 02:40
Hinzugefügt
bunny_list_regions
2. October 2026 02:40
Hinzugefügt
bunny_get_statistics
2. October 2026 02:40
Hinzugefügt
bunny_get_video_library
2. October 2026 02:40
Hinzugefügt
bunny_list_video_libraries
2. October 2026 02:40
Hinzugefügt
bunny_export_dns_zone
2. October 2026 02:40
Hinzugefügt
bunny_list_dns_records
2. October 2026 02:40
Hinzugefügt
bunny_get_dns_zone
2. October 2026 02:40
Hinzugefügt
bunny_list_dns_zones
2. October 2026 02:40
Hinzugefügt
bunny_get_storage_zone_statistics
2. October 2026 02:40
Hinzugefügt
bunny_get_storage_zone
2. October 2026 02:40
Hinzugefügt
bunny_list_storage_zones
2. October 2026 02:40
Hinzugefügt
bunny_get_pull_zone
2. October 2026 02:40
Hinzugefügt
bunny_list_pull_zones
2. October 2026 02:40