- Set `MARKITDOWN_PATH` or `REPOMIX_PATH` to override previously used `projectRoot`. Deprecation of `projectRoot` will be enforced in future releases.
- Update Docker builds: `.dockerignore` now excludes host `.venv` and `node_modules`.
- Replace any usage of stale `UV_PATH` documentation; the code no longer uses `uv`.
- `projectRoot` removed from the MCP tool input schema. Use `MARKITDOWN_PATH` to override the project root.
- `MARKITDOWN_PATH` env var added (defaults to `/.venv/bin/markitdown`, falls back to PATH lookup).
- `REPOMIX_PATH` env var added with same behavior for `git-repo-to-markdown`.
- `MD_ALLOWED_PATHS` env var introduced; enforces filepath whitelist on all tools, keeping `MD_SHARE_DIR` as backward‑compat alias.
Full changelog
Path-resolution overhaul to make Docker (and any non-default install layout) frictionless. Closes #97 via #98.
What's new
MARKITDOWN_PATHenv var. Defaults to<project>/.venv/bin/markitdown, falls back to a bare-namePATHlookup. Letspipx install "markitdown[pdf]"or any system install work without a project venv.REPOMIX_PATHenv var. Same shape, forgit-repo-to-markdown.MD_ALLOWED_PATHSenv var (path-delimiter-separated). Enforced on every filepath-accepting tool, not justget-markdown-file.MD_SHARE_DIRkept as a single-dir backward-compat alias.- Docker volume-mount example in the README, aligned with the
markdownify.pathsfield on the Docker MCP catalog config page. - New
scripts/docker-smoke-test.sh: builds the image, mounts a sample dir, callspdf-to-markdownover the MCP stdio transport, asserts the response.
Fixes
- Stop treating non-empty stderr from
markitdownas fatal — it emits non-fatal warnings on every successful run (onnxruntime cpuid, pydub ffmpeg-missing). Exit code is the real signal. - Add
.dockerignoresoCOPY . .no longer drags the host's.venvandnode_modulesinto the build context. - Replace stale
UV_PATHdocs (the code stopped usinguvseveral versions ago).
Breaking changes
projectRootremoved from the MCP tool input schema. It was client-controllable, so any MCP client could force the server to exec<arbitrary>/.venv/bin/markitdown. No legitimate client should have been using it. If you need to override the project root, setMARKITDOWN_PATHdirectly.