代码导航工具

Scout是一个MCP代码导航工具,允许Claude等LLM浏览、搜索和理解代码库,无需手动复制粘贴文件内容。

  • by MayankSethi27
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MayankSethi27/scout

使用说明

Scout-MCP代码导航器

赋予Claude实际阅读、搜索和理解任何代码库的能力。

适用于: 克劳德桌面·克劳德代码CLI·任何兼容MCP的代理


问题

当您与Claude或任何LLM共享GitHub URL时,它只能看到README,可能是其训练数据中的几个文件。它无法浏览目录结构、搜索函数定义或读取特定文件。对于任何关于代码如何工作的真正问题,您最终都会手动将文件内容复制并粘贴到聊天中,这在大型代码库上完全崩溃。

Scout解决了这个问题。这是一个 MCP服务器 这为Claude提供了与开发人员探索不熟悉的代码库相同的工具:浏览结构、搜索模式、读取特定文件。


为什么不直接使用[X]?

为什么不使用GitHub CLI(gh)?

gh 管理 存储库——拉取请求、问题、发布、机密。侦察兵 读取 代码。它们解决了完全不同的问题:

gh CLI 侦察员
目的 通过GitHub API管理repos 在本地导航和阅读代码
代码搜索 无正则表达式搜索 跨整个代码库的ripgrep
私有仓库 需要GitHub身份验证令牌 使用您现有的git凭据
速率限制 GitHub API限制 无-完全在本地运行
MCP服务器 否 是--克劳德自主调用它
仅本地存储库 否 是

为什么不使用Claude内置的“从GitHub添加”功能?

Claude的聊天UI可以将repo拉入上下文,但它有硬限制:

  • 在任何中型/大型回购中达到上下文窗口限制
  • 一次加载所有内容,无需进行增量的“查看此文件”探索
  • 无需在代码库中搜索正则表达式
  • 不适用于Claude Code CLI或程序化使用
  • 克劳德不能要求 更多 如果需要深入挖掘,请编写代码

Scout让Claude以开发人员的方式浏览代码——增量浏览结构、搜索模式和只读取相关文件。

为什么不使用GitHub Copilot的代码库索引?

Copilot使用嵌入/向量搜索对代码库进行索引,这意味着:

  • 在搜索之前,您需要等待索引
  • 结果是语义近似,而不是精确匹配
  • 无行号精度
  • 与Copilot生态系统紧密相连

Scout使用直接文件访问+ripgrep。零索引等待。正则表达式与行号完全匹配。使用任何MCP兼容代理在任何地方的任何仓库上工作。

为什么不直接将代码粘贴到聊天中呢?

这适用于小文件。它在以下情况下会崩溃:

  • 该仓库有50多个相关文件
  • 你还不知道哪些文件是相关的
  • 你需要的功能埋在4个目录深处
  • 在找到答案之前,您已达到上下文窗口限制

Scout让克劳德先搜索,然后只阅读相关内容。


特性

  • 没有API密钥 --完全在您的机器上运行
  • 无索引 --立即开始探索,零设置等待
  • 快速搜索 --ripgrep支持正则表达式,可跨100000多个文件代码库
  • 私有仓库 --使用您现有的git凭据
  • GitHub URL支持 --首次使用时浅层克隆任何公共或私有仓库
  • 20+语言 --Python、JS、TS、Go、Rust、Java、C++、Ruby等
  • 轻量级 --6个依赖项,约500行核心逻辑
  • 双模式 --stdio用于克劳德桌面/CLI,HTTP用于团队/共享使用

快速开始

步骤1:安装

pip install pipx && python -m pipx ensurepath
# Close and reopen your terminal

pipx install scout-code-navigator

第二步:联系克劳德

克劳德桌面版

打开配置文件:

操作系统 路径
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
窗户 %APPDATA%\Claude\claude_desktop_config.json
Linux ~/.config/claude/claude_desktop_config.json

添加服务器:

{
  "mcpServers": {
    "scout": {
      "command": "scout",
      "args": []
    }
  }
}

重新启动克劳德桌面。完成。

克劳德代码CLI

claude mcp add scout -s user -- scout

这 -s user flag在全局范围内注册它——在任何项目目录中都有效。

