{
  "markdown": "# readonly-mcp-akamai\n\n[![CI](https://github.com/desty2k/readonly-mcp-akamai/actions/workflows/ci.yml/badge.svg)](https://github.com/desty2k/readonly-mcp-akamai/actions)\n[![codecov](https://codecov.io/gh/desty2k/readonly-mcp-akamai/graph/badge.svg)](https://codecov.io/gh/desty2k/readonly-mcp-akamai)\n[![PyPI](https://img.shields.io/pypi/v/readonly-mcp-akamai)](https://pypi.org/project/readonly-mcp-akamai/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nRead-only MCP server for Akamai CDN. Search properties, browse EdgeWorker code, query DNS zones, inspect network lists, and translate error codes.\n\n<!-- mcp-name: io.github.desty2k/akamai -->\n\n> **Read-only by design.** This server can only read data. It cannot create, modify, delete, activate, deactivate, or purge anything. See [blog.wentland.io](https://blog.wentland.io) for the rationale.\n\n## Tools\n\n### Properties (CDN configurations)\n\n| Tool | Description |\n|------|-------------|\n| `search_properties` | Fuzzy search CDN properties by name. Uses a preloaded in-memory index refreshed every 5 minutes. |\n| `get_property_details` | Get property versions, hostnames, and activation status. |\n| `get_property_rules` | Get the rule tree for a property version — the full CDN configuration. |\n| `get_property_activations` | List deployment history for a property. |\n\n### DNS\n\n| Tool | Description |\n|------|-------------|\n| `list_dns_zones` | List all DNS zones, optionally filtered by name or type. |\n| `search_dns_records` | Search DNS records within a zone by name or record type. |\n\n### EdgeWorkers (serverless functions)\n\n| Tool | Description |\n|------|-------------|\n| `list_edgeworkers` | List all EdgeWorker IDs with names and descriptions. |\n| `list_edgeworker_versions` | List versions for an EdgeWorker. |\n| `get_edgeworker_files` | Download a version's code bundle and list all files. Cached in memory. |\n| `get_edgeworker_file` | Read a specific file from a cached bundle with line-range support. |\n| `search_edgeworker_code` | Regex search across all files in a cached bundle. |\n\n### Network Lists\n\n| Tool | Description |\n|------|-------------|\n| `search_network_lists` | Search network lists (IP allowlists, blocklists, geo lists) by name. |\n| `get_network_list` | Get the full contents of a network list. |\n\n### Utility\n\n| Tool | Description |\n|------|-------------|\n| `list_groups` | List account groups in the Akamai hierarchy. |\n| `list_cp_codes` | List CP codes (billing/reporting identifiers) for a contract and group. |\n| `translate_error_code` | Translate Akamai reference error codes to human-readable descriptions. |\n\n## Install\n\n```bash\n# With uv (recommended)\nuv pip install readonly-mcp-akamai\n\n# With pip\npip install readonly-mcp-akamai\n```\n\n## Docker\n\n```bash\ndocker run -e AKAMAI_HOST=... -e AKAMAI_CLIENT_TOKEN=... \\\n  -e AKAMAI_CLIENT_SECRET=... -e AKAMAI_ACCESS_TOKEN=... \\\n  ghcr.io/desty2k/readonly-mcp-akamai\n```\n\n## Configuration\n\nAll settings are via environment variables with the `AKAMAI_` prefix.\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `AKAMAI_HOST` | Yes | — | Akamai API hostname (e.g., `akab-xxxx.luna.akamaiapis.net`) |\n| `AKAMAI_CLIENT_TOKEN` | Yes | — | EdgeGrid client token |\n| `AKAMAI_CLIENT_SECRET` | Yes | — | EdgeGrid client secret |\n| `AKAMAI_ACCESS_TOKEN` | Yes | — | EdgeGrid access token |\n| `AKAMAI_TRANSPORT` | No | `stdio` | Transport: `stdio`, `http`, or `sse` |\n| `AKAMAI_HTTP_PORT` | No | `8080` | Port for HTTP/SSE transport |\n| `AKAMAI_LOG_FORMAT` | No | `json` | Log format: `json` or `text` |\n| `AKAMAI_LOG_LEVEL` | No | `INFO` | Log level: `DEBUG`, `INFO`, `WARNING`, `ERROR` |\n| `AKAMAI_INDEX_REFRESH_INTERVAL` | No | `300` | Property index refresh interval in seconds |\n\nGet credentials from Akamai Control Center > Identity & Access Management > API Clients.\n\n## MCP client configuration\n\n### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"akamai\": {\n      \"command\": \"readonly-mcp-akamai\",\n      \"env\": {\n        \"AKAMAI_HOST\": \"akab-xxxx.luna.akamaiapis.net\",\n        \"AKAMAI_CLIENT_TOKEN\": \"akab-xxxx\",\n        \"AKAMAI_CLIENT_SECRET\": \"xxxx\",\n        \"AKAMAI_ACCESS_TOKEN\": \"akab-xxxx\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add akamai -- readonly-mcp-akamai\n```\n\nSet the `AKAMAI_*` environment variables before starting Claude Code.\n\n## Example questions\n\nAn agent with this server can answer:\n\n- \"Find the CDN property for api.example.com and show me its caching rules\"\n- \"What version is currently deployed to production for the main website?\"\n- \"Show me all DNS records for example.com\"\n- \"What EdgeWorkers are configured? Show me the code for the request router\"\n- \"Search for all uses of `setResponseHeader` in EdgeWorker 42\"\n- \"What IPs are in the blocklist network list?\"\n- \"Translate this Akamai error: 9.6f64d440.1318965461.2f2b078\"\n- \"List all CP codes for the main contract\"\n\n## Development\n\n```bash\n# Clone\ngit clone https://github.com/desty2k/readonly-mcp-akamai.git\ncd readonly-mcp-akamai\n\n# Install with dev dependencies\nuv pip install -e \".[dev]\"\n\n# Run tests\npytest --cov\n\n# Lint\nruff check .\nruff format --check .\n```\n\n## License\n\nMIT\n",
  "bytes": 5309,
  "sha": "5724459e22d0529179730dc985070acae68c444359229a556673a2f765684647",
  "repo_slug": "desty2k/readonly-mcp-akamai",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_desty2k_akamai_8674b6db/readme"
}