[build-system]
requires = ["setuptools>=45", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "BiRRe"
version = "4.0.0"
description = "Model Context Protocol server for BitSight security ratings"
readme = "README.md"
requires-python = ">=3.13"
license = "Unlicense"
license-files = ["LICENSE"]
authors = [{ name = "boecht" }]
keywords = [
"bitsight",
"cybersecurity",
"fastmcp",
"llm-tools",
"mcp",
"model-context-protocol",
"risk-management",
"security-ratings",
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Console",
"Environment :: Plugins",
"Framework :: AsyncIO",
"Framework :: Pydantic :: 2",
"Intended Audience :: Financial and Insurance Industry",
"Intended Audience :: Information Technology",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.13",
"Topic :: Office/Business :: Financial :: Investment",
"Topic :: Security",
"Typing :: Typed",
]
dependencies = [
"dynaconf>=3.2.3,<4",
"fastmcp>=2.13.0,<3",
"httpx>=0.24.0,<0.29",
"openapi-spec-validator>=0.7.1,<0.8",
"prance>=23.6.7",
"pydantic>=2.12.0,<3",
"python-dotenv>=1.1.0,<2",
"rich>=13.7.0",
"structlog>=24.1.0",
"typer>=0.12.3",
"typing_extensions>=4.9.0",
]
[project.optional-dependencies]
pytest-dependencies = [
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=5.0.0",
"pytest-mock>=3.12.0",
]
[project.scripts]
birre = "birre.cli.main:main"
[project.urls]
repository = "https://github.com/boecht/birre"
[project.entry-points."mcp.servers"]
birre = "birre:create_birre_server"
[dependency-groups]
dev = [
"cyclonedx-bom>=7.2.1",
"hypothesis>=6.100.0",
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-benchmark>=5.1.0",
"pytest-cov>=5.0.0",
"pytest-mock>=3.12.0",
"ruff>=0.14.0",
"pyright>=1.1.392",
"types-pyyaml>=6.0.12",
]
[tool.pyright]
include = ["src", "tests"]
pythonVersion = "3.13"
typeCheckingMode = "standard" # "off" | "basic" | "standard" | "strict"
extraPaths = ["src"]
venvPath = "."
venv = ".venv"
ignore = ["tests"]
[tool.ruff]
line-length = 100
target-version = "py313"
extend-exclude = [
".venv/",
"BiRRe.egg-info",
"dist/",
"docs/apis/",
"src/birre/resources/apis/",
"scripts/",
]
[tool.ruff.format]
quote-style = "double"
[tool.ruff.lint]
select = [
"C90", # mccabe complexity
"E", # pycodestyle errors
"F", # pyflakes
"I", # isort
"UP", # pyupgrade
]
ignore = []
[tool.ruff.lint.mccabe]
max-complexity = 10
[tool.setuptools.package-dir]
"" = "src"
[tool.setuptools.packages.find]
where = ["src"]
include = ["birre*"]
[tool.setuptools.package-data]
"birre" = ["py.typed", "mcp_metadata.json"]
"birre.resources" = ["apis/**/*.json"]