[project] name = "servomotor-mcp" version = "0.3.1" description = "MCP server to drive Gearotons M17 open-source servomotors from natural language (Claude / any MCP client) over RS-485. Auto-discovers serial ports and motors; exposes the full firmware command set." readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [{ name = "Gearotons" }] keywords = ["mcp", "servomotor", "nema17", "rs485", "robotics", "open-source", "claude", "ai"] classifiers = [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Intended Audience :: Developers", "Intended Audience :: Manufacturing", "Topic :: Scientific/Engineering", "Topic :: System :: Hardware", "Operating System :: OS Independent", ] dependencies = [ "mcp>=1.2.0,<2", # Real hardware backend pulls in the Gearotons library; optional so the mock path # installs cleanly without it. Install with: pip install 'servomotor-mcp[serial]' ] [project.optional-dependencies] # Real-hardware backend. Pinned to >=0.10.0: that release matches the M17 firmware # the server is verified against and is the first cross-platform (CPython+MicroPython) # library; the mock path installs cleanly without this extra. serial = ["servomotor>=0.10.0"] dev = ["pytest>=8.0"] [project.scripts] servomotor-mcp = "servomotor_mcp.server:main" [project.urls] Homepage = "https://gearotons.com" Repository = "https://github.com/Gearotons/servomotor-mcp" Issues = "https://github.com/Gearotons/servomotor-mcp/issues" Documentation = "https://github.com/Gearotons/servomotor-mcp#readme" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/servomotor_mcp"] [tool.pytest.ini_options] testpaths = ["tests"]