[project] name = "couchbase-guru" version = "0.1.0" description = "Couchbase Guru MCP Server - search Couchbase documentation from your MCP client." readme = "README.md" requires-python = ">=3.10,<3.15" license = "Apache-2.0" authors = [ { name="Developer Experience & Ecosystem Team", email="devadvocates@couchbase.com" }, ] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python :: 3", "Topic :: Documentation", ] dependencies = [ "click>=8.2.1,<9.0.0", "fastmcp>=3.2.0,<4.0.0", "httpx>=0.27,<1.0", ] [project.urls] Homepage = "https://github.com/Couchbase-Ecosystem/couchbase-guru" Documentation = "https://github.com/Couchbase-Ecosystem/couchbase-guru#readme" Issues = "https://github.com/Couchbase-Ecosystem/couchbase-guru/issues" [project.scripts] couchbase-guru = "mcp_server:main" # Development dependencies [project.optional-dependencies] dev = [ "ruff==0.16.5", "pre-commit==4.2.0", "pytest==9.0.3", "pytest-asyncio==1.3.0", "pytest-cov>=7.0.0", ] # Ruff configuration [tool.ruff] # Set the line length to match Black's default line-length = 88 target-version = "py310" # Include and exclude patterns include = ["src/**/*.py", "*.py"] exclude = [ ".bzr", ".direnv", ".eggs", ".git", ".git-rewrite", ".hg", ".ipynb_checkpoints", ".mypy_cache", ".nox", ".pants.d", ".pyenv", ".pytest_cache", ".pytype", ".ruff_cache", ".svn", ".tox", ".venv", "__pypackages__", "_build", "buck-out", "build", "dist", "node_modules", "site-packages", "venv", ] [tool.ruff.lint] # Enable specific rule categories select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # Pyflakes "UP", # pyupgrade "B", # flake8-bugbear "SIM", # flake8-simplify "I", # isort "N", # pep8-naming "C4", # flake8-comprehensions "PIE", # flake8-pie "PL", # Pylint "RUF", # Ruff-specific rules ] # Disable specific rules that might be too strict for your project ignore = [ "E501", # Line too long (handled by formatter) "PLR0913", # Too many arguments "PLR2004", # Magic value used in comparison "N806", # Variable in function should be lowercase (for SQL++ variables) "RUF022", # __all__ is not sorted ] # Allow fix for all enabled rules (when `--fix`) is provided. fixable = ["ALL"] unfixable = [] # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.ruff.lint.per-file-ignores] # Tests can use magic values and have longer names "test_*.py" = ["PLR2004", "N802"] # Config files can have longer names "**/config.py" = ["N802"] [tool.ruff.lint.isort] # Organize imports known-first-party = ["cb_mcp", "mcp_server"] split-on-trailing-comma = true [tool.ruff.format] # Format configuration quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false line-ending = "auto" # Pytest configuration [tool.pytest.ini_options] asyncio_mode = "strict" asyncio_default_fixture_loop_scope = "function" # Put src/ and tests/ on sys.path so tests can import the package and the shared # conftest helpers directly. pythonpath = ["src", "tests"] # Build system configuration [build-system] requires = ["hatchling"] build-backend = "hatchling.build" # Configure hatchling to use src-layout [tool.hatch.build.targets.wheel] # Include all packages from src/ and map them to the root only-include = [ "src/mcp_server.py", "src/cb_mcp" ] [tool.hatch.build.targets.wheel.sources] "src" = "" [tool.uv] package = true