Token导航 LogoToken导航TokenDH.com
Repo Mapper logo
开发工具stdio官方级别未说明来源级核验

Repo Mapper

MCP Server

RepoMap是一款帮助大型语言模型理解和导航复杂代码库的工具,提供命令行分析和MCP服务器功能,通过Tree-sitter解析代码和PageRank算法排名代码元素。

工具数

0

提示词数

0

GitHub Stars

168

资源数

0
代码导航代码分析ClaudeClaudeCline

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

pdavis68

提供方

pdavis68

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -r requirements.txt

详细介绍

RepoMap-命令行工具和MCP服务器

RepoMap是一个强大的工具,主要用于帮助LLM理解和导航复杂的代码库。它既可以作为按需分析的命令行应用程序,也可以作为MCP(模型上下文协议)服务器,为其他应用程序提供连续的存储库映射功能。通过生成软件存储库的“映射”,RepoMap突出显示了重要文件、代码定义及其关系。它利用Tree sitter进行准确的代码解析,并利用PageRank算法按重要性对代码元素进行排名,确保始终优先考虑最相关的信息。

目录

- 基本用法 - 高级选项

- 设置 - 用法

______________________________________________________________________

教唆者

RepoMap 100%基于Aider的RepoMap功能,但我不认为它与Aider共享任何代码。请允许我解释一下。

我最初的工作是从Aider中获取RepoMap类,删除所有特定于Aider的依赖关系,然后将其转换为命令行工具。Python不是我的母语,我真的很难让它工作。

几个小时前,我有了一个不同的想法。我从aider中获取了RepoMap及其相关代码,并将其输入到LLM(Claude或Gemini 2.5 Pro,不记得了)中,让它基本上从aider的实现中为此创建规范。因此,它为这个应用程序生成了一个非常详细的规范(减去MCP位),然后我用Claude 3.7将其提供给Aider,它构建了这个应用程序的命令行版本。

然后,我使用了Aider w/Claude 3.7、Cline w/Gemini 2.5 Pro Preview和Gemini 2.5 Flash Preview以及Phind.com、Gemini.com和Claude.com以及ChatGPT.com的组合,几个小时后,我终于解决了MCP服务器的问题。请记住,Python并不是我的母语。

______________________________________________________________________

输出示例

> python repomap.py . --chat-files repomap_class.py
Chat files: ['/mnt/programming/RepoMapper/repomap_class.py']
repomap_class.py:
(Rank value: 10.8111)

  36: CACHE_VERSION = 1
  39: TAGS_CACHE_DIR = os.path.join(os.getcwd(), f".repomap.tags.cache.v{CACHE_VERSION}")
  40: SQLITE_ERRORS = (sqlite3.OperationalError, sqlite3.DatabaseError)
  43: Tag = namedtuple("Tag", "rel_fname fname line name kind".split())
  46: class RepoMap:
  49:     def __init__(
  93:     def load_tags_cache(self):
 102:     def save_tags_cache(self):
 459:     def get_ranked_tags_map_uncached(
 483:         def try_tags(num_tags: int) -> Tuple[Optional[str], int]:
 512:     def get_repo_map(

utils.py:
(Rank value: 0.2297)

  18: Tag = namedtuple("Tag", "rel_fname fname line name kind".split())
  21: def count_tokens(text: str, model_name: str = "gpt-4") -> int:
  35: def read_text(filename: str, encoding: str = "utf-8", silent: bool = False) -> Optional[str]:

importance.py:
(Rank value: 0.1149)

   8: IMPORTANT_FILENAMES = {
  27: IMPORTANT_DIR_PATTERNS = {
  34: def is_important(rel_file_path: str) -> bool:
  56: def filter_important_files(file_paths: List[str]) -> List[str]:

    ...
    ...
    ...

______________________________________________________________________

特性

  • 智能代码分析:使用Tree sitter解析源代码并提取函数/类定义
  • 相关性排名:使用PageRank算法按重要性对代码元素进行排名
  • 令牌感知:尊重令牌限制以适应LLM上下文窗口
  • 缓存:持久缓存,用于快速后续运行
  • 多语言:支持Python、JavaScript、TypeScript、Java、C/C++、Go、Rust等
  • 重要文件检测:自动识别重要文件并确定其优先级(README、requirements.txt等)

______________________________________________________________________

安装

pip install -r requirements.txt

______________________________________________________________________

用法

基本用法

# Map current directory
python repomap.py .

# Map specific directory with custom token limit
python repomap.py src/ --map-tokens 2048

# Map specific files
python repomap.py file1.py file2.py

# Specify chat files (higher priority) vs other files
python repomap.py --chat-files main.py --other-files src/

# Specify mentioned files and identifiers
python repomap.py --mentioned-files config.py --mentioned-idents "main_function"

# Enable verbose output
python repomap.py . --verbose

# Force refresh of caches
python repomap.py . --force-refresh

# Specify model for token counting
python repomap.py . --model gpt-3.5-turbo

# Set maximum context window
python repomap.py . --max-context-window 8192

# Exclude files with Page Rank 0
python repomap.py . --exclude-unranked

该工具按以下顺序对文件进行优先级排序:

  1. --chat-files:这些文件被赋予最高优先级,因为它们被认为是您当前正在处理的文件。
  2. --mentioned-files:这些文件具有高优先级,因为它们在当前上下文中被明确提及。
  3. --other-files:这些文件被赋予最低优先级,用于提供额外的上下文。

高级选项

# Enable verbose output
python repomap.py . --verbose

# Force refresh of caches
python repomap.py . --force-refresh

# Specify model for token counting
python repomap.py . --model gpt-3.5-turbo

# Set maximum context window
python repomap.py . --max-context-window 8192

# Exclude files with Page Rank 0
python repomap.py . --exclude-unranked

# Mention specific files or identifiers for higher priority
python repomap.py . --mentioned-files config.py --mentioned-idents "main_function"

______________________________________________________________________

运作原理

  1. 文件发现:扫描存储库中的源文件
  2. 代码解析:使用Tree sitter解析代码并提取定义/引用
  3. 图形构建:创建文件为节点、符号参照为边的图形
  4. 排名:应用PageRank算法按重要性对文件和符号进行排名
  5. 令牌优化:使用二分查找在令牌限制内匹配最重要的内容
  6. 输出生成:将结果格式化为可读的代码映射

______________________________________________________________________

输出格式

该工具生成代码库的结构化视图,显示:

  • 文件路径和重要代码段
  • 函数和类定义
  • 代码元素之间的关键关系
  • 根据实际使用情况和参考文献进行优先级排序

______________________________________________________________________

依赖项

  • tiktoken:各种LLM模型的令牌计数
  • networkx:图形算法(PageRank)
  • diskcache:持久缓存
  • grep-ast:用于代码解析的Tree sitter集成
  • tree-sitter:代码解析框架
  • pygments:语法高亮和词法分析

______________________________________________________________________

缓存

该工具使用持久缓存来加速后续运行:

  • 缓存目录: .repomap.tags.cache.v1/
  • 文件更改时自动失效
  • 可以用以下方式清除 --force-refresh

______________________________________________________________________

支持的语言

目前支持使用Tree sitter语法的语言:

  • 阿尔杜伊诺
  • 聊天
  • 常识
  • C++
  • C#
  • c
  • 飞镖
  • d
  • Emacs Lisp
  • 灵药
  • 榆树
  • 微光
  • JavaScript
  • Java
  • 卢阿
  • ocaml_接口
  • ocaml
  • 小马
  • 属性
  • python
  • 球拍
  • r
  • 红宝石
  • Solidity
  • 迅速
  • udev
  • c_charp
  • 盐酸
  • Kotlin
  • PHP
  • 质量
  • Scala

______________________________________________________________________

许可证

此实现基于Aider项目的RepoMap设计。

______________________________________________________________________

作为MCP服务器运行

RepoMap也可以作为MCP(模型上下文协议)服务器运行,允许其他应用程序访问其存储库映射功能。

设置

  1. RepoMap MCP服务器使用STDIO(标准输入/输出)进行通信。传输层不需要额外的配置。
  2. 要使用Cline(或Roo等类似工具)将RepoMap设置为MCP服务器,请将以下配置添加到Cline设置文件中(例如。, cline_mcp_settings.json):
{
  "mcpServers": {
    "RepoMapper": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "/usr/bin/python3",
      "args": [
        "/absolute/path/to/repomap_server.py"
      ]
    }
  }
}
  • 替换 "/absolute/path/to/repomap_server.py" 与您的实际路径 repomap_server.py 文件。

用法

  1. 跑吧 repomap_server.py 脚本:
python repomap_server.py
  1. 服务器将启动并通过STDIO监听请求。
  2. 其他应用程序可以使用 repo_map 服务器提供的生成存储库映射的工具。他们必须明确 project_root 参数作为他们想要映射的项目的绝对路径。

更新日志

2025年7月13日-删除了project.json依赖项。修复了MCP服务器在文件名方面更易于LLM使用的问题。

目录标签

目录标签

代码导航代码分析ClaudeTree-sitter Query本地部署LLM工具代码解析MCP服务器

支持客户端

ClaudeCline

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP