Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adhikasp/mcp-git-ingest
A Model Context Protocol (MCP) server that helps read GitHub repository structure and important files.
https://github.com/adhikasp/mcp-git-ingest
git llm mcp model-context-protocol
Last synced: 7 days ago
JSON representation
A Model Context Protocol (MCP) server that helps read GitHub repository structure and important files.
- Host: GitHub
- URL: https://github.com/adhikasp/mcp-git-ingest
- Owner: adhikasp
- License: mit
- Created: 2024-12-15T06:36:38.000Z (29 days ago)
- Default Branch: master
- Last Pushed: 2024-12-27T15:57:43.000Z (17 days ago)
- Last Synced: 2024-12-27T16:33:50.458Z (17 days ago)
- Topics: git, llm, mcp, model-context-protocol
- Language: Python
- Homepage:
- Size: 9.77 KB
- Stars: 11
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MCP Git Ingest
A Model Context Protocol (MCP) server that helps read GitHub repository structure and important files.
Inspired by [gitingest](https://gitingest.com/).
## Configuration
```json
{
"mcpServers": {
"mcp-git-ingest": {
"command": "uvx",
"args": ["--from", "git+https://github.com/adhikasp/mcp-git-ingest", "mcp-git-ingest"],
}
}
}
```## Usage
Using [mcp-client-cli](https://github.com/adhikasp/mcp-client-cli):
```
$ llm read https://github.com/adhikasp/mcp-git-ingest and determine how the code technically worksI'll help you understand the technical details of the mcp-git-ingest repository. I'll first fetch the directory structure and then read the important files to analyze how the code works.
Tool Calls:
github_directory_structure
Args:
repo_url: https://github.com/adhikasp/mcp-git-ingestNow, I'll read the important files to understand the technical implementation:
Tool Calls:
github_read_important_files
Args:
repo_url: https://github.com/adhikasp/mcp-git-ingest
file_paths: ['README.md', 'src/mcp_git_ingest/main.py', 'pyproject.toml']Let me break down how this code technically works:
1. Purpose:
The `mcp-git-ingest` is a Model Context Protocol (MCP) server designed to help read GitHub repository structures and important files. It provides two main tools:
- `github_directory_structure`: Returns a tree-like representation of a repository's directory structure
- `github_read_important_files`: Reads and returns the contents of specified files in a repository2. Technical Implementation:
a. Dependencies:
- Uses `fastmcp` for creating an MCP server
- Uses `gitpython` for Git repository operations
- Requires Python 3.8+b. Key Functions:
`clone_repo(repo_url: str) -> str`:
- Creates a deterministic temporary directory based on the repository URL's hash
- Checks if the repository is already cloned
- If not, clones the repository
- Handles error cases and cleanup
- Returns the path to the cloned repository`get_directory_tree(path: str, prefix: str = "") -> str`:
- Recursively generates a tree-like directory structure
- Skips `.git` directories
- Uses Unicode box-drawing characters to create a visual tree representation
- Handles sorting of entries`github_directory_structure(repo_url: str) -> str`:
- Clones the repository
- Generates directory tree
- Cleans up the temporary repository after processing
- Returns the tree structure or an error message`github_read_important_files(repo_url: str, file_paths: List[str]) -> dict[str, str]`:
- Clones the repository
- Reads specified files
- Returns a dictionary mapping file paths to their contents
- Handles file reading errors
- Cleans up the temporary repository3. Error Handling:
- Uses try-except blocks to handle repository cloning, file reading errors
- Ensures temporary directories are always cleaned up using `finally` blocks
- Returns descriptive error messages4. Performance Optimizations:
- Uses a hash-based temporary directory naming to potentially reuse cloned repositories
- Checks for existing repositories before cloning
- Implements cleanup to prevent accumulation of temporary files5. Unique Features:
- Deterministic temporary directory creation
- Unicode tree representation
- Flexible file reading with error handling6. Execution:
- Can be run as a CLI tool via `mcp-git-ingest`
- Configured through `pyproject.toml`
- Depends on `fastmcp` for MCP server functionalityThe code is a robust, flexible tool for programmatically exploring and reading GitHub repositories, with a focus on error handling and clean implementation.
Would you like me to elaborate on any specific aspect of the implementation?
```