返回市场
MCP-Git-数据导入服务器

MCP-Git-数据导入服务器

作者:adhikasp289 星标更新:2025-01-26

项目介绍

MCP Git Ingest

smithery 徽章

一个用于读取GitHub仓库结构和重要文件的Model Context Protocol (MCP)服务器。

灵感来源于gitingest

<a href="https://glama.ai/mcp/servers/un2zatig9e"><img width="380" height="200" src="https://gips2.baidu.com/it/u=111518437,1977938341&fm=3081&app=3081&f=PNG?w=760&h=400" /></a>

配置

{
    "mcpServers": {
        "mcp-git-ingest": {
            "command": "uvx",
            "args": ["--from", "git+https://github.com/adhikasp/mcp-git-ingest", "mcp-git-ingest"],
        }
    }
}

使用方法

使用mcp-client-cli

$ llm read https://github.com/adhikasp/mcp-git-ingest 并确定该代码的技术实现方式

我将帮助您理解mcp-git-ingest仓库的技术细节。首先获取目录结构,然后阅读重要文件以分析代码的工作原理。

工具调用:
  github_directory_structure
  参数:
    repo_url: https://github.com/adhikasp/mcp-git-ingest

现在,我将阅读重要文件以了解技术实现:

工具调用:
  github_read_important_files
  参数:
    repo_url: https://github.com/adhikasp/mcp-git-ingest
    file_paths: ['README.md', 'src/mcp_git_ingest/main.py', 'pyproject.toml']

让我分解一下这段代码的技术实现方式:

1. 目的:
`mcp-git-ingest`是一个设计用于帮助读取GitHub仓库结构和重要文件的Model Context Protocol (MCP)服务器。它提供了两个主要工具:
- `github_directory_structure`:返回仓库目录结构的树状表示
- `github_read_important_files`:读取并返回仓库中指定文件的内容

2. 技术实现:

a. 依赖项:
- 使用`fastmcp`创建MCP服务器
- 使用`gitpython`进行Git仓库操作
- 需要Python 3.8+

b. 主要函数:

`clone_repo(repo_url: str) -> str`:
- 根据仓库URL的哈希值创建一个确定性的临时目录
- 检查仓库是否已经克隆
- 如果没有,则克隆仓库
- 处理错误情况和清理
- 返回克隆仓库的路径

`get_directory_tree(path: str, prefix: str = "") -> str`:
- 递归生成树状目录结构
- 跳过`.git`目录
- 使用Unicode框绘字符创建视觉树表示
- 处理条目排序

`github_directory_structure(repo_url: str) -> str`:
- 克隆仓库
- 生成目录树
- 在处理后清理临时仓库
- 返回树结构或错误消息

`github_read_important_files(repo_url: str, file_paths: List[str]) -> dict[str, str]`:
- 克隆仓库
- 读取指定文件
- 返回一个映射文件路径到其内容的字典
- 处理文件读取错误
- 清理临时仓库

3. 错误处理:
- 使用try-except块处理仓库克隆、文件读取错误
- 使用`finally`块确保始终清理临时目录
- 返回描述性错误消息

4. 性能优化:
- 使用基于哈希的临时目录命名以可能重用克隆的仓库
- 在克隆之前检查现有仓库
- 实现清理以防止临时文件积累

5. 独特特性:
- 确定性的临时目录创建
- Unicode树表示
- 带有错误处理的灵活文件读取

6. 执行:
- 可通过`mcp-git-ingest`作为CLI工具运行
- 通过`pyproject.toml`配置
- 依赖于`fastmcp`提供MCP服务器功能

该代码是一个强大的、灵活的工具,用于程序化地探索和读取GitHub仓库,重点在于错误处理和干净的实现。

您希望我进一步解释实现的任何特定方面吗?