[project] name = "chirpstack-mcp-server" version = "0.1.1" description = "MCP server for ChirpStack v4 - manage and live-debug LoRaWAN devices from an AI agent" readme = "README.md" license = "MIT" license-files = ["LICENSE"] authors = [{ name = "Oldřich Švéda" }] requires-python = ">=3.10" keywords = ["mcp", "chirpstack", "lorawan", "iot", "model-context-protocol"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Software Development :: Libraries", "Topic :: System :: Networking", ] dependencies = [ "fastmcp>=3.4,<4", "chirpstack-api>=4.19,<5", ] [project.urls] Homepage = "https://github.com/oliveres/chirpstack-mcp-server" Repository = "https://github.com/oliveres/chirpstack-mcp-server" Changelog = "https://github.com/oliveres/chirpstack-mcp-server/blob/main/CHANGELOG.md" [project.scripts] chirpstack-mcp-server = "chirpstack_mcp_server.cli:main" [build-system] requires = ["hatchling>=1.27"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/chirpstack_mcp_server"] [dependency-groups] dev = [ "pytest>=9", "pytest-asyncio>=1.4", "ruff>=0.16", "pyright>=1.1.400", ] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] addopts = "-m 'not integration'" markers = ["integration: needs a live ChirpStack (see tests/integration/up.sh)"] [tool.ruff] line-length = 100 target-version = "py310" src = ["src", "tests"] # ruff formats fenced Python in Markdown; the design notes' code blocks are prose, not code extend-exclude = ["docs"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM"] [tool.pyright] include = ["src", "tests"] pythonVersion = "3.10" typeCheckingMode = "standard" reportMissingTypeStubs = false