mcaxl/pyproject.toml
Ryan Malloy d597bd3569 docs deploy: exclude docs/ from sdist + pin compose project name
The Astro docs site doesn't belong in the published sdist (node_modules,
build artefacts, dev container scaffolding). Adds `docs/` to the existing
sdist exclude list, alongside the other dev-only paths.

Compose project name pinned to `mcaxl-docs` via the v2 `name:` field.
Without it, Compose defaults to the parent directory's basename — and
all three sibling docs sites live in `docs/`, so they were colliding
and cross-recreating each other on every `up`.
2026-04-29 04:48:01 -06:00

90 lines
2.9 KiB
TOML

[project]
name = "mcaxl"
version = "2026.04.27.1"
description = "Read-only MCP server for Cisco Unified Communications Manager (CUCM) — AXL SOAP API + RisPort70 registration state — purpose-built for LLM-driven dial-plan and configuration auditing."
authors = [{name = "Ryan Malloy", email = "ryan@supported.systems"}]
readme = "README.md"
license = {text = "MIT"}
requires-python = ">=3.11"
keywords = [
"mcp", "cisco", "cucm", "axl", "risport",
"voip", "sip", "audit", "telephony",
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Intended Audience :: System Administrators",
"Intended Audience :: Telecommunications Industry",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Communications :: Telephony",
"Topic :: System :: Networking :: Monitoring",
]
dependencies = [
"fastmcp>=3.2",
"zeep>=4.3",
"platformdirs>=4.9",
"numpy>=1.26",
"python-dotenv>=1.0",
]
[project.optional-dependencies]
test = [
"pytest>=8.0",
"pytest-asyncio>=0.24",
]
[project.scripts]
mcaxl = "mcaxl.server:main"
[project.urls]
Homepage = "https://git.supported.systems/mcp/mcaxl"
Source = "https://git.supported.systems/mcp/mcaxl"
Issues = "https://git.supported.systems/mcp/mcaxl/issues"
Changelog = "https://git.supported.systems/mcp/mcaxl/src/branch/main/CHANGELOG.md"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/mcaxl"]
[tool.hatch.build.targets.sdist]
# Keep the published source distribution focused on what's needed to
# build / install / run. Excluded files exist for local development only.
#
# IMPORTANT: this list is the last line of defense for PII leakage.
# `tests/` contains real cluster fixtures; `.mcp.json` contains a
# local filesystem path; `audits/` contains cluster-specific findings.
# Pre-publish workflow: extract the sdist to /tmp and grep for any
# site-specific tokens (your org name, internal IP ranges, hostnames)
# across the full unpacked tree — MUST return empty before publish.
exclude = [
"CLAUDE.md", # operator-private project context for Claude Code
".env", # never ship credentials
".env.local",
".mcp.json", # contains local filesystem path; dev-only artifact
"axlsqltoolkit.zip", # Cisco-licensed; do not redistribute
"audits/", # cluster-specific audit reports
"docs/", # Astro docs site — node_modules, build artifacts, dev container scaffolding
"tests/", # tests live in source repo, not the sdist
".pytest_cache/",
".ruff_cache/",
"dist/",
"build/",
]
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"