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嵌入, 逆向工具