[project] name = "serial-console-mcp" version = "0.3.2" description = "AI for the configuration of telecommunication equipment over its serial console: Juniper and Cisco routers and switches, Icom CI-V and Kenwood, Yaesu and Elecraft CAT transceivers, and GS-232 antenna rotators, plus any other serial device in raw, ANSI or VT100 mode: IoT gateways, alarm and control panels, instruments. An MCP server for Claude and other AI assistants." readme = "README.md" license = { text = "MIT" } requires-python = ">=3.10" authors = [ { name = "Stefan Brunner (AE5VG)", email = "me@stefanbrunner.org" }, ] keywords = [ "serial", "serial-port", "console", "mcp", "model-context-protocol", "pyserial", "ham-radio", "cat", "ci-v", "craft-port", "juniper", "junos", "cisco", "ios", "network-automation", "telecom", "icom", "yaesu", "kenwood", "elecraft", "rotator", "gs-232", "iot", "rs-232", "vt100", "ansi", "alarm-panel", "embedded", ] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "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 :: Only", "Topic :: Communications :: Ham Radio", "Topic :: Home Automation", "Topic :: System :: Hardware", "Topic :: System :: Networking", "Topic :: Terminals :: Serial", ] dependencies = [ "pyserial>=3.5", "mcp>=1.2.0,<2", ] [project.optional-dependencies] # What the installer build needs. `--collect-all mcp` walks every SDK submodule, # including mcp.cli, which imports typer from the SDK's [cli] extra. freeze = [ "mcp[cli]>=1.2.0,<2", "pyinstaller>=6.0", "pyte>=0.8.2", ] screen = [ "pyte>=0.8.2", ] [dependency-groups] dev = [ "pytest>=8.0", "ruff>=0.6", ] [project.scripts] serial-console-mcp = "serial_console_mcp.server:main" [project.urls] Homepage = "https://github.com/sbrunner-atx/serial-console-mcp" Repository = "https://github.com/sbrunner-atx/serial-console-mcp" Issues = "https://github.com/sbrunner-atx/serial-console-mcp/issues" "Field Guide" = "https://github.com/sbrunner-atx/serial-console-mcp/blob/main/docs/serial-console-mcp%20Field%20Guide.pdf" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/serial_console_mcp"] [tool.hatch.build.targets.sdist] exclude = ["/.github", "/_hosttest", "/docs/brand", "/dist", "/.venv", "*.pkg", "*.exe"] [tool.ruff] line-length = 100 target-version = "py310" extend-exclude = ["_hosttest"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] [tool.pytest.ini_options] testpaths = ["tests"]