Skip to content

Commit 84d0e1c

Browse files
authored
feat: add EASM service and AWS Secrets Manager integration for Bedrock Agentcore, fix ZDX SDK bugs (#20)
* feat: add ZEASM service and AWS Secrets Manager integration for Bedrock Agentcore, fix ZDX SDK bugs
1 parent 29e35d4 commit 84d0e1c

26 files changed

+3199
-1460
lines changed

CHANGELOG.md

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,63 @@
11
# Zscaler Integrations MCP Server Changelog
22

3+
## 0.5.0 (November 22, 2025) - AWS Bedrock AgentCore Security Enhancement
4+
5+
> **⚠️ Important:** This release contains enhancements specific to **AWS Bedrock AgentCore deployments only**. These changes are maintained in a separate private AWS-specific repository and do **not** modify the core Zscaler MCP Server in this repository. Standard MCP server functionality remains unchanged.
6+
7+
### Notes
8+
9+
- Python Versions: **v3.11, v3.12, v3.13**
10+
11+
### Enhancements
12+
13+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - 🔐 AWS Bedrock AgentCore Security Enhancements
14+
15+
**Container-Based Secrets Manager Integration:**
16+
17+
- Container retrieves Zscaler API credentials from AWS Secrets Manager at runtime
18+
- **Zero credentials exposed** in AgentCore configuration, CloudFormation templates, or deployment scripts
19+
- Secrets encrypted at rest with AWS KMS and in transit via TLS
20+
- Full CloudTrail audit logging for all secret access
21+
- Backward compatible - supports both Secrets Manager and direct environment variable approaches
22+
23+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - **CloudFormation Automation:**
24+
25+
- One-click deployment via Launch Stack button
26+
- Automated AgentCore runtime deployment with conditional secret creation
27+
- IAM execution roles with Secrets Manager permissions automatically configured
28+
29+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Added ZEASM (External Attack Surface Management) service with 7 read-only tools: `zeasm_list_organizations`, `zeasm_list_findings`, `zeasm_get_finding_details`, `zeasm_get_finding_evidence`, `zeasm_get_finding_scan_output`, `zeasm_list_lookalike_domains`, `zeasm_get_lookalike_domain`
30+
31+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Updated README.md with EASM tools documentation
32+
33+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Created EASM documentation in `docsrc/tools/easm/index.rst`
34+
35+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Updated `docsrc/tools/index.rst` with EASM service reference
36+
37+
### Bug Fixes
38+
39+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed ZDX `zdx_list_alerts` calling wrong SDK method (`alerts.read``alerts.list_ongoing`)
40+
41+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed ZDX `zdx_list_alert_affected_devices` calling wrong SDK method (`alerts.read_affected_devices``alerts.list_affected_devices`)
42+
43+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed ZDX `zdx_list_application_users` calling wrong SDK method (`apps.list_users``apps.list_app_users`)
44+
45+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed ZDX `zdx_get_application_user` calling wrong SDK method and incorrect return handling (`apps.get_user``apps.get_app_user`)
46+
47+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed ZDX `zdx_list_software` calling wrong SDK method and incorrect return handling (`inventory.list_software``inventory.list_softwares`)
48+
49+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed ZDX `zdx_get_software_details` calling wrong SDK method (`inventory.get_software``inventory.list_software_keys`)
50+
51+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed ZDX `zdx_get_device_deep_trace` incorrect return handling (SDK returns list, not single object)
52+
53+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed syntax error in `services.py` ZIdentityService (missing `description` key in tool registration)
54+
55+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed EASM tools incorrect `use_legacy` parameter handling (removed invalid syntax)
56+
57+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Fixed `ZSCALER_CUSTOMER_ID` incorrectly required for non-ZPA services (now only required for ZPA)
58+
59+
[PR #20](https://github.com/zscaler/zscaler-mcp-server/pull/20) - Updated ZDX unit tests to match corrected SDK method names (42 tests)
60+
361
## 0.4.0 (November 19, 2025)
462

563
### Notes
@@ -24,7 +82,6 @@
2482

2583
[PR #15](https://github.com/zscaler/zscaler-mcp-server/pull/15) - Added custom User-Agent header support with format `zscaler-mcp-server/VERSION python/VERSION os/arch`. Users can append AI agent information via `--user-agent-comment` flag or `ZSCALER_MCP_USER_AGENT_COMMENT` environment variable.
2684

27-
2885
## 0.3.1 (October 28, 2025) - Tool Registration & Naming Updates
2986

3087
### Added

README.md

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,6 @@
5656
- [Cursor](#cursor)
5757
- [Visual Studio Code + GitHub Copilot](#visual-studio-code-github-copilot)
5858
- [Troubleshooting](#troubleshooting)
59-
- [Contributing](#contributing)
60-
- [Getting Started for Contributors](#getting-started-for-contributors)
61-
- [Running Tests](#running-tests)
6259
- [License](#license)
6360

6461
## 📺 Overview
@@ -443,7 +440,6 @@ ZIA provides both **read-only** and **write** tools. Write operations require `-
443440

444441
| Tool Name | Description | Type |
445442
|-----------|-------------|------|
446-
| `zia_list_dlp_dictionaries` | List DLP dictionaries | Read-only |
447443
| `zia_get_dlp_dictionary` | Get a specific DLP dictionary | Read-only |
448444
| `zia_list_dlp_engines` | List DLP engines | Read-only |
449445
| `zia_get_dlp_engine` | Get a specific DLP engine | Read-only |
@@ -702,6 +698,32 @@ ZTW provides both **read-only** and **write** tools. Write operations require `-
702698
|-----------|-------------|------|
703699
| `ztw_get_discovery_settings` | Get workload discovery service settings | Read-only |
704700

701+
### EASM - External Attack Surface Management
702+
703+
EASM provides **read-only** tools for monitoring your organization's external attack surface, including findings and lookalike domains.
704+
705+
#### Organizations
706+
707+
| Tool Name | Description | Type |
708+
|-----------|-------------|------|
709+
| `zeasm_list_organizations` | List all EASM organizations configured for the tenant | Read-only |
710+
711+
#### Findings
712+
713+
| Tool Name | Description | Type |
714+
|-----------|-------------|------|
715+
| `zeasm_list_findings` | List all findings for an organization's internet-facing assets | Read-only |
716+
| `zeasm_get_finding_details` | Get detailed information for a specific finding | Read-only |
717+
| `zeasm_get_finding_evidence` | Get scan evidence attributed to a specific finding | Read-only |
718+
| `zeasm_get_finding_scan_output` | Get complete scan output for a specific finding | Read-only |
719+
720+
#### Lookalike Domains
721+
722+
| Tool Name | Description | Type |
723+
|-----------|-------------|------|
724+
| `zeasm_list_lookalike_domains` | List all lookalike domains detected for an organization | Read-only |
725+
| `zeasm_get_lookalike_domain` | Get details for a specific lookalike domain | Read-only |
726+
705727
## Installation & Setup
706728

707729
### Prerequisites
@@ -1137,7 +1159,7 @@ The following environment variables control MCP server behavior (not authenticat
11371159
| `ZSCALER_MCP_SERVICES` | `""` | Comma-separated list of services to enable (empty = all services). Supported values: `zcc`, `zdx`, `zia`, `zidentity`, `zpa`, `ztw` |
11381160
| `ZSCALER_MCP_TOOLS` | `""` | Comma-separated list of specific tools to enable (empty = all tools) |
11391161
| `ZSCALER_MCP_WRITE_ENABLED` | `false` | Enable write operations (`true`/`false`). When `false`, only read-only tools are available. Set to `true` or use `--enable-write-tools` flag to unlock write mode. |
1140-
| `ZSCALER_MCP_WRITE_TOOLS` | `""` | **MANDATORY** comma-separated allowlist of write tools (supports wildcards like `zpa_create_*`). Requires `ZSCALER_MCP_WRITE_ENABLED=true`. If empty when write mode enabled, 0 write tools registered. |
1162+
| `ZSCALER_MCP_WRITE_TOOLS` | `""` | **MANDATORY** comma-separated allowlist of write tools (supports wildcards like `zpa_*`). Requires `ZSCALER_MCP_WRITE_ENABLED=true`. If empty when write mode enabled, 0 write tools registered. |
11411163
| `ZSCALER_MCP_DEBUG` | `false` | Enable debug logging (`true`/`false`) |
11421164
| `ZSCALER_MCP_HOST` | `127.0.0.1` | Host to bind to for HTTP transports |
11431165
| `ZSCALER_MCP_PORT` | `8000` | Port to listen on for HTTP transports |

docs/CONTRIBUTING.md

Lines changed: 0 additions & 161 deletions
This file was deleted.

0 commit comments

Comments
 (0)