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`.
90 lines
2.9 KiB
TOML
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"
|