[project] name = "mcbladerf" version = "2026.10.25" description = "MCP server for Nuand BladeRF SDR control via SoapySDR" authors = [{name = "Ryan Malloy", email = "ryan@supported.systems"}] readme = "README.md" license = "MIT" license-files = ["LICENSE"] requires-python = ">=3.11" keywords = ["mcp", "sdr", "bladerf", "soapysdr", "radio"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Communications :: Ham Radio", "Topic :: Scientific/Engineering", ] dependencies = [ "fastmcp>=2.0.0", "numpy>=1.24", ] [project.optional-dependencies] dev = [ "pytest>=7.0", "pytest-asyncio>=0.21", "ruff>=0.1.0", ] [project.scripts] mcbladerf = "mcbladerf.server:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/mcbladerf"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "W", "I", "UP", "B", "C4", "SIM"] ignore = ["E501"] # Line length handled by formatter [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] [tool.uv] # Prefer system Python to match SoapySDR installation python-preference = "system"