Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions scripts/verify_package_name.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,24 @@ def extract_package_name(pyproject_path: Path) -> str:


def extract_dependencies(pyproject_path: Path) -> List[str]:
"""Extract dependency names from pyproject.toml file."""
"""Extract dependency names from pyproject.toml file, including optional dependencies."""
try:
with open(pyproject_path, 'rb') as f:
data = tomllib.load(f)
dependencies = data.get('project', {}).get('dependencies', [])

# Combine regular dependencies and optional dependencies
all_deps = data.get('project', {}).get('dependencies', [])
optional_deps = data.get('project', {}).get('optional-dependencies', {})
for group_deps in optional_deps.values():
all_deps.extend(group_deps)

# Extract just the package names (remove version constraints)
dep_names = []
for dep in dependencies:
for dep in all_deps:
# Remove version constraints (>=, ==, etc.) and extract just the package name
dep_name = re.split(r'[>=<!=]', dep)[0].strip()
dep_names.append(dep_name)

return dep_names
except (FileNotFoundError, KeyError):
# If we can't extract dependencies, return empty list
Expand Down Expand Up @@ -199,8 +206,9 @@ def find_package_references_in_readme(
'env',
]:
continue
# Skip dependencies from pyproject.toml
if ref in dependencies:
# Skip dependencies from pyproject.toml (strip version before comparing)
ref_package = ref.split('@')[0] if '@' in ref else ref
if ref_package in dependencies:
continue
# Skip AWS service references (e.g., aws.s3@ObjectCreated)
if ref.startswith('aws.') and '@' in ref:
Expand Down
54 changes: 54 additions & 0 deletions src/eks-mcp-server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ The Amazon EKS MCP server provides AI code assistants with resource management t

Integrating the EKS MCP server into AI code assistants enhances development workflow across all phases, from simplifying initial cluster setup with automated prerequisite creation and application of best practices. Further, it streamlines application deployment with high-level workflows and automated code generation. Finally, it accelerates troubleshooting through intelligent debugging tools and knowledge base access. All of this simplifies complex operations through natural language interactions in AI code assistants.

**AWS now offers a fully managed, hosted version of the EKS MCP Server** that eliminates local installation and maintenance. The hosted service provides automatic updates, centralized IAM-based security, and comprehensive audit logging through AWS CloudTrail. See [Option 1 (Recommended)](#option-1-recommended-hosted-mcp-server) below for setup instructions.

> **Note**: The hosted Amazon EKS MCP Server is in preview and subject to change.

## Key features

* Enables users of AI code assistants to create new EKS clusters, complete with prerequisites such as dedicated VPCs, networking, and EKS Auto Mode node pools, by translating requests into the appropriate AWS CloudFormation actions.
Expand All @@ -21,6 +25,56 @@ Integrating the EKS MCP server into AI code assistants enhances development work

## Setup

### Option 1 (Recommended): Hosted MCP Server

Use the AWS-managed EKS MCP Server for simplified setup and automatic updates. The hosted service eliminates local installation requirements and provides enterprise-grade security through AWS IAM integration.

#### Prerequisites

- [Python 3.10+](https://www.python.org/downloads/release/python-3100/) and [uv package manager](https://docs.astral.sh/uv/getting-started/installation/)
- [AWS CLI configured](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) with valid credentials
- IAM permissions for EKS MCP (see below)

#### Configuration

The hosted EKS MCP Server uses the [MCP Proxy for AWS](https://github.com/aws/mcp-proxy-for-aws) to provide secure, authenticated access. Add the following to your MCP client configuration file:

**For Mac/Linux:**
```json
{
"mcpServers": {
"eks-mcp": {
"disabled": false,
"type": "stdio",
"command": "uvx",
"args": [
"mcp-proxy-for-aws@latest",
"https://eks-mcp.us-east-1.api.aws/mcp",
"--profile",
"default",
"--region",
"us-east-1"
]
}
}
}
```

Replace `us-east-1` with your desired AWS region and `default` with your AWS CLI profile name. Add `--read-only` flag to restrict to read-only operations.

#### IAM Permissions

Your IAM role or user must have the following managed policies attached:

- **For read-only operations**: [AmazonEKSMCPReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEKSMCPReadOnlyAccess.html)
- **For write operations**: Create a custom policy following the [write policy guide](https://docs.aws.amazon.com/eks/latest/userguide/eks-mcp-getting-started.html#_step_2_optional_create_a_write_policy)

For complete setup instructions and additional configuration options, see the [Amazon EKS MCP Server documentation](https://docs.aws.amazon.com/eks/latest/userguide/eks-mcp-getting-started.html).

### Option 2: Local MCP Server (Legacy)

> **Note**: This is the legacy local installation method that will no longer receive updates. We recommend using [Option 1 (Hosted MCP Server)](#option-1-recommended-hosted-mcp-server) instead.

Add these IAM policies to the IAM role or user that you use to manage your EKS cluster resources.

### Read-Only Operations Policy
Expand Down
3 changes: 3 additions & 0 deletions src/eks-mcp-server/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ classifiers = [
"Programming Language :: Python :: 3.13",
]

[project.optional-dependencies]
hosted = ["mcp-proxy-for-aws>=1.1.1"]

[project.urls]
homepage = "https://awslabs.github.io/mcp/"
docs = "https://awslabs.github.io/mcp/servers/eks-mcp-server/"
Expand Down
55 changes: 55 additions & 0 deletions src/eks-mcp-server/server.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
"description": "AI-powered Amazon EKS cluster management and troubleshooting",
"name": "io.github.awslabs/eks-mcp-server",
"packages": [
{
"identifier": "mcp-proxy-for-aws",
"packageArguments": [
{
"type": "positional",
"value": "https://eks-mcp.{region}.api.aws/mcp",
"variables": {
"region": {
"default": "us-east-1",
"description": "AWS region for EKS MCP service",
"isRequired": true
}
}
},
{
"default": "default",
"description": "AWS CLI profile to use for credentials",
"name": "--profile",
"type": "named"
},
{
"name": "--region",
"type": "named",
"value": "{region}",
"variables": {
"region": {
"default": "us-east-1",
"description": "AWS region"
}
}
}
],
"registryBaseUrl": "https://pypi.org",
"registryType": "pypi",
"runtimeHint": "uvx",
"transport": {
"type": "stdio"
},
"version": "1.1.1"
}
],
"repository": {
"source": "github",
"subfolder": "src/eks-mcp-server",
"url": "https://github.com/awslabs/mcp"
},
"title": "Amazon EKS MCP Server",
"version": "1.0.0",
"websiteUrl": "https://docs.aws.amazon.com/eks/latest/userguide/eks-mcp-getting-started.html"
}
Loading