pyproject.toml•4.32 kB
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[project]
name = "awslabs.openapi-mcp-server"
version = "0.2.5"
description = "An AWS Labs Model Context Protocol (MCP) server for OpenAPI"
readme = "README.md"
requires-python = ">=3.12"
license = {text = "Apache-2.0"}
license-files = ["LICENSE", "NOTICE" ]
authors = [
{name = "Amazon Web Services"},
{name = "AWSLabs Model Context Protocol (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",
]
dependencies = [
"fastapi>=0.115.0",
"fastmcp>=2.10.2",
"httpx>=0.28.1",
"pydantic>=2.11.7",
"typing-extensions>=4.14.1",
"boto3>=1.39.3",
"cachetools>=6.1.0",
"loguru>=0.7.3",
"uvicorn>=0.35.0",
"tenacity>=9.1.2",
"prance>=25.4.8.0",
"pyyaml>=6.0.2",
"openapi-spec-validator>=0.7.2",
"bcrypt>=4.3.0",
]
[project.optional-dependencies]
yaml = ["pyyaml>=6.0.2"]
prometheus = ["prometheus-client>=0.22.1"]
cdk = [
"aws-cdk-lib>=2.150.0",
"constructs>=10.3.0",
]
test = [
"pytest>=8.4.1",
"pytest-asyncio>=1.0.0",
"pytest-cov>=6.2.1",
"pytest-mock>=3.14.1",
]
dev = [
"commitizen>=4.8.3",
"pre-commit>=4.2.0",
"pyright>=1.1.402",
"ruff>=0.12.2",
"pytest>=8.4.1",
"pytest-asyncio>=1.0.0",
"pytest-cov>=6.2.1",
"lxml>=6.0.0",
]
all = ["pyyaml>=6.0.0", "prometheus-client>=0.17.0"]
[project.urls]
Homepage = "https://awslabs.github.io/mcp/"
Documentation = "https://awslabs.github.io/mcp/servers/openapi-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/openapi-mcp-server/CHANGELOG.md"
[project.scripts]
"awslabs.openapi-mcp-server" = "awslabs.openapi_mcp_server.server:main"
[tool.hatch.build.targets.wheel]
packages = ["awslabs"]
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
python_classes = "Test*"
python_functions = "test_*"
asyncio_mode = "auto"
[tool.coverage.run]
source = ["awslabs"]
omit = ["tests/*", "**/__init__.py"]
# Handle line shifts caused by license headers
skip_covered = false
skip_empty = true
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise NotImplementedError",
"if __name__ == .__main__.:",
"pass",
"raise ImportError",
# License header patterns - regex patterns to handle line shifts
"^\\s*#\\s*Copyright",
"^\\s*#\\s*Licensed under",
"^\\s*#\\s*limitations under the License",
"^\\s*#\\s*Copyright Amazon\\.com",
"^\\s*#\\s*Licensed under the Apache License",
"^\\s*#\\s*WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND",
"^\\s*#\\s*See the License for the specific language governing permissions",
"^\\s*#\\s*and limitations under the License",
"^\\s*#\\s*$",
"^\\s*#\\s*http://www\\.apache\\.org/licenses/LICENSE-2\\.0",
"^\\s*#\\s*Unless required by applicable law",
"^\\s*#\\s*distributed under the License is distributed",
"^\\s*#\\s*either express or implied",
"\"\"\".*\"\"\"",
]
# Skip empty lines to reduce line shift impact
skip_covered = false
skip_empty = true
[tool.coverage.html]
skip_empty = true
[tool.coverage.xml]
skip_empty = true
[tool.ruff]
target-version = "py310"
line-length = 100
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.format]
quote-style = "single"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
docstring-code-format = true