[project] name = "kitchensink4word" version = "2.1.3" description = "Edit Word (.docx) files with your AI assistant: tracked changes, citations, tables, templates and live editing in Word on Windows. Local MCP server for Claude Code, Codex CLI and other MCP clients." readme = "README.md" license = "AGPL-3.0-only" license-files = ["LICENSE", "NOTICE.md"] authors = [{ name = "Alvut Consulting, LLC (KitchenSink4AI)" }] keywords = [ "mcp", "word", "docx", "ooxml", "claude", "model-context-protocol", "live-editing", "citations", "bibliography", "footnotes", "table-of-contents", "tracked-changes", "document-compare", "tables", "mail-merge", "redaction", "accessibility", "compliance", "forms", "batch-processing", "pdf-import", ] classifiers = [ "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "Natural Language :: English", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup :: XML", ] requires-python = ">=3.12" dependencies = [ "fastmcp>=3.4,<4", "latex2mathml>=3.81", "mathml2omml>=0.0.2", "python-docx", "lxml", "regex", "packaging", # version comparison for the startup update check "pywin32; sys_platform == 'win32'", ] [project.optional-dependencies] dev = [ "pytest", "pytest-timeout", ] [project.urls] Homepage = "https://kitchensink4.ai" Documentation = "https://github.com/KitchenSink4AI/KitchenSink4Word#readme" Repository = "https://github.com/KitchenSink4AI/KitchenSink4Word" Issues = "https://github.com/KitchenSink4AI/KitchenSink4Word/issues" [project.scripts] word-mcp = "word_mcp.server:main" kitchensink4word = "word_mcp.server:main" [build-system] requires = ["setuptools>=77"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] where = ["src"] [tool.pytest.ini_options] testpaths = ["tests"] timeout = 120 markers = [ "live: needs an interactive Word instance (auto-skipped where Word is unavailable)", ]