taggedzi/Repo-Interrogator
GitHub: taggedzi/Repo-Interrogator
一个本地优先的 MCP 服务器,通过文件索引、确定性搜索和代码结构概述帮助 AI 工具高效理解大型代码仓库。
Stars: 1 | Forks: 0
# Repo Interrogator
Repo Interrogator 是一个本地优先、确定性的 MCP server,可帮助 AI 工具安全地检查单个代码仓库。
它用于代码仓库查询,而不是代码修改。
它能做什么:
- 索引某个 `repo_root` 内的文件
- 运行确定性的 BM25 搜索
- 通过可插拔的语言适配器概述代码结构
- 构建带有引用的上下文包 (context bundle)
- 编写经过净化的审计日志
它不能做什么:
- v1 版本不进行 LLM 调用
- 不进行代码写入或修补
- 不进行多仓库路由
- v1 版本不支持 HTTP/SSE 传输
## 支持的环境
- Python: `>=3.11`
- 本项目测试环境:Linux 和 WSL 路径,并带有明确的 Windows 路径规范化测试
- 预期运行环境:Linux、macOS、Windows(使用 Python 3.11+)
## 快速开始
1. 克隆此仓库并进入该目录:
```
git clone https://github.com/taggedzi/Repo-Interrogator
cd repomap
```
2. 安装(终端用户方式):
```
python -m pip install .
```
这会安装控制台命令 `repo-mcp`。
3. 针对本地仓库运行:
```
repo-mcp --repo-root /absolute/path/to/target/repo
```
该服务器使用 STDIO。它等待换行符分隔的 JSON 请求,并写入换行符分隔的 JSON 响应。
4. 验证其响应:
```
printf '%s\n' \
'{"id":1,"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}' \
'{"id":2,"jsonrpc":"2.0","method":"tools/call","params":{"name":"repo.status","arguments":{}}}' \
| repo-mcp --repo-root /absolute/path/to/target/repo
```
你应该会收到两行 JSON-RPC 2.0 响应(通知不会产生输出):
- 第 1 行:`initialize` 结果 — `{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05",...}}`
- 第 2 行:工具结果 — `{"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"{\"index_status\":...}"}]}}`
## 开发者快速开始
```
python -m venv .venv
source .venv/bin/activate
python -m pip install -e .
python -m pip install ruff mypy pytest build
```
运行检查:
```
python -m ruff format .
python -m ruff check .
python -m mypy src
python -m pytest -q
```
## 工具接口(当前)
- `repo.status`
- `repo.list_files`
- `repo.open_file`
- `repo.outline`
- `repo.search`
- `repo.references`
- `repo.find_definition`
- `repo.build_context_bundle`
- `repo.refresh_index`
- `repo.audit_log`
## 可选的语义搜索
安装 `semantic` 扩展(`pip install repo-interrogator[semantic]`)以在
`repo.search` 上启用 `mode="semantic"`/`"hybrid"`,并在
`repo.build_context_bundle` 上启用 `retrieval_mode`。核心包没有任何运行时依赖,在未安装此扩展时不受影响。有关详细信息,请参阅 `ADR-0018` 和 `docs/USAGE.md`。
## 语言适配器支持
`repo.outline` 目前支持以下适配器:
- Python: `python` (基于 AST)
- TypeScript/JavaScript: `ts_js_lexical` (词法分析)
- Java: `java_lexical` (词法分析)
- Go: `go_lexical` (词法分析)
- Rust: `rust_lexical` (词法分析)
- C++: `cpp_lexical` (词法分析)
- C#: `csharp_lexical` (词法分析)
- 回退:`lexical` (针对不支持文件的结构化大纲为空)
重要限制:
- 非 Python 适配器均为词法分析。它们是确定且快速的,但也相对保守。
- 宏/生成代码和高级语言特性可能只能部分呈现。
- 搜索、引用和上下文包的覆盖范围取决于已索引的扩展名/排除项。
- 从 `examples/repo_mcp.toml` 开始,了解针对特定技术栈的包含/排除默认值和覆盖指南。
## 文档
- 安装:`docs/INSTALL.md`
- 使用方法及请求/响应示例:`docs/USAGE.md`
- 配置与限制:`docs/CONFIG.md`
- AI 客户端集成(基于 STDIO 的 MCP):`docs/AI_INTEGRATION.md`
- 故障排除:`docs/TROUBLESHOOTING.md`
- Issue 标签和分类流程:`docs/TRIAGE.md`
- 安全策略与漏洞报告:`SECURITY.md`
- 安全模型与受限行为:`docs/SECURITY.md`
- 发布流程:`docs/release.md`
## 文档验证清单
运行这些命令以根据当前代码库验证文档示例:
```
python -m ruff format .
python -m ruff check .
python -m mypy src
python -m pytest -q
# 快速 server smoke
printf '%s\n' \
'{"id":1,"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0"}}}' \
'{"id":2,"jsonrpc":"2.0","method":"tools/call","params":{"name":"repo.status","arguments":{}}}' \
| python -m repo_mcp.server --repo-root .
```
标签:BM25搜索, MCP服务器, SOC Prime, 人工智能辅助, 代码分析, 代码索引, 凭证管理, 开发工具, 自动化payload嵌入, 逆向工具