# pyproject.toml
[build-system]
requires = ["setuptools>=77.0.0", "wheel"] # Updated setuptools version for license format
build-backend = "setuptools.build_meta"
[project]
name = "omnimcp"
version = "0.1.0"
description = "OmniMCP - OmniParser with Model Control Protocol for UI Automation"
readme = "README.md"
# Allow <3.13 as upper bound seems reasonable unless specific 3.12+ features are needed
requires-python = ">=3.10,<3.13"
# Use SPDX identifier string for license
license = "MIT"
authors = [
{name = "Richard Abrich", email = "richard@openadapt.ai"}
]
dependencies = [
"pynput>=1.7.6", # Keyboard and mouse control
"pillow>=10.0.0", # Image processing
"fire>=0.4.0", # CLI functionality
"anthropic>=0.42.0", # Claude API
"loguru>=0.6.0", # Logging
"mcp>=0.9.0", # Model Control Protocol
"requests>=2.31.0", # HTTP requests for OmniParser
"mss>=6.1.0", # Screen capture
"jinja2>=3.0.0", # For templating
"botocore>=1.37.13",
"boto3>=1.37.13",
"paramiko>=3.5.1",
"pydantic-settings>=2.8.1",
"numpy>=2.2.4",
"pydantic>=2.10.6", # pydantic pulled in by pydantic-settings, but explicit is ok
"tenacity>=9.0.0",
# Add platform-specific dependency for macOS
"pyobjc-framework-Cocoa; sys_platform == 'darwin'",
"scipy>=1.15.2",
]
[project.scripts]
# Keep this if run_omnimcp:main exists and is intended as an entry point
# omnimcp = "omnimcp.run_omnimcp:main"
[tool.setuptools]
# Only include the main package source directory
packages = ["omnimcp"]
[project.optional-dependencies]
test = [
"pytest>=8.0.0",
"pytest-mock>=3.10.0",
"pytest-asyncio>=0.23.5",
"ruff>=0.11.2",
"mcp[cli]",
]
# Add Ruff configuration if you want to manage it here
# [tool.ruff]
# line-length = 88
# select = ["E", "W", "F", "I", "UP", "B", "C4"]
# ignore = ["E501"] # example
# [tool.ruff.format]
# quote-style = "double"