Releases: MatejGomboc/git-proxy-mcp
Releases · MatejGomboc/git-proxy-mcp
v1.1.0
Immutable
release. Only release title and notes can be modified.
Added
- Proxy support — new
proxysection inconfig.jsonfor routing all network
operations (git fetch/push/connect, LFS downloads) through HTTP, HTTPS, or SOCKS5
proxy servers. Includesno_proxyfor bypassing the proxy on specific hosts.
Useful for corporate environments behind firewalls. - Configurable session management — new
sessionssection inconfig.jsonfor
setting session timeout, max concurrent streaming sessions, and max repo sessions.
Previously hardcoded to 1 hour / 10 / 100 respectively. - LFS improvements — new
lfssection inconfig.jsonwith retry logic
(exponential backoff for transient failures), per-object and total size limits,
and byte-level progress tracking during LFS downloads. - Submodule improvements — recursive submodule fetching with per-request
depth control (unlimited by default, mirroring git), include/exclude glob
pattern filtering, cycle detection, and early termination after configurable
failure count. Newsubmodule_depth,submodule_include, and
submodule_excludetool arguments forrepo/cloneandrepo/clone_start. - Parallel submodule fetching — submodules at each depth level are now
fetched in parallel usingstd::thread::scope, controlled by the existing
max_concurrentsetting (default 4). Whenmax_concurrentis 1, behaviour
degrades gracefully to sequential fetching. - Chunk-level resume — new
repo_clone_statustool to check progress and identify
missing chunks in a Tier 2 streaming session.repo/clone_chunkresponses now include
next_missing_chunkso the AI can resume interrupted transfers without re-downloading
chunks it already has. - Integration tests — Python-based end-to-end tests (
tests/integration/) that
rebuild a private test fixture repo from scratch and exercise all 10 MCP tools
(initialise, refs, clone, diff, pull, push, Tier 2 streaming lifecycle, helper
script) against a real GitHub remote, including error handling, edge cases,
credential leak checks, protected branch enforcement, and sparse clone
verification. Runs as part ofci_main.ymlon every push to main, plus nightly
and on manual dispatch viaci_integration.yml.
Changed
- CI/CD improvements — added concurrency groups to cancel superseded runs, added
timeout-minutesto all jobs, deduplicated cache cleanup logic, narrowed PR trigger
tomainbranch only, improved cancellation handling with!cancelled(). - Pre-release tags (e.g.,
v1.0.0-rc1) no longer get marked as the "latest" GitHub
release. - Submodule recursion depth is now a per-request tool argument (
submodule_depth)
rather than a server config setting, mirroring howgit clone --recurse-submodules
works. Default is unlimited (git default). - Branch default description updated to "remote's default branch" instead of
hardcoded "main", matching git's actual behaviour.
Fixed
- Pinned all GitHub Actions to full-length commit SHAs, as required by the repository's
action permissions settings. - Pinned
dtolnay/rust-toolchainto commit SHA with explicittoolchain: stableinput. - Accept git >= 2.53 bundle header format (
# v2 git bundle/# v3 git bundle). - Use
gitCLI for bundle unbundling instead of libgit2 (which does not support
fetching from bundle files reliably across platforms). - Added bundle size limit (1 GiB) to prevent memory exhaustion via oversized bundles.
Security
- Upgraded
git2from0.19to0.20.4to fix potential undefined behaviour when
dereferencingBufstruct (CWE-476).
v1.0.0
Initial release.