Skip to main content
Glama
readonly-mcp-akamai
by desty2k

readonly-mcp-akamai

CI codecov PyPI Python License: MIT

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-akamai

uvx 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 one POST to Akamai's error translator, which takes an error reference and returns what it means without changing anything. The client refuses a POST to 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

translate_error_code

The client's host, client_token, client_secret and access_token map to the four AKAMAI_* variables below.

Tools

Properties (CDN configurations)

Tool

Description

search_properties

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_details

Get property versions, hostnames, and activation status.

get_property_rules

Get the rule tree for a property version — the full CDN configuration.

get_property_activations

List deployment history for a property.

DNS

Tool

Description

list_dns_zones

List all DNS zones, optionally filtered by name or type.

search_dns_records

Search DNS records within a zone by name or record type. Returns at most 500 records.

EdgeWorkers (serverless functions)

Tool

Description

list_edgeworkers

List all EdgeWorker IDs with names and descriptions.

list_edgeworker_versions

List versions for an EdgeWorker.

get_edgeworker_files

Download a version's code bundle and list all files. Cached in memory (bundles up to 16 MB, 128 MB in total).

get_edgeworker_file

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.

search_edgeworker_code

Regex search across all files in a cached bundle. Returns at most 200 matches.

Network Lists

Tool

Description

search_network_lists

Search network lists (IP allowlists, blocklists, geo lists) by name.

get_network_list

Get the contents of a network list, at most 5,000 entries.

Utility

Tool

Description

list_groups

List account groups in the Akamai hierarchy.

list_cp_codes

List CP codes (billing/reporting identifiers) for a contract and group.

translate_error_code

Translate Akamai reference error codes to human-readable descriptions.

Install

uv tool install readonly-mcp-akamai   # or: pip install readonly-mcp-akamai

Not 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

AKAMAI_HOST

Yes

—

Akamai API hostname (e.g., akab-xxxx.luna.akamaiapis.net)

AKAMAI_CLIENT_TOKEN

Yes

—

EdgeGrid client token

AKAMAI_CLIENT_SECRET

Yes

—

EdgeGrid client secret

AKAMAI_ACCESS_TOKEN

Yes

—

EdgeGrid access token

AKAMAI_TRANSPORT

No

stdio

Transport: stdio, http, or sse

AKAMAI_HTTP_HOST

No

127.0.0.1

Address the HTTP/SSE transport listens on

AKAMAI_HTTP_PORT

No

8080

Port for HTTP/SSE transport

AKAMAI_LOG_FORMAT

No

json

Log format: json or text

AKAMAI_LOG_LEVEL

No

INFO

Log level: DEBUG, INFO, WARNING, ERROR

AKAMAI_INDEX_REFRESH_INTERVAL

No

300

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:latest

MCP 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 setResponseHeader in 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 tools
get_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

    A4/5.0

    Scored across 16 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Read-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.
      5
      13 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A 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
    • A
      license
      Not graded
      quality
      D
      maintenance
      A 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
    • F
      license
      Not graded
      quality
      C
      maintenance
      MCP 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.
      -