[project]
name = "awslabs.cdk-mcp-server"
version = "1.0.2"
description = "An AWS CDK MCP server that provides guidance on AWS Cloud Development Kit best practices, infrastructure as code patterns, and security compliance with CDK Nag. This server offers tools to validate infrastructure designs, explain CDK Nag rules, analyze suppressions, generate Bedrock Agent schemas, and discover Solutions Constructs patterns."
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"mcp[cli]>=1.6.0",
"pydantic>=2.10.6",
"aws-lambda-powertools>=2.30.0",
"httpx>=0.27.0",
"bs4>=0.0.2",
]
license = {text = "Apache-2.0"}
license-files = ["LICENSE", "NOTICE" ]
authors = [
{name = "Amazon Web Services"},
{name = "AWSLabs MCP", email="203918161+awslabs-mcp@users.noreply.github.com"},
]
classifiers = [
"License :: OSI Approved :: Apache Software License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
[project.scripts]
"awslabs.cdk-mcp-server" = "awslabs.cdk_mcp_server.server:main"
[project.urls]
Homepage = "https://awslabs.github.io/mcp/"
Documentation = "https://awslabs.github.io/mcp/servers/cdk-mcp-server/"
Source = "https://github.com/awslabs/mcp.git"
"Bug Tracker" = "https://github.com/awslabs/mcp/issues"
Changelog = "https://github.com/awslabs/mcp/blob/main/src/cdk-mcp-server/CHANGELOG.md"
[dependency-groups]
dev = [
"commitizen>=4.2.2",
"pre-commit>=4.1.0",
"ruff>=0.9.7",
"pyright>=1.1.398",
"pytest>=8.0.0",
"pytest-cov>=4.1.0",
"pytest-mock>=3.12.0",
"pytest-asyncio>=0.23.5",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.ruff]
line-length = 99
extend-include = ["*.ipynb"]
exclude = [
".venv",
"**/__pycache__",
"**/node_modules",
"**/dist",
"**/build",
"**/env",
"**/.ruff_cache",
"**/.venv",
"**/.ipynb_checkpoints"
]
force-exclude = true
[tool.ruff.lint]
exclude = ["__init__.py"]
select = ["C", "D", "E", "F", "I", "W"]
ignore = ["C901", "E501", "E741", "F402", "F823", "D100", "D106"]
[tool.ruff.lint.isort]
lines-after-imports = 2
no-sections = true
[tool.ruff.lint.per-file-ignores]
"**/*.ipynb" = ["F704"]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.format]
quote-style = "single"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
docstring-code-format = true
[tool.commitizen]
name = "cz_conventional_commits"
version = "0.0.0"
tag_format = "v$version"
version_files = [
"pyproject.toml:version",
"awslabs/cdk_mcp_server/__init__.py:__version__"
]
update_changelog_on_bump = true
[tool.hatch.build.targets.wheel]
packages = ["awslabs"]
[tool.bandit]
exclude_dirs = ["venv","tests"]
[tool.pytest.ini_options]
minversion = "8.0"
addopts = "-ra -q --cov=awslabs.cdk_mcp_server --cov-report=term-missing"
testpaths = [
"tests",
]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
filterwarnings = [
"ignore::DeprecationWarning",
"ignore::UserWarning",
]
asyncio_mode = "auto"
[tool.pyright]
ignore = ["scripts/generate_schema_*.py"]
[tool.coverage.run]
source = ["awslabs"]