Moved to: https://github.com/doc-scout/mcp-server
DocScout MCP
给你的人工智能助手一张你整个GitHub组织的可靠地图。
一 主控程序 用Go编写的服务器,不断扫描你的GitHub组织,从清单和文档中构建持久的知识图,并将其暴露给Claude、Cursor、Copilot、Gemini CLI和任何其他兼容MCP的AI——没有幻觉。
    
______________________________________________________________________
问题
你的AI助手对你的内部服务一无所知。每次你问 _“哪些团队拥有支付服务?”_ 或 _“如果我取下数据库,会有什么问题?”_,也 产生幻觉 或 燃烧代币 扫描数十个repos。
DocScout MCP通过预先计算答案图并在MCP上确定性地提供答案图来解决这个问题。
______________________________________________________________________
运作原理
graph LR
GH["GitHub Org\n(repos, manifests, docs)"]
S["Scanner\n(concurrent, retry-safe)"]
P["Parsers\ngo.mod · pom.xml · package.json\nCODEOWNERS · catalog-info.yaml\nDockerfile · Helm · Terraform · OpenAPI"]
G["Knowledge Graph\nSQLite · PostgreSQL"]
AI["AI Clients\nClaude · Cursor · Copilot · Gemini"]
GH -->|"GitHub API + Webhooks"| S
S --> P
P -->|"entities + relations"| G
G -->|"23 MCP tools"| AI- 扫描 --抓取组织中的每个仓库:文档、清单、基础设施文件和根工具文件。在可配置的时间间隔内重复,并对GitHub webhooks做出反应以进行即时更新。
- 解析 --从中提取服务、所有者、依赖关系和关系
go.mod,pom.xml,package.json,CODEOWNERS,catalog-info.yaml以及更多。 - 图 --将所有内容作为实体和关系持久化在SQLite或PostgreSQL中,在重启后幸存下来。
- 回答 --AI客户端通过23个MCP工具查询图形。没有文件读取循环,没有令牌浪费,没有猜测。
______________________________________________________________________
为什么选择DocScout?
| 方法 | 准确性 | 令牌成本 | 设置 |
|---|---|---|---|
| 人工智能读取原始文件 | 容易产生幻觉 | 约27000/个问题 | 无 |
| 后台目录 | 高(手动) | 中 | 重(井下) |
| DocScout MCP | 已验证(F1 1.00) | ~290/个问题 | 5分钟 |
DocScout从您的存储库中预先计算答案图,因此您的AI永远不会读取文件来回答架构问题。看 基准测试/RESULTS.md 方法论。
在行动中看到它
_“如果我关闭会发生什么 component:db?哪些系统脱机,我该通知谁?"_→ search_nodes("component:db")
Found: component:db — incoming edge: payment-service depends_on
→ open_nodes(["payment-service"])
Entity: payment-service (service)
Observations: _source:go.mod, go_version:1.26, _scan_repo:myorg/payment-service
→ search_nodes("payments-team")
Entity: payments-team (team)
Observations: github_handle:@myorg/payments-team
Relations: payments-team → owns → payment-service
Claude: "Shutting down component:db will impact payment-service.
Notify @myorg/payments-team. No other services have a direct dependency."AI的答案来自 已验证的图形事实 --不是文件命名约定或猜测。
______________________________________________________________________
快速开始
1.获得细粒度的GitHub PAT
首选 GitHub→ 设置→ 开发人员设置→ 细粒度代币. 授予 只读 访问 Contents 和 Metadata 对于您组织的存储库。
2.添加到您的AI客户端
Claude CLI(推荐):
claude mcp add --transport stdio \
--env GITHUB_TOKEN=github_pat_... \
--env GITHUB_ORG=my-org \
docscout-mcp -- go run github.com/doc-scout/mcp-server@latest或者在本地构建并运行:
git clone https://github.com/doc-scout/mcp-server
cd mcp-server
GITHUB_TOKEN="github_pat_..." GITHUB_ORG="my-org" go run .Docker:
docker run -i \
-e GITHUB_TOKEN="github_pat_..." \
-e GITHUB_ORG="my-org" \
ghcr.io/doc-scout/mcp-server:latest3.提问
_“哪些服务依赖于计费库?”_ _“谁拥有结账服务?”_ _“使用Helm图表列出所有repos。”_ _“哪些Go服务直接依赖于pgx?”_
______________________________________________________________________
MCP工具(23)
| 类别 | 工具 | 它的作用 |
|---|---|---|
| 扫描仪 | list_repos | 所有带有索引文件的存储库,可按类型筛选 |
search_docs | 搜索文件路径和仓库名称 | |
get_file_content | 任何索引文件的原始内容(路径遍历保护) | |
get_scan_status | 扫描仪状态、上次扫描时间、缓存大小 | |
trigger_scan | 立即排队进行完整扫描,无需等待下一个间隔 | |
search_content | 在缓存文档中进行全文搜索(SCAN_CONTENT=true) | |
| 知识图谱 | create_entities | 向图中添加节点 |
create_relations | 在节点之间添加有向边 | |
add_observations | 将事实附加到现有实体 | |
update_entity | 重命名实体或原子性地更改其类型 | |
read_graph | 返回完整图形 | |
list_entities | 列出所有实体,可选择按类型筛选 | |
list_relations | 按类型和/或源实体筛选的列表关系 | |
search_nodes | 按名称、类型或观察进行搜索 | |
open_nodes | 检索实体及其关系 | |
traverse_graph | BFS遍历:影响分析、依赖链 | |
find_path | 两个实体之间的最短连接路径 | |
get_integration_map | 一次呼叫中服务的完全集成拓扑 | |
delete_entities | 删除实体(>10需要 confirm: true) | |
delete_observations | 删除具体事实 | |
delete_relations | 删除特定边 | |
| 可观测性 | get_usage_stats | 每次工具调用计数+最常获取的前20个文档 |
| 语义搜索 | semantic_search | 自然语言向量搜索(需要嵌入提供者) |
______________________________________________________________________
扫描的内容
根级别清单 (提取到知识图中):
| 文件 | 提取 |
|---|---|
catalog-info.yaml | 后台实体、生命周期、所有者、关系 |
go.mod | 模块路径、Go版本、直接依赖关系 |
package.json | 包名称、版本、运行时依赖关系 |
pom.xml | Maven工件、版本、编译/运行时deps |
CODEOWNERS | 每个回购的团队和个人所有权 |
Dockerfile, Makefile, docker-compose.yml, .mise.toml | 工具存在 |
README.md, openapi.yaml, swagger.json | 文档界面 |
递归目录: docs/ 和 .agents/ (.md 文件)· deploy/, infra/, .github/workflows/ (Helm、Terraform、K8s、工作流)
______________________________________________________________________
密钥配置
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
GITHUB_TOKEN | ✅ | — | 细粒度PAT(只读 Contents + Metadata) |
GITHUB_ORG | ✅ | — | GitHub组织或用户名 |
SCAN_INTERVAL | ❌ | 30m | 重新扫描间隔(10s, 5m, 1h) |
DATABASE_URL | ❌ | 内存SQLite | sqlite://path.db 或 postgres://... |
HTTP_ADDR | ❌ | — | 在此地址启用HTTP传输(例如。 :8080) |
SCAN_CONTENT | ❌ | false | 缓存文件内容以进行全文搜索 |
GITHUB_WEBHOOK_SECRET | ❌ | — | 启用推送事件的增量扫描 |
看 完整环境变量引用 适用于所有选项,包括SCAN_FILES,SCAN_DIRS,REPO_TOPICS,REPO_REGEX,EXTRA_REPOS以及更多。
______________________________________________________________________
AI客户端设置
| 客户 | 指南 |
|---|---|
| 克劳德桌面/CLI | docs/claude.md |
| VS代码(副驾驶聊天) | docs/vscode.md |
| GitHub副本 | docs/copilot.md |
| 反重力(谷歌) | docs/antigravity.md |
| Gemini CLI | docs/gemini.md |
| ChatGPT桌面 | docs/chatgpt.md |
______________________________________________________________________
架构与安全
- 路径遍历保护:只有经过扫描仪验证的文件才能访问。AI无法读取任意文件。
- STDIO安全:从来没有写过任何文本
stdout。所有日志都转到stderrJSON-RPC流的损坏在设计上是不可能的。 - 利率限制弹性:每个GitHub API调用都使用智能的指数退避
Retry-After处理。 - 图形完整性:观察结果在储存前经过消毒。大规模删除(>10个实体)需要明确确认。
- 审核日志:每个图突变都会发出一个结构化的
slog行到stderr。
如需深入了解,请参阅 运作原理.
______________________________________________________________________
路线图
看 ROADMAP.md 已完成的功能和即将进行的工作,包括:
- 语义搜索与RAG --矢量嵌入通过
pgvector - 自定义解析器扩展 --无需分叉即可插入新的清单格式
- 集成拓扑发现 --配置文件中的Kafka、gRPC、HTTP调用图
- 多云适配器 --GitLab、Bitbucket、Confluence
- 文档维基(gh页面) --将详细指南移至专用的GitHub Pages网站
______________________________________________________________________
贡献
# Install dependencies
go mod tidy
# Build
go build -o docscout-mcp .
# Test (unit + E2E integration)
go test ./...查看 开发指南 和 AGENTS.md 在提交PR之前。
______________________________________________________________________
许可证
GNU AGPL v3
免责声明
本软件按“原样”提供,不提供任何形式的保修。人工智能生成的输出取决于索引的存储库数据——在对其采取行动之前,请务必进行验证。请参阅 免责声明.md 了解全部细节。
