An MCP server for gitingest. This allows MCP clients like Claude Desktop, Cline, Cursor, etc to quickly extract information about Github repositories including
- Repository summaries
- Project directory structure
- File content
https://github.com/user-attachments/assets/c1fa596b-a70b-4d37-91d9-ea5e80284793
Table of Contents
Installation
Installing via Smithery
-
To install gitingest-mcp via Smithery:
npx -y @smithery/cli@latest install @puravparab/gitingest-mcp --client claude --config "{}" # Claude
npx -y @smithery/cli@latest run @puravparab/gitingest-mcp --client cursor --config "{}" # Cursor
npx -y @smithery/cli@latest install @puravparab/gitingest-mcp --client windsurf --config "{}" # Windsurf
npx -y @smithery/cli@latest install @puravparab/gitingest-mcp --client cline --config "{}" # Cline
Install via Github
-
Add this to the MCP client config file
{
"mcpServers": {
"gitingest-mcp": {
"command": "<path to uv>/uvx",
"args": [
"--from",
"git+https://github.com/puravparab/gitingest-mcp",
"gitingest-mcp"
]
}
}
}
Installing Repo Manually
-
Clone the repo
git clone https://https://github.com/puravparab/Gitingest-MCP
cd Gitingest-MCP
-
Install dependencies
uv sync
-
Add this to the MCP client config file
{
"mcpServers": {
"gitingest": {
"command": "<path to uv>/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--with-editable",
"<path to gitingest-mcp project>/gitingest_mcp",
"mcp",
"run",
"<path to gitingest-mcp project>/gitingest-mcp/src/gitingest_mcp/server.py"
]
}
}
}
-
If you have issues, follow this MCP server documentation
Updating the MCP client configuration
-
Add to Claude Desktop
Open config file in your IDE
cursor ~/Library/Application Support/Claude/claude_desktop_config.json
code ~/Library/Application Support/Claude/claude_desktop_config.json
Debug
- Using mcp inspector
uv run mcp dev src/gitingest_mcp/server.py
[
{
"description": "ntGet a summary of a GitHub repository that includes ntt- Repo name, ntt- Files in repontt- Number of tokens in repontt- Summary from the README.mdnntArgs:nttowner: The GitHub organization or usernamenttrepo: The repository namenttbranch: Optional branch name (default: None)nt",
"inputSchema": {
"properties": {
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": {
"path": "uv.lock",
"type": "blob"
},
"title": "Branch"
},
"owner": {
"title": "Owner",
"type": "string"
},
"repo": {
"title": "Repo",
"type": "string"
}
},
"required": [
"owner",
"repo"
],
"title": "git_summaryArguments",
"type": "object"
},
"name": "git_summary"
},
{
"description": "ntGet the tree structure of a GitHub repositorynntArgs:nttowner: The GitHub organization or usernamenttrepo: The repository namenttbranch: Optional branch name (default: None)nt",
"inputSchema": {
"properties": {
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": {
"path": "uv.lock",
"type": "blob"
},
"title": "Branch"
},
"owner": {
"title": "Owner",
"type": "string"
},
"repo": {
"title": "Repo",
"type": "string"
}
},
"required": [
"owner",
"repo"
],
"title": "git_treeArguments",
"type": "object"
},
"name": "git_tree"
},
{
"description": "ntGet the content of specific files from a GitHub repositorynntArgs:nttowner: The GitHub organization or usernamenttrepo: The repository namenttfile_paths: List of paths to files within the repositorynttbranch: Optional branch name (default: None)nt",
"inputSchema": {
"properties": {
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": {
"path": "uv.lock",
"type": "blob"
},
"title": "Branch"
},
"file_paths": {
"items": {
"type": "string"
},
"title": "File Paths",
"type": "array"
},
"owner": {
"title": "Owner",
"type": "string"
},
"repo": {
"title": "Repo",
"type": "string"
}
},
"required": [
"owner",
"repo",
"file_paths"
],
"title": "git_filesArguments",
"type": "object"
},
"name": "git_files"
}
]