[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "mcbluetooth" version = "2026.02.04" description = "Comprehensive BlueZ MCP server - expose the full Linux Bluetooth stack to LLMs" readme = "README.md" requires-python = ">=3.11" license = "MIT" authors = [ {name = "Ryan Malloy", email = "ryan@supported.systems"} ] keywords = ["bluetooth", "bluez", "mcp", "fastmcp", "dbus", "ble", "gatt"] classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: System :: Hardware", "Topic :: Communications", ] dependencies = [ "fastmcp>=2.14.4", "dbus-fast>=4.0.0", "pulsectl-asyncio>=1.2.2", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-asyncio>=0.24", "ruff>=0.8", ] [project.scripts] mcbluetooth = "mcbluetooth:main" [project.urls] Repository = "https://github.com/ryanmalloy/mcbluetooth" [tool.hatch.build.targets.wheel] packages = ["src/mcbluetooth"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "W", "I", "B", "UP"] ignore = ["E501"] [tool.ruff.lint.per-file-ignores] # dbus-fast uses D-Bus type signatures ("o", "h", "a{sv}") as annotations "src/mcbluetooth/hfp_ag.py" = ["F821", "F722"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"]