验证

  • 克劳德桌面: 在聊天界面中查找工具图标(锤子)
  • 克劳德代码CLI: 跑 /mcp 并确认 scout 显示为已连接

工具

Claude会根据您的问题自动调用这些:

工具 当克劳德使用它时
repo_overview 首先查看任何repo——树、README、检测到的堆栈、文件计数
list_directory 钻取特定子目录
search_code 查找定义或使用函数/类/模式的位置
read_file 读取特定文件,可选地仅读取一行范围
find_files 按名称模式查找文件(例如,全部 *.test.ts 文件)

用法

连接后,只需与Claude讨论代码:

"Analyze https://github.com/pallets/flask and explain how routing works"

"How does authentication work in this codebase?"

"Find all the database models in https://github.com/django/django"

"Where is the rate limiting logic implemented?"

"Explore my local project at /path/to/my/project and summarize the architecture"

Claude将逐步调用这些工具——浏览结构、搜索模式、读取相关文件——然后解释它发现了什么。


运作原理

You ask: "How does routing work in this Flask app?"
                    |
                    v
Claude calls tools in sequence:
┌────────────────────────────────────────────────────────┐
│ 1. repo_overview  → directory tree + README + stack    │
│ 2. search_code    → ripgrep for "def route", "@app."   │
│ 3. read_file      → read matching files at line ranges │
└────────────────────────────────────────────────────────┘
                    |
                    v
Claude explains the actual code to you

没有嵌入。没有矢量数据库。无索引步骤。只需直接文件访问和正则表达式搜索——经验丰富的开发人员使用的相同方法,通过MCP提供给Claude。


配置

创建一个 .env 工作目录中的文件以覆盖默认值:

# Repository cloning (GitHub URLs only — local repos need nothing)
REPO_STORAGE_PATH=~/.scout/repos   # Where cloned repos are cached
REPO_CACHE_TTL_HOURS=24            # How long before re-cloning
REPO_CLONE_TIMEOUT_SECONDS=300     # Max time to wait for a clone

# HTTP Server mode only
SERVER_HOST=0.0.0.0
SERVER_PORT=8000

私有仓库

Scout使用您系统的git凭据——在您的终端中工作的任何东西都可以在Scout中工作。

# Option 1: GitHub CLI (recommended)
gh auth login

# Option 2: SSH key (if already set up, nothing extra needed)

# Option 3: Credential helper
git config --global credential.helper store

HTTP服务器模式

对于共享团队使用,请将Scout作为HTTP服务器而不是本地stdio进程运行:

# Start the server
scout-http
# Runs on http://localhost:8000
# API docs at http://localhost:8000/docs

将Claude Code CLI连接到它:

claude mcp add --transport http scout http://localhost:8000

HTTP服务器通过以下方式向stdio服务器公开相同的功能——相同的5个工具,相同的行为 POST 端点。


故障排除

“找不到命令:侦察”

Python的Scripts目录不在您的PATH中。使用 pipx (它自动处理PATH):

pipx install scout-code-navigator

或者完全绕过PATH:

{
  "mcpServers": {
    "scout": {
      "command": "python",
      "args": ["-m", "mcp_stdio_server"]
    }
  }
}

“搜索速度慢”

Scout在可用时使用ripgrep,在不可用时回退到Python搜索。为了获得最佳性能,请安装ripgrep:

brew install ripgrep          # macOS
apt install ripgrep           # Ubuntu/Debian
scoop install ripgrep         # Windows
winget install BurntSushi.ripgrep  # Windows (alternative)

“私有仓库克隆失败”

跑 gh auth login 或者确保您的SSH密钥已设置并测试 git clone <url> 首先在你的终端。


发展

git clone https://github.com/MayankSethi27/scout.git
cd scout
python -m venv venv && source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -e ".[dev]"

# Run tests
pytest

# Run a single test
pytest tests/unit/test_services.py::TestSearchCode

# Format code
black . && isort .

# Run the stdio server locally
python mcp_stdio_server.py

# Run the HTTP server locally
python mcp_server.py

技术栈

  • Python 3.10+ 使用async/await
  • MCP-SDK --模型上下文协议
  • ripgrep --快速正则表达式搜索(可选,包括Python回退)
  • 快速API + Uvicorn --HTTP服务器模式
  • 派丹蒂克 --数据验证和设置

许可证

麻省理工学院——见 许可证.