[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "register-mcp" version = "0.6.1" description = "MCP Server for the Swiss commercial register (Zefix), with a company-UID join to the official gazettes (SHAB + cantonal Amtsblätter)" readme = "README.md" license = { file = "LICENSE" } requires-python = ">=3.11" keywords = [ "mcp", "model-context-protocol", "swiss-open-data", "zefix", "handelsregister", "uid", "company-registry", "due-diligence", "shab", "amtsblatt", "gazette", ] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ # Upper bound added deliberately: `mcp` 2.0.0 removed `mcp.server.fastmcp` # outright (the API moved to `mcp.server.mcpserver`), so an unbounded # `>=1.28.1` breaks every fresh install — CI and `pip install` alike. # Migrating to the 2.x API is real work and a decision to take on purpose, # not one a resolver should make silently. "mcp[cli]>=2.0.0,<3", "httpx>=0.27.0", "pydantic>=2.0.0", ] [project.optional-dependencies] dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0", "respx>=0.23.1", # Exakter Pin, identisch mit dem Pin in `.github/workflows/ci.yml`. ruff ist # pre-1.0; Regelverhalten und neue Checks innerhalb der gewaehlten Familien # landen in seinen Patches und Minors. Ohne Pin wird die CI ohne # Codeaenderung rot. # # Eine Spanne (vorher `>=0.15.22,<0.17`) verhindert nur das; sie sorgt nicht # dafuer, dass lokal dieselbe Version laeuft wie im Gate. Genau das war der # Fall: uv.lock loeste 0.16.2 auf, die CI linted mit 0.16.1 — ein `ruff # check`, der lokal gruen ist, kann so im Gate fallen. Die beiden Stellen # muessen gemeinsam angehoben werden. "ruff==0.16.7", ] otel = [ "opentelemetry-api>=1.27.0", "opentelemetry-sdk>=1.44.0", "opentelemetry-exporter-otlp-proto-http>=1.44.0", "opentelemetry-instrumentation-httpx>=0.48b0", ] [project.scripts] register-mcp = "register_mcp.server:main" [project.urls] Homepage = "https://github.com/malkreide/register-mcp" Repository = "https://github.com/malkreide/register-mcp" Issues = "https://github.com/malkreide/register-mcp/issues" [tool.hatch.build.targets.wheel] packages = ["src/register_mcp"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] addopts = "-v --tb=short" markers = [ "live: live API tests (skipped in CI by default)", ] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "W", "I", "UP"] ignore = ["E501"]