[project] name = "arcade-mcp" version = "1.14.1" description = "Arcade.dev - Tool Calling platform for Agents" readme = "README.md" license = { file = "LICENSE" } authors = [{ name = "Arcade", email = "dev@arcade.dev" }] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] requires-python = ">=3.10" dependencies = [ # CLI dependencies "arcade-mcp-server>=1.21.1,<2.0.0", "arcade-core>=4.7.1,<5.0.0", "typer==0.10.0", "rich>=14.0.0,<15.0.0", "Jinja2==3.1.6", "authlib==1.6.9", "arcadepy==1.8.0", "tqdm==4.67.1", "click==8.1.8", "python-dateutil>=2.8.2", "packaging>=23.0", "platformdirs>=4.3.6; platform_system == 'Windows'", ] [project.optional-dependencies] all = [ # LLM providers (needed for evals) "openai==1.82.1", "anthropic>=0.40.0", "mcp>=1.9.0", # Scientific computing (needed for evals) "scipy>=1.14.0", "numpy>=2.0.0", "scikit-learn>=1.5.0", "pytz>=2024.1", ] evals = [ # LLM providers "openai==1.82.1", "anthropic>=0.40.0", "mcp>=1.9.0", # Scientific computing "scipy>=1.14.0", "numpy>=2.0.0", "scikit-learn>=1.5.0", "pytz>=2024.1", ] dev = [ # Test framework "pytest>=8.1.2", "pytest-cov>=4.0.0", "pytest-asyncio>=0.23.7", # Linting and type checking "mypy>=1.5.1", "pre-commit>=3.4.0", "ruff>=0.4.0", # Type stubs "types-Authlib>=1.3.0", "types-PyYAML>=6.0.0", "types-python-dateutil>=2.8.2", "types-pytz>=2024.1", ] # CLI entry point [project.scripts] arcade = "arcade_cli.main:cli" arcade-mcp = "arcade_cli.main:cli" [tool.uv.sources] # Workspace member sources arcade-core = { workspace = true } arcade-tdk = { workspace = true } arcade-serve = { workspace = true } arcade-mcp-server = { workspace = true } [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["libs/arcade-cli/arcade_cli", "libs/arcade-evals/arcade_evals"] [tool.uv.workspace] members = [ "libs/arcade-core", "libs/arcade-tdk", "libs/arcade-serve", "libs/arcade-mcp-server", ] [tool.mypy] python_version = "3.10" disallow_untyped_defs = true disallow_any_unimported = true no_implicit_optional = true check_untyped_defs = true warn_return_any = true warn_unused_ignores = true show_error_codes = true ignore_missing_imports = true exclude = [ '.*{{.*}}.*', # Ignore files that have names that use Jinja template syntax ] [tool.pytest.ini_options] testpaths = ["libs/tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = [ "--strict-markers", "--strict-config", "--verbose", "--cov=libs", "--cov-report=term-missing", "--cov-report=html", "--cov-report=xml", ] [tool.coverage.run] source = ["libs"] omit = ["*/tests/*", "*/test_*", "*/__pycache__/*"] parallel = true patch = ["subprocess"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", ] [tool.ruff] target-version = "py310" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "N", "UP", "RUF"] extend-select = ["PLW1514"] preview = true explicit-preview-rules = true ignore = ["E501", "S105"] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"]