repocontext
⚡ RepoContext
面向 AI 编码代理和 IDE 的下一代 AST 代码库地图、Token 压缩与上下文打包引擎。
🌟 为什么选择 RepoContext?
在将代码库输入现代 AI 编码助手(Claude Code、Cursor、Windsurf、OpenAI Codex、Antigravity、Cline)时,开发者面临三大关键瓶颈:
💥 Token 爆炸与高昂 API 成本:原始代码转储会迅速超出上下文限制,或每次查询花费数十美元。
📉 信噪比低:80% 的代码行都是常规实现细节。LLM 只需要语义 API 表面(签名、类型、接口、文档字符串)。
🔓 安全泄露:在提示词中意外暴露
.env凭据、API 密钥和数据库 URI。
RepoContext 通过智能 AST 大纲剪枝、任务聚焦的语义文件排序、自动凭据脱敏以及原生 Model Context Protocol (MCP) 集成,一举解决以上三大问题。
Related MCP server: AtlasMemory
🚀 核心特性
⚡ AST 代码库地图与骨架化:将源文件压缩 70%~85%,同时保留 100% 的接口、类型、函数和 JSDoc/文档字符串。
🎯 任务导向的相关性剪枝:传入你的提示词查询(例如
repocontext pack -q "修复 JWT 认证令牌过期问题"),自动排序并只打包最关键的代码文件。🛡️ 自动密钥扫描与脱敏:内置熵和正则扫描器,可检测并遮蔽 OpenAI 密钥、GitHub 令牌、AWS 密钥、JWT 和数据库 URI。
🔌 原生 Model Context Protocol (MCP) 服务器:通过标准 MCP 工具直接集成 Claude Desktop、Cursor、Windsurf 和 Antigravity。
📑 多格式导出:生成包含目录树的干净 Markdown、针对 Claude 优化的 XML(
<documents>)或结构化 JSON。📊 多模型 Token 与成本分析:实时 Token 计数器,支持 GPT-4o、GPT-5、Claude 3.5 Sonnet 和 Gemini 1.5 Pro 的成本估算。
📦 快速开始
1. 通过 npx 免安装运行
# Pack entire repository into an optimized Markdown prompt
npx repocontext pack
# Pack only files relevant to a specific task prompt
npx repocontext pack -q "Implement Stripe payment webhook handler" -o prompt.md
# Generate lightweight AST skeleton map (75%+ token reduction)
npx repocontext map -o codebase-map.md2. 全局安装
npm install -g repocontext🛠️ CLI 用法与选项
repocontext pack [dir] [options]
Options:
-m, --mode <mode> Packing mode: full | ast | relevant | hybrid (default: "full")
-q, --query <query> Filter and rank files relevant to a coding task prompt
-f, --format <format> Output format: markdown | xml | json (default: "markdown")
-o, --output <file> Output file path (default: "repocontext-output.md")
-t, --max-tokens <number> Maximum token budget ceiling (default: 80000)
--no-security Disable secret scanning and auto-redaction
-h, --help Display help for command🔌 Model Context Protocol (MCP) 集成
RepoContext 内置 MCP 服务器支持。将其添加到你的 claude_desktop_config.json 或 Cursor/Windsurf 的 MCP 设置中:
{
"mcpServers": {
"repocontext": {
"command": "npx",
"args": ["-y", "repocontext", "mcp"]
}
}
}暴露的 MCP 工具:
get_codebase_map:返回代码库的 AST 符号大纲地图。extract_relevant_context:剪枝代码库,仅返回提示词所需的文件。read_file_outline:读取单个文件的压缩 AST 骨架。
📊 基准与对比
功能特性 | 原始拼接 | Repomix | RepoContext |
AST 骨架剪枝 | ❌ 否 | ❌ 否 | ✅ 是(节省 80% Token) |
任务相关性排序 | ❌ 否 | ❌ 否 | ✅ 是(查询引导剪枝) |
密钥自动脱敏 | ❌ 否 | ⚠️ 基础 | ✅ 是(10+ 安全规则) |
原生 MCP 服务器 | ❌ 否 | ❌ 否 | ✅ 是(Claude / Cursor / Windsurf) |
多模型成本估算 | ❌ 否 | ❌ 否 | ✅ 是(GPT-4o/5、Claude、Gemini) |
🤝 参与贡献
欢迎提交贡献、Issue 和功能请求!欢迎查看问题页面。
📄 许可证
本项目采用 MIT 许可证。
Available Tools
4 toolsextract_relevant_contextA
Performs semantic relevance ranking to extract and package code files pertinent to a specific user coding task or bug report within a token budget.
Behavior: Read-only operation. Zero file modifications, zero persistent side-effects, and zero network calls. Applies automatic secret redaction. Returns formatted Markdown.
When to use: Use this when given a specific feature request, issue, or debugging objective to gather only the essential source code.
When NOT to use: Do NOT use this for full-repository structural overviews (use get_codebase_map instead), or to inspect single file outlines (use read_file_outline instead).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language task description, bug report, or feature prompt used for semantic and citation-based file scoring. | |
| rootDir | No | Path to repository root directory. Defaults to current working directory ("."). | |
| maxTokens | No | Maximum token budget ceiling (1,000 to 128,000; default: 40000). Files with highest relevance scores are packed first until budget is exhausted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It explicitly discloses read-only behavior, zero file modifications, zero persistent side-effects, zero network calls, automatic secret redaction, and Markdown return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear Behavior, When to use, and When NOT to use sections. It is front-loaded with the core purpose, uses concise sentences, and every section adds actionable information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderately complex tool with no annotations and no output schema, the description covers operation, safety profile, return format, usage guidance, and exclusions. An agent has enough context to invoke the tool correctly and understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already fully documents query, rootDir, and maxTokens. The description reinforces the token-budget concept but does not add substantial parameter-level meaning beyond what the schema provides, hence the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('extracts and packages'), a clear resource (code files relevant to a user task or bug report), and a limiting constraint (token budget). It is clearly differentiated from siblings by focusing on semantic relevance rather than repository maps or file outlines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' and 'When NOT to use' sections explicitly state appropriate scenarios and name the exact sibling tools to use instead, such as get_codebase_map and read_file_outline. This gives an agent unambiguous selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_codebase_mapA
Extracts a token-efficient AST symbol outline map (classes, interfaces, functions, methods, exported types) across the repository.
Behavior: Read-only operation. Zero file modifications, zero persistent side-effects, and zero network calls. Returns structured Markdown.
When to use: Call this at the start of a coding task to inspect repository architecture, directory structure, and symbol hierarchies with 70%~85% token savings.
When NOT to use: Do NOT use this if you need full function implementations (use read_file_content instead), or if you already know the target task and want only relevant files (use extract_relevant_context instead).
| Name | Required | Description | Default |
|---|---|---|---|
| rootDir | No | Path to repository root directory. Defaults to current working directory ("."). Respects .gitignore and built-in binary exclusions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: read-only, zero modifications, zero side-effects, zero network calls, and returns structured Markdown. This is exactly the behavioral transparency needed for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, behavior, usage). Every sentence adds value and the most critical information (read-only, usage guidance) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter and no output schema, the description is complete: it explains what it returns, when to use it, and when not to. No essential information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter rootDir, which already explains its purpose and defaults. The description does not add additional parameter semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Extracts' and the resource 'AST symbol outline map' with specific contents (classes, interfaces, functions, methods, exported types). It also differentiates itself from siblings by mentioning token savings and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' and 'When NOT to use' sections, naming alternatives (read_file_content and extract_relevant_context) and the conditions that select them. This leaves no ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_file_contentA
Reads raw source code from a single file, with optional line-range slicing and automatic security redaction for secrets and sensitive keys.
Behavior: Read-only operation. Zero file modifications and zero network calls. Automatically masks detected credentials. Returns formatted Markdown code block with line indicators.
When to use: Use this when you must inspect, debug, or verify exact line-by-line implementation logic of a specific file identified through previous outline or mapping steps.
When NOT to use: Do NOT use this for blind exploration of unfamiliar files (use read_file_outline or get_codebase_map first to conserve token budget).
| Name | Required | Description | Default |
|---|---|---|---|
| endLine | No | 1-indexed ending line number, inclusive (optional, default: end of file). | |
| rootDir | No | Base directory used to resolve relative filePath. Defaults to current working directory ("."). | |
| filePath | Yes | Relative or absolute path to the file to inspect. | |
| startLine | No | 1-indexed starting line number (optional, default: 1). Useful for viewing specific functions or ranges in large files. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden—and it does so thoroughly. It states read-only operation, zero file modifications, zero network calls, automatic masking of credentials, and the Markdown code-block output format with line indicators. This is unusually complete behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into short labeled sections: Behavior, When to use, and When NOT to use, plus a one-sentence opener. Every sentence earns its place, and the most important facts—single file, raw source, redaction—are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no annotations and no output schema, the description covers the safety profile (read-only, no network), the return format (Markdown code block with line indicators), and the appropriate usage boundaries. The schema fully covers all four parameters, so nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions 'optional line-range slicing,' which conceptually maps to startLine/endLine, but it does not add meaning beyond the schema's own parameter descriptions. The schema already documents defaults and 1-indexed behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Reads raw source code from a single file,' and further clarifies it supports line-range slicing and redaction. It is clearly distinguished from sibling outline/map tools by emphasizing exact line-by-line content rather than structural overviews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
An explicit 'When to use' block says to use it for inspecting, debugging, or verifying line-by-line implementation of a specific file. An explicit 'When NOT to use' block warns against blind exploration and names read_file_outline and get_codebase_map as token-saving alternatives, giving the agent concrete decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_file_outlineA
Extracts the semantic AST skeleton outline of a single source file, preserving all class declarations, function signatures, interfaces, and docstrings while stripping function bodies.
Behavior: Read-only operation. Zero file modifications and zero network calls. Returns syntax-highlighted code block.
When to use: Use this to understand API contracts, public types, and method signatures of an individual file without consuming tokens on implementation details.
When NOT to use: Do NOT use this if you need complete implementation logic (use read_file_content instead), or if you need an overview of multiple repository files (use get_codebase_map instead).
| Name | Required | Description | Default |
|---|---|---|---|
| rootDir | No | Base directory used to resolve relative filePath. Defaults to current working directory ("."). | |
| filePath | Yes | Relative or absolute path to the target source file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It explicitly states it is read-only, makes zero file modifications, zero network calls, and returns a syntax-highlighted code block, while also describing the transformation (stripping bodies, preserving signatures). This is comprehensive and unambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into purpose, behavior, and usage guidance sections, with each sentence contributing value. The core functionality and safety profile are front-loaded, and the alternative tools are mentioned in a dedicated 'when NOT to use' clause. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only tool with no output schema, the description covers purpose, behavior, return format, and usage boundaries explicitly. An agent has all the information needed to decide when to call it and what to expect in return, making the description complete given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, with clear meanings for filePath and rootDir. The description does not add parameter-specific details beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb ('extracts') and resource ('semantic AST skeleton outline of a single source file'), and details what is preserved (class declarations, function signatures, interfaces, docstrings) and what is stripped (function bodies). It clearly differentiates from siblings by specifying single-file scope and the outline nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' and 'When NOT to use' sections name the exact alternatives (read_file_content for implementation logic, get_codebase_map for multi-file overview) and the conditions that select this tool. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.2.0- Changed
extract_relevant_context3 fields changed- changed
Input schema / properties / maxTokens / descriptionPrevious value: -"Token budget ceiling (default: 40000)"New value: +"Maximum token budget ceiling (1,000 to 128,000; default: 40000). Files with highest relevance scores are packed first until budget is exhausted." - changed
Input schema / properties / query / descriptionPrevious value: -"Task description or coding prompt (e.g., \"Fix JWT authentication token expiration error\")"New value: +"Natural language task description, bug report, or feature prompt used for semantic and citation-based file scoring." - changed
Input schema / properties / rootDir / descriptionPrevious value: -"Path to repository root directory"New value: +"Path to repository root directory. Defaults to current working directory (\".\")."
- Changed
get_codebase_map1 field changed- changed
Input schema / properties / rootDir / descriptionPrevious value: -"Path to repository root directory (default: current working directory)"New value: +"Path to repository root directory. Defaults to current working directory (\".\"). Respects .gitignore and built-in binary exclusions."
- Added
read_file_content - Changed
read_file_outline2 fields changed- changed
Input schema / properties / filePath / descriptionPrevious value: -"Relative or absolute path to the file"New value: +"Relative or absolute path to the target source file." - added
Input schema / properties / rootDirAdded value: +{ + "description": "Base directory used to resolve relative filePath. Defaults to current working directory (\".\").", + "type": "string" +}
3 tool updates
v0.1.0- First observed
extract_relevant_context - First observed
get_codebase_map - First observed
read_file_outline
TDQS
Scored across 4 tools
Each tool serves a clearly distinct purpose: repo-wide symbol map, task-specific file extraction, single-file outline, and full file content. The descriptions include explicit 'when to use' and 'when NOT to use' guidance, eliminating any potential for misselection.
All four tools follow the verb_noun snake_case pattern (get_codebase_map, extract_relevant_context, read_file_outline, read_file_content). While the verbs differ (get, extract, read), the structure is consistent and the names accurately reflect each tool's function.
With exactly 4 tools, the server is well-scoped for its purpose of repository context exploration. Each tool fills a distinct role in the workflow, and there is no redundancy or unnecessary bloat.
The tool set covers the full lifecycle of code exploration: repo-wide mapping, semantic relevance filtering for tasks, single-file outlines, and raw content access. This provides a complete read-only context-gathering workflow with no obvious dead ends or missing operations.
Maintenance
Related MCP Connectors
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Deterministic context layer for your codebase: change impact, blast radius, answers with receipts.
Codebase intelligence for AI agents — dead code, blast radius, ownership.
Give your AI agent a persistent map of your project's structure, dependencies, and bugs.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides intelligent code context and analysis through semantic compression, AST parsing, and multi-language support. Offers 60-80% token reduction while enabling AI assistants to understand codebases through local analysis, OpenAI-enhanced insights, and GitHub repository integration.63 npm3MIT
- AlicenseNot gradedqualityCmaintenanceTurn any codebase into an AI-readable neural map — with proof. Every claim linked to code anchors (line + SHA-256 hash), every context window optimized with greedy token budgeting, every session protected by drift detection. Tree-sitter indexing across 11 languages, cross-session learning, AI enrichment, and 28 MCP tools. Zero config — just connect and your AI agent remembers everything.9 npm14GPL 3.0
- AlicenseNot gradedqualityCmaintenanceTransforms codebases into a knowledge graph for AI agents, enabling semantic search, impact analysis, and persistent session memory with up to 94% token savings.4 npm15ISC
- AlicenseNot gradedqualityDmaintenanceMake any LLM a codebase expert instantly. Provides deep code intelligence through semantic search, architecture mapping, security analysis, and smart context that fits perfectly in token windows.MIT