Install
uvx --from git+https://github.com/adhikasp/mcp-git-ingest mcp-git-ingestWho it's for
If you want an MCP client to see a GitHub repository directory tree first, then read some important files, without cloning by hand and walking the tree, this service matches. It exposes two tools: github_directory_structure returns a tree, and github_read_important_files reads the file contents you name. The implementation uses GitPython to create a deterministic temp directory from a hash of the repo URL; if already cloned it reuses, otherwise it runs clone. It fits mapping a public repo and checking key files. It does not fit pulling a private repo without authorization, and it does not fit being treated as a full git workspace. Clone and file reads happen on this machine; this is not "no network, no local reads, no privacy boundary".
First try in 3 minutes
The official main path is uvx running directly from the Git repository. Runtime needs Python 3.8+, plus fastmcp and gitpython. In the client write the command as:
uvx --from git+https://github.com/adhikasp/mcp-git-ingest mcp-git-ingest
After connecting, make one low-risk call: use github_directory_structure on the official repo itself, with repo address https://github.com/adhikasp/mcp-git-ingest
Evidence says the tool returns a tree, but does not name parameters; if the client asks for repo_url, fill that already-written address, and do not invent branch or token parameters. Success signal is seeing the directory tree, not a rewritten file. This visit reaches GitHub and leaves a clone in a hash-named temp directory; the summary says cleanup happens after processing, but evidence does not write when, or what remains on failure. Treat the temp directory as a possible side effect. A read-only tool is not zero risk.
Use cases
Case 1: See the directory tree first. For an unfamiliar public repo, call github_directory_structure first. Evidence only guarantees a tree representation; it does not write depth limits, ignore rules, or submodule behavior. If those are missing, accept the full tree or the client's truncation; do not invent a .gitignore parameter.
Case 2: Then read important files. After you know paths, use github_read_important_files to read named files. This reuses the same clone logic. Evidence does not list a default "important" set; you must give the paths. Start with README or short text; do not name a large set of unknown files first. It does not write a size cap or encoding handling; whether a huge file comes back complete is outside the existing docs.
Limits
This is a local stdio service, not a hosted read-only gateway. Without Git capability (GitPython) it cannot clone. How private repos authenticate is not written; do not treat an undocumented token environment variable as already supported. clone_repo appears in the implementation notes and lands a temp directory by URL hash; do not assume the disk will never keep a copy. Git write operations beyond the two tools are out of scope. Project page: https://github.com/adhikasp/mcp-git-ingest
The first try only uses the official uvx --from git+... command; success is seeing the official repo's directory tree.