mcpField
M
mcp-digger

mcp-digger

本地服务
github.com开发工具023 周前更新

关于 mcp-digger

mcp-digger 是一款 MCP 服务,为 AI 编码 Agent 提供渐进式的 .NET NuGet 仓库源码访问。它专注于 C# 索引,并以分层工具支持从包概览到单个文件的查阅,托管克隆不会放入工作区。

主要功能

  1. 01索引 .NET 与 NuGet 源码仓库
  2. 02发现仓库和程序包
  3. 03搜索符号、实现与引用
  4. 04查看公共 API 签名
  5. 05读取单个源文件
  6. 06刷新索引并检查仓库状态

适用场景

  1. 01编码时查询私有 C# 库 API
  2. 02跨配置程序包追踪类型
  3. 03先查看签名再读取完整源码
  4. 04仓库变更后刷新索引

MCP 相关

mcp-digger 向 MCP 客户端提供 10 种工具,用于查看仓库状态、发现程序包、搜索符号、检查签名、读取源码和维护索引。它仅面向包含 `.csproj` 程序包和 `.cs` 文件的 .NET/C# 仓库。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"janeksm-mcp-digger": {
"command": "npx",
"args": [
"-y",
"mcp-digger"
]
}
}
}
启动命令npx -y mcp-digger

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-digger1.1.3

工具

2

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

mcp-digger

为 AI 编码 Agent 提供代码上下文。 按需渐进式访问内部 .NET / NuGet 包源码——Agent 可自主浏览、搜索和读取私有 C# 库,且不会污染工作区。

⚠ 范围:仅限 .NET / C#。 mcp-digger 为包含 .csproj 包和 .cs 源文件的 NuGet 风格仓库建立索引。它不是通用源代码索引工具——其他语言(TypeScript、Python、Java、Go 等)不在支持范围内。


✨ 为什么使用

公共 NuGet 包拥有完善的文档生态——API 参考、教程和社区问答。context7 等工具很适合处理这类内容。

内部 .NET 包通常以源代码作为主要文档。mcp-digger 将这些源代码转换为结构化、可搜索且节省 token 的上下文,供任何兼容 MCP 的 Agent 使用,从而弥补私有 C# 库生态中的文档缺口。

没有它:

  • 🐢 收集上下文速度慢 — git clone + find + grep + cat 的命令链会在获取有用上下文之前,就把 token 消耗在基础设施操作上。
  • 🔍 无法语义搜索 — 文件系统工具只能查找文本,无法查找 API 接口。“实现这个接口的所有类型”意味着要临时编写提取脚本。
  • 💸 浪费 token — 只需一个方法签名,Agent 却要读取整个文件。
  • 🖱 频繁点击授权 — 每个会话都要批准数十条 Shell 命令。
  • 🧹 工作区杂乱 — 引用的仓库会污染文件搜索、Git 状态和 Agent 的上下文窗口。

使用它:

  • ✅ 首次尝试就获得正确代码 — 真实签名、泛型约束、接口契约和基类模式。
  • ⚡ 自主获取上下文 — 只需让 Agent 指向 NuGet 仓库一次;它便可自主浏览、搜索和读取。
  • 🪙 渐进式披露 — 先查看 200 个 token 的概述,再深入阅读 5,000 个 token 的源码。大多数问题在 L1 或 L2 就能解决。
  • 🧼 工作区零污染 — 托管克隆位于项目树之外。
  • 🌐 支持任何 Git 托管平台 — GitHub、GitLab、Azure DevOps、Bitbucket、自托管平台——支持 HTTPS 或 SSH。

🛠 工作原理

十个专用工具,按由浅入深的顺序排列。Agent 会选择能回答问题且成本最低的工具。

                                                           ┌─→ 📦 dig_package_overview ─┐
                                                           │   (docs, key types)        │
   🩺 dig_status  →  📋 dig_list  →  📖 dig_repo_overview  ┤                            ├─→  🔎 dig_lookup     →  📄 dig_file
   (health)          (discover)      (README + summaries)  │                            │   (symbol → file)       (full source)
                                                           ├─→ 📁 dig_package_files ────┤
                                                           │   (file listing)           │
                                                           └────────────────────────────┴─→  📝 dig_signatures
                                                                                            (stripped API)

   Operational:  🔄 dig_refresh   (force cache invalidation, on demand)
   Bootstrap:    🌱 dig_init      (only when no config exists)

🧰 工具(10 个)

层级工具功能
健康状态🩺 dig_status配置摘要、每个仓库的连接检查、索引健康统计
发现📋 dig_list列出已配置的仓库及其包,并提供单行 .csproj 摘要
L1 概述📖 dig_repo_overview仓库 README.md(筛选架构相关章节)+ 包数量
L1 概述📦 dig_package_overview包文档、关键接口、抽象类、文件数量
L1 概述📁 dig_package_files列出包中的 .cs 文件,并附带目录摘要标题
L2 搜索🔎 dig_lookup已索引的符号搜索——支持 symbol、implements 或 references 模式。支持跨包搜索。
L2 搜索📝 dig_signatures按关键词筛选的 C# 公共 API 表面(不含方法体)
L3 源码📄 dig_file单个文件的完整源码(上限为 1 MB)
运维🔄 dig_refresh强制重建一个或所有仓库的缓存
引导🌱 dig_init创建初始 .digger/config.json(仅在未找到配置时注册)

dig_lookup 的搜索模式:

模式查找内容
symbol(默认)名称子字符串匹配的类型/方法声明
implements实现接口或扩展基类的类/结构体
references引用了给定类型名称的文件(按单词边界匹配,区分大小写)

🚀 快速开始

安装
npm install -g mcp-digger
# or run directly
npx mcp-digger

需要 Node.js 20+、PATH 中可用的 git,以及 .NET / C# 源码仓库(包含 .csproj 和 .cs 源文件的 NuGet 包)。

最简配置

在工作区根目录创建 .digger/config.json:

{
  "repos": [
    {
      "name": "my-libraries",
      "url": "https://github.com/org/shared-libs.git",
      "packageFilter": "MyCompany.*",
      "auth": {
        "strategy": "pat",
        "PAT-EnvVarName": "GIT_PAT"
      }
    }
  ]
}

还没有配置文件?启动服务,然后调用 dig_init 来生成初始配置。

Agent 设置
Claude Code

添加到 .claude/settings.json 或项目设置中:

{
  "mcpServers": {
    "digger": {
      "command": "npx",
      "args": ["-y", "mcp-digger"]
    }
  }
}
Codex CLI

添加到 ~/.codex/config.toml(或项目级的 .codex/config.toml):

[mcp_servers.mcp-digger]
command = "npx"
args = ["-y", "mcp-digger"]
Claude Desktop

添加到 claude_desktop_config.json:

  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "digger": {
      "command": "npx",
      "args": ["-y", "mcp-digger"]
    }
  }
}
VS Code

添加到 .vscode/mcp.json(工作区)或用户级 mcp.json:

{
  "servers": {
    "digger": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-digger"]
    }
  }
}
Cursor

添加到 .cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局):

{
  "mcpServers": {
    "digger": {
      "command": "npx",
      "args": ["-y", "mcp-digger"]
    }
  }
}
验证

连接后,让你的 Agent 调用 dig_status——它会报告配置验证结果、各仓库的连接状态和索引健康状况。


⚙ 配置

仓库和包

repos[] 条目有三种声明包的方式:

选项行为
"packages": ["A", "B"]显式列表——这些包,以及它们通过 <ProjectReference> 引入的任何本地同级项目(传递依赖,仅限同级项目)。
"packageFilter": "MyCompany.*"通配符——通过扫描工作区中的 .sln/.slnx/Directory.Packages.props,筛选出匹配此前缀的包。自动跟踪传递性的 ProjectReference 链接。
(省略两者)自动发现 sourceRoot 下所有非测试 .csproj 目录(递归扫描,支持嵌套布局)。

sourceRoot 默认为 "src"——将其设为存放包目录的目录。扫描会递归进行,因此也会找到 src/Group/Foo/Foo.csproj 这样的嵌套布局。

分支跟踪

默认情况下,托管克隆使用仓库的默认分支。若要固定到特定分支:

{
  "repos": [
    {
      "name": "my-libraries",
      "url": "https://github.com/org/shared-libs.git",
      "branch": "develop"
    }
  ]
}

该分支既用于初始克隆,也用于后续获取。此设置仅适用于托管克隆——对于本地仓库,需自行控制当前检出的分支。

本地仓库(模式 B)

如果仓库已存在于磁盘上,可跳过托管克隆。本地路径为只读——mcp-digger 不会获取或修改它。

{
  "localRepos": {
    "my-libraries": "C:/repos/shared-libs"
  },
  "repos": [
    {
      "name": "my-libraries",
      "sourceRoot": "src"
    }
  ]
}
身份验证策略
策略行为
auto (默认)尝试不进行身份验证;如果已设置 PAT,则回退到 PAT
pat始终使用 PAT(未设置时会报致命错误)
none始终不进行身份验证

PAT 可以直接填写("PAT": "..."),也可以通过环境变量间接指定("PAT-EnvVarName": "MY_TOKEN")。工作区根目录中的 .env 文件会自动加载——包含 # 的值应加引号。

环境变量
变量默认值用途
DIGGER_CONFIG.digger/config.json覆盖配置文件路径
MANAGED_SOURCE_DIR.digger/source覆盖托管克隆目录
CACHE_DIR.digger/cache覆盖缓存目录

密钥(PAT 值)应放在 .env 文件或实际环境中——切勿将其作为此表中的环境变量。


🩺 诊断与恢复

症状首次调用然后
连接/身份验证问题dig_status报告身份验证尝试、具体错误和可操作的提示
显示“没有匹配项”,但你预计会有结果dig_refresh <repo>强制重建索引,并应用新的提取逻辑
服务已启动,但看不到任何工具dig_status如果尚未配置,只会注册 dig_status 和 dig_init
需要从头开始创建配置dig_init创建 .digger/config.json 脚手架(以原子方式操作,不会覆盖现有文件)
调试日志

在配置中启用调试日志:

{ "debug": true, "repos": [...] }

日志写入 .digger/debug.log(上限为 5 MB,并会自动截断)。严重错误和崩溃输出会写入 .digger/error.log。


💬 反馈

在你的代码库上试用了 mcp-digger?欢迎在 GitHub Discussions 分享哪些功能有效、哪些出了问题,以及还缺少什么。错误报告请提交至 Issues。


📜 许可证

MIT 许可证 — 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。