[build-system] requires = ["setuptools>=77.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "fcp-mcp" version = "0.3.0" description = "Local Final Cut Pro MCP server with FCPXML tools, opt-in live control, media analysis, and parametric puppets" readme = "README.md" requires-python = ">=3.10,<3.14" license = "MIT" license-files = ["LICENSE"] authors = [ { name = "Adam Steen", email = "dreliq9@gmail.com" }, ] maintainers = [ { name = "Adam Steen", email = "dreliq9@gmail.com" }, ] keywords = [ "mcp", "final-cut-pro", "fcpxml", "video-editing", "claude", "llm", "davinci-resolve", "premiere", "compressor", "ffprobe", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: End Users/Desktop", "Intended Audience :: Developers", "Operating System :: MacOS :: MacOS X", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Multimedia :: Video", "Topic :: Multimedia :: Video :: Non-Linear Editor", "Topic :: Software Development :: Libraries :: Python Modules", ] dependencies = [ "mcp>=2.0.0,<3", "pydantic>=2.12,<3", "platformdirs>=4.11,<5", "defusedxml>=0.7.1", "lxml>=4.9.0", "typing_extensions>=4.13,<5", ] [project.optional-dependencies] dev = [ "pytest>=7,<10", "pytest-asyncio>=0.21,<2", "pytest-cov>=5,<8", "hypothesis>=6.161,<7", "jsonschema>=4.20,<5", "tomli>=2.0.1,<3; python_version < '3.11'", # 0.19.1 was reviewed; cap before the next ruamel.yaml API line. "ruamel.yaml>=0.18.6,<0.20", "ruff==0.16.0", "build>=1,<2", "twine>=5,<7", "pip-audit>=2,<3", ] [project.urls] Homepage = "https://github.com/dreliq9/fcp-mcp" Repository = "https://github.com/dreliq9/fcp-mcp" Issues = "https://github.com/dreliq9/fcp-mcp/issues" Changelog = "https://github.com/dreliq9/fcp-mcp/blob/main/CHANGELOG.md" [project.scripts] fcp-mcp = "fcp_mcp.cli:main" [tool.setuptools.packages.find] where = ["src"] [tool.setuptools.package-data] fcp_mcp = ["py.typed", "samples/*.fcpxml"] [tool.ruff] line-length = 100 [tool.ruff.lint] # F841 (unused variable) is noisy for in-progress scaffolding; re-enable # per-call-site once the EDL parse and rough-cut scaffolds are complete. ignore = ["F841"] [tool.ruff.lint.per-file-ignores] "tests/**" = ["E402", "E741", "F401", "F811"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] pythonpath = ["src"]