readonly-mcp-akamai
A read-only MCP server for exploring an Akamai account — CDN properties, EdgeWorker code, Edge DNS, network lists, CP codes, and error references — with 16 read-only tools (nothing can be created, modified, deleted, activated, or purged).
CDN properties (PAPI): fuzzy-search properties by name (
search_properties), get versions/hostnames/staging & production activation status (get_property_details), read the full rule tree with match criteria and behaviors such as caching, origins, headers, redirects (get_property_rules), and review deployment history (get_property_activations).Edge DNS: list zones filtered by name substring or type (PRIMARY/SECONDARY/ALIAS) (
list_dns_zones), and search records within a zone by name or record type (up to 500 records) (search_dns_records).EdgeWorkers: list EdgeWorkers and their group associations (
list_edgeworkers), list versions with dates and checksums (list_edgeworker_versions), list files in a version's code bundle with sizes and line counts (get_edgeworker_files), read a specific file with line-range support and output capping (get_edgeworker_file), and regex-search across all files in a bundle with up to 200 matches (search_edgeworker_code).Network lists: search IP allowlists/blocklists and geo lists by name or type (
search_network_lists), and fetch a list's full contents, up to 5,000 entries (get_network_list).Account utilities: list account groups with parent relationships and contracts (
list_groups), list CP codes for a contract and group (list_cp_codes), and translate Akamai error reference codes into HTTP status, IPs, origin info, failure reason, and WAF details (translate_error_code).Safety: only GET requests plus one POST to the error translator; the client rejects POSTs to any other path. The HTTP/SSE transports are unauthenticated, so bind them to loopback and use read-only API credentials.
Provides read-only access to Akamai CDN resources, including property configurations, DNS zones, EdgeWorkers, network lists, and error code translation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@readonly-mcp-akamai Find the CDN property for api.example.com and show its caching rules"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
readonly-mcp-akamai
A read-only Model Context Protocol (MCP) server that lets AI agents explore an Akamai account: CDN properties and their rule trees, EdgeWorker code, Edge DNS zones, network lists, CP codes, and error references. 16 tools, all of them reads.
Quick start
With uv installed, there is nothing else to install:
claude mcp add akamai \
-e AKAMAI_HOST=akab-xxxx.luna.akamaiapis.net \
-e AKAMAI_CLIENT_TOKEN=akab-xxxx \
-e AKAMAI_CLIENT_SECRET=xxxx \
-e AKAMAI_ACCESS_TOKEN=akab-xxxx \
-- uvx readonly-mcp-akamaiuvx downloads the package into a cached, isolated environment and runs it.
Python 3.11 or newer.
Read-only by design. Every call this server makes reads. It uses
GET, plus onePOSTto Akamai's error translator, which takes an error reference and returns what it means without changing anything. The client refuses aPOSTto any other path before sending it, and a test checks that. It cannot create, modify, delete, activate, deactivate, or purge anything. Give the API client read-only access as a second line of defense: see Credentials. Read the post about this server and why I build read-only MCP servers.
Related MCP server: nautobot-mcp
Credentials
Create an API client in Akamai Control Center under Identity & Access Management → API clients. Grant read-only access, where the API offers it, to the APIs the tools use:
API | Used by |
Property Manager (PAPI) | properties, groups, CP codes |
Edge DNS | DNS tools |
EdgeWorkers | EdgeWorker tools |
Network Lists | network list tools |
Edge Diagnostics |
|
The client's host, client_token, client_secret and access_token map to
the four AKAMAI_* variables below.
Tools
Properties (CDN configurations)
Tool | Description |
| Fuzzy search CDN properties by name. Uses a preloaded in-memory index refreshed every 5 minutes. Returns match scores, flags close matches, and reports why the index failed to load if it did. |
| Get property versions, hostnames, and activation status. |
| Get the rule tree for a property version — the full CDN configuration. |
| List deployment history for a property. |
DNS
Tool | Description |
| List all DNS zones, optionally filtered by name or type. |
| Search DNS records within a zone by name or record type. Returns at most 500 records. |
EdgeWorkers (serverless functions)
Tool | Description |
| List all EdgeWorker IDs with names and descriptions. |
| List versions for an EdgeWorker. |
| Download a version's code bundle and list all files. Cached in memory (bundles up to 16 MB, 128 MB in total). |
| Read a specific file from a cached bundle with line-range support. Output is capped at 100,000 characters, with the line to continue from. |
| Regex search across all files in a cached bundle. Returns at most 200 matches. |
Network Lists
Tool | Description |
| Search network lists (IP allowlists, blocklists, geo lists) by name. |
| Get the contents of a network list, at most 5,000 entries. |
Utility
Tool | Description |
| List account groups in the Akamai hierarchy. |
| List CP codes (billing/reporting identifiers) for a contract and group. |
| Translate Akamai reference error codes to human-readable descriptions. |
Install
uv tool install readonly-mcp-akamai # or: pip install readonly-mcp-akamaiNot needed for the Quick start, which runs it with uvx.
Docker
docker run -i --rm \
-e AKAMAI_HOST=akab-xxxx.luna.akamaiapis.net \
-e AKAMAI_CLIENT_TOKEN=akab-xxxx \
-e AKAMAI_CLIENT_SECRET=xxxx \
-e AKAMAI_ACCESS_TOKEN=akab-xxxx \
ghcr.io/desty2k/readonly-mcp-akamai:latest-i keeps stdin open for the default stdio transport.
Configuration
All settings are environment variables with the AKAMAI_ prefix.
Variable | Required | Default | Description |
| Yes | — | Akamai API hostname (e.g., |
| Yes | — | EdgeGrid client token |
| Yes | — | EdgeGrid client secret |
| Yes | — | EdgeGrid access token |
| No |
| Transport: |
| No |
| Address the HTTP/SSE transport listens on |
| No |
| Port for HTTP/SSE transport |
| No |
| Log format: |
| No |
| Log level: |
| No |
| Property index refresh interval in seconds |
The http and sse transports have no authentication: anyone who can reach
the port can read the Akamai account with the configured credentials. They
listen on 127.0.0.1 by default. Setting AKAMAI_HTTP_HOST to any other
address logs a warning at startup. The Docker image sets
AKAMAI_HTTP_HOST=0.0.0.0 so a published port works; publish it on loopback
only:
docker run --rm -p 127.0.0.1:8080:8080 -e AKAMAI_TRANSPORT=http \
-e AKAMAI_HOST=... -e AKAMAI_CLIENT_TOKEN=... \
-e AKAMAI_CLIENT_SECRET=... -e AKAMAI_ACCESS_TOKEN=... \
ghcr.io/desty2k/readonly-mcp-akamai:latestMCP client configuration
Claude Desktop
Add to claude_desktop_config.json (~/Library/Application Support/Claude/ on
macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"akamai": {
"command": "uvx",
"args": ["readonly-mcp-akamai"],
"env": {
"AKAMAI_HOST": "akab-xxxx.luna.akamaiapis.net",
"AKAMAI_CLIENT_TOKEN": "akab-xxxx",
"AKAMAI_CLIENT_SECRET": "xxxx",
"AKAMAI_ACCESS_TOKEN": "akab-xxxx"
}
}
}
}Claude Code
See Quick start.
How it compares
As of November 2026. Akamai's own MCP servers under akamai-developers cover other products: Akamai Cloud (Linode, also read-only), Akamai Functions, and the documentation. None of them reads Property Manager, EdgeWorkers, Edge DNS, or Network Lists. Check the projects themselves before relying on this.
Example questions
An agent with this server can answer:
"Find the CDN property for api.example.com and show me its caching rules"
"What version is currently deployed to production for the main website?"
"Show me all DNS records for example.com"
"What EdgeWorkers are configured? Show me the code for the request router"
"Search for all uses of
setResponseHeaderin EdgeWorker 42""What IPs are in the blocklist network list?"
"Translate this Akamai error: 9.6f64d440.1318965461.2f2b078"
"List all CP codes for the main contract"
Development
git clone https://github.com/desty2k/readonly-mcp-akamai
cd readonly-mcp-akamai
uv sync --extra dev
uv run pytest --cov
uv run ruff check .
uv run ruff format --check .License
MIT — see LICENSE.
Available Tools
16 toolsget_edgeworker_fileA
Read a file from an EdgeWorker code bundle. Returns numbered source lines.
Example questions:
"Show me main.js from EdgeWorker 42 v1.0"
"Read lines 50-100 of the request handler"
Inputs: edgeworker_id (required), version (required), path (required), start_line, +1 more. Returns: result
get_edgeworker_filesA
List files in an EdgeWorker version's code bundle. Returns file paths, sizes, and line counts.
Example questions:
"What files are in EdgeWorker 42 version 1.0?"
"Show me the file listing for this EdgeWorker"
Inputs: edgeworker_id (required), version (required). Returns: result
get_network_listA
Get the full contents of a network list. Returns metadata and every IP, CIDR, or country code entry.
Example questions:
"What IPs are in the blocklist?"
"Show all entries in network list 12345_ALLOWLIST"
"Which countries are in the geo restriction list?"
Inputs: unique_id (required). Returns: object
get_property_activationsA
Get activation history for a property. Returns which versions were deployed to staging and production, when, and by whom.
Example questions:
"When was the last production deployment for this property?"
"Who activated version 12?"
Inputs: property_id (required), contract_id (required), group_id (required). Returns: result
get_property_detailsA
Get property versions, hostnames, and activation status for staging and production networks.
Example questions:
"What version is deployed to production for this property?"
"What hostnames does this property serve?"
Inputs: property_id (required), contract_id (required), group_id (required). Returns: object
get_property_rulesA
Get the rule tree for a property version. Returns the CDN configuration as nested rules with match criteria and behaviors: caching, origin settings, headers, redirects, and edge logic.
Example questions:
"What caching rules are set for this property?"
"Show me the origin configuration"
Inputs: property_id (required), version (required), contract_id (required), group_id (required). Returns: object
list_cp_codesA
List CP codes for a contract and group. CP codes are numeric identifiers used for billing, reporting, and content segmentation.
Example questions:
"What CP codes are available for this contract?"
"Find the CP code for the main website"
Inputs: contract_id (required), group_id (required). Returns: result
list_dns_zonesA
List DNS zones. Returns zone names, types, and activation state.
Example questions:
"What DNS zones are managed in Akamai?"
"Find the DNS zone for example.com"
Inputs: search, zone_type. Returns: result
list_edgeworkersA
List all EdgeWorkers with names and group associations.
Example questions:
"What EdgeWorkers are configured?"
"Find the EdgeWorker for request routing"
Inputs: no named parameters. Returns: result
list_edgeworker_versionsA
List versions for an EdgeWorker. Returns version identifiers, creation dates, and checksums.
Example questions:
"What versions exist for EdgeWorker 42?"
"When was the latest version created?"
Inputs: edgeworker_id (required). Returns: result
list_groupsA
List account groups in the Akamai hierarchy. Returns group names, IDs, parent relationships, and associated contract IDs.
Example questions:
"What groups exist in the Akamai account?"
"Show me the account structure"
"Which contracts are associated with each group?"
Inputs: no named parameters. Returns: result
search_dns_recordsA
Get DNS records for a zone. Returns record names, types, TTLs, and values.
Example questions:
"What DNS records exist for example.com?"
"Find all CNAME records in the example.com zone"
Inputs: zone (required), search, record_type. Returns: result
search_edgeworker_codeA
Search across all files in an EdgeWorker code bundle using a regex pattern. Returns matching file paths, line numbers, and content.
Example questions:
"Find all uses of 'setResponseHeader' in this EdgeWorker"
"Search for error handling patterns"
Inputs: edgeworker_id (required), version (required), pattern (required), max_results. Returns: result
search_network_listsA
Search network lists by name. Network lists are collections of IP addresses, CIDR blocks, or country codes used for access control.
Example questions:
"What network lists are configured?"
"Find the blocklist for bad IPs"
"Are there any geo-restriction lists?"
Inputs: search, list_type. Returns: result
search_propertiesA
Search CDN properties by name. Returns matching properties with version numbers, staging/production versions, and group/contract IDs.
Example questions:
"Find the CDN config for example.com"
"Which property handles api.example.com?"
Inputs: query (required), limit. Returns: result
translate_error_codeA
Translate an Akamai error reference code into human-readable details. Returns HTTP response code, client/server IPs, origin info, failure reason, and WAF details.
Example questions:
"What does error 9.6f64d440.1318965461.2f2b078 mean?"
"Translate this Akamai error reference"
Inputs: error_code (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Each tool targets a distinct resource or operation: property, CP code, DNS, EdgeWorker, network list, error code. No two tools overlap in purpose, making selection unambiguous.
All tools follow a consistent verb_noun pattern: get_ for single items, list_ for collections, search_ for filtered lookups, translate_ for a specific translation. The naming is predictable and clear.
With 16 tools covering major Akamai resources (properties, DNS, EdgeWorkers, network lists, CP codes, error codes), the count is well-scoped for a read-only server. Each tool adds distinct value.
The tool surface covers the core read-only needs for Akamai CDN management. Minor gaps exist (e.g., property variables, security settings), but the essential resources are addressed.
Maintenance
Related MCP Connectors
Read-only MCP server for AIStatusDashboard status, incidents, metrics, and fallback recommendations.
Read-only MCP for AI usage profiles, leaderboards, stats, and docs; no writes or private data.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Related MCP Servers
AlicenseAqualityDmaintenanceRead-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.513 npm1MIT- AlicenseNot gradedqualityDmaintenanceA read-only MCP server for interacting with Nautobot, enabling network source of truth queries, device management, IPAM, and data quality audits via tools and prompts.MIT
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server that provides tools to list and read devices, MDM servers, blueprints, configurations, apps, packages, users, and other resources from Apple Business Manager and Apple School Manager.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for Akamai CDN, enabling cache purging by URL (invalidate/delete) and read-only inspection of property configs, rule trees, and activations. Credentials are managed server-side with EdgeGrid signing, so clients need no credentials.-