CodeContext is a cross-platform CLI tool and MCP (Model Context Protocol) server for Mac, Windows, and Linux that provides intelligent code context to Language Learning Models (LLMs) and agentic coding tools.
It scans project directories, generates a structured representation of the project, and extracts relevant file contents while intelligently filtering out unnecessary files and directories. Now with token budget optimization and relevance-based file selection for agentic coding workflows!
Update: A more comprehensive tool is code2prompt. I found that CodeContext is more user-friendly, faster, and automatically includes only user code (based on both extension and file contents), but you may have better luck with alternatives.
- Hierarchical Project Structure: Generates a clear tree view of your project
- Smart Content Extraction: Extracts contents of relevant source files
- Intelligent Filtering: Automatically filters out binaries, dependencies, build outputs, and more
- Git-Aware: Respects .gitignore rules
- Binary File Detection: Automatically detects and skips binary files
- Generated Code Detection: Excludes auto-generated code
- Highly Customizable: Configure ignored extensions, directories, and file size limits
- Multiple Output Formats: Supports plain text and JSON output
- Well-Architected: Clean separation of concerns with interfaces for testability
- MCP Server Mode: Native integration with Claude Code, Cline, and other MCP-compatible agents
- Token Budget Optimization: Intelligently selects most relevant files within token constraints
- Relevance Scoring: Automatically ranks files based on task description
- Multiple Selection Strategies: GreedyByScore, ValueOptimized, and Balanced algorithms
- Dynamic Context Generation: Task-specific context rather than dumping entire codebase
The project follows SOLID principles with a modular architecture:
Configuration/: Filter configuration settings and app configurationInterfaces/: Abstraction interfaces (IFileChecker, IConsoleWriter)Services/: Core business logic- File filtering and scanning (FileFilterService, ProjectScanner)
- Token counting and budget optimization (TokenCounter, TokenBudgetOptimizer)
- Relevance scoring (FileRelevanceScorer)
- Git integration (GitIgnoreParser, GitHelper)
- Output formatting and content building
Mcp/: Model Context Protocol server tools- MCP tool implementations for agentic coding integration
Utils/: Utility functions (FileUtilities, Guard)
This design makes the codebase maintainable, testable, and extensible while supporting both CLI and MCP server modes.
- .NET 9.0 or later
Install .NET SDK if you haven't already:
brew install --cask dotnet-sdkDownload and install the .NET 9 SDK
Follow the official .NET installation guide for your distribution.
- Clone the repository:
git clone https://github.com/DavidVeksler/CodeContext.git
cd CodeContext- Build the project:
dotnet build- (Optional) Publish for your platform:
# Self-contained executable
dotnet publish -c Release -r win-x64 --self-contained # Windows
dotnet publish -c Release -r osx-x64 --self-contained # macOS
dotnet publish -c Release -r linux-x64 --self-contained # LinuxRun the application with:
dotnet run [path_to_index] [output_file]Arguments:
path_to_index: The directory to analyze (optional, will prompt if not provided)output_file: The file to write the output (optional, defaults to{foldername}_context.txtin the indexed directory)
If no arguments are provided, the application will prompt for input interactively.
# Interactive mode
dotnet run
# With arguments
dotnet run ./MyProject ./output/context.txt
# Using published executable
./CodeContext ./MyProject ./output/context.txtCodeContext now supports Model Context Protocol (MCP), enabling native integration with agentic coding tools like Claude Code, Cline, and other MCP-compatible clients.
MCP server mode provides:
- Intelligent context generation based on task descriptions
- Token budget optimization - automatically selects most relevant files within token limits
- Dynamic queries - agents can request exactly the context they need
- Multiple strategies - optimize for relevance, value, or balanced coverage
- Build CodeContext:
dotnet build- Add to your Claude Code MCP configuration (
~/.config/claude/mcp.jsonor project.claude/mcp.json):
{
"mcpServers": {
"codecontext": {
"command": "dotnet",
"args": [
"run",
"--project",
"/absolute/path/to/CodeContext/CodeContext.csproj",
"--",
"--mcp"
]
}
}
}- Restart Claude Code - CodeContext will now be available as an MCP tool!
Get optimized code context for a specific task within a token budget.
Parameters:
projectPath(required): Path to project directorytaskDescription(required): Description of task (e.g., "fix authentication bug", "add payment feature")tokenBudget(optional, default: 50000): Maximum tokens to useincludeStructure(optional, default: true): Include project structurestrategy(optional, default: "ValueOptimized"): Selection strategyGreedyByScore: Pick highest-scoring files firstValueOptimized: Maximize relevance per token (best bang for buck)Balanced: Mix of high-value and comprehensive coverage
Example:
Agent: Use GetCodeContext with projectPath="/path/to/project",
taskDescription="implement user authentication",
tokenBudget=30000,
strategy="ValueOptimized"
Get hierarchical directory tree of the project.
Parameters:
projectPath(required): Path to project directory
List all files with token counts and optional relevance filtering.
Parameters:
projectPath(required): Path to project directoryquery(optional): Query to filter/rank files by relevance
Get content of specific files.
Parameters:
projectPath(required): Path to project directoryfilePaths(required): Comma-separated list of relative file paths
-
Relevance Scoring: Files are scored based on:
- File name matching task keywords (30% weight)
- File path matching keywords (20% weight)
- Content matching keywords (40% weight)
- File importance indicators (10% weight)
-
Selection Strategies:
- ValueOptimized (recommended): Maximizes relevance/token ratio - gives you the best context per token
- GreedyByScore: Picks highest-scoring files until budget is exhausted
- Balanced: Combines both approaches for comprehensive yet efficient coverage
-
Result: You get the most relevant files for your task within your token budget!
# Agent asks: "Help me fix the login authentication bug"
# CodeContext MCP server:
# 1. Scans project files
# 2. Scores files for relevance to "login authentication bug"
# 3. Selects optimal files within token budget (e.g., 50K tokens)
# 4. Returns context with:
# - auth/login.ts (score: 0.95, 2K tokens)
# - auth/session.ts (score: 0.87, 1.5K tokens)
# - middleware/auth.ts (score: 0.79, 1K tokens)
# - tests/auth.test.ts (score: 0.72, 3K tokens)
# - ... (up to budget)- Token Efficiency: Don't waste tokens on irrelevant files
- Task-Specific Context: Get exactly what you need for each task
- Automatic Relevance Ranking: No manual file selection needed
- Scalable: Works with large codebases by intelligently sampling
- Multiple Strategies: Choose optimization approach per task
Create a config.json file in the application directory to customize settings:
{
"DefaultInputPath": ".",
"DefaultOutputFileName": "context.txt",
"OutputFormat": "text",
"IncludeStructure": true,
"IncludeContents": true
}Customize filtering behavior by modifying the FilterConfiguration class:
IgnoredExtensions: File extensions to ignore (e.g.,.exe,.dll,.png)IgnoredDirectories: Directories to ignore (e.g.,node_modules,bin,obj)IgnoredFiles: Specific files to ignore (e.g.,.gitignore,package-lock.json)MaxFileSizeBytes: Maximum file size to process (default: 100KB)BinaryThreshold: Threshold for binary file detection (default: 0.3)
Plain text output with file paths, separators, and content.
Structured JSON with content and timestamp:
{
"content": "...",
"timestamp": "2025-11-21T10:30:00"
}The application provides clear error messages with appropriate exit codes:
1: Directory not found2: I/O error3: Access denied4: Unexpected error
Contributions are welcome! Please feel free to submit a Pull Request.
The codebase uses:
- C# 12 with modern language features
- Nullable reference types for better null safety
- XML documentation comments on all public APIs
- Dependency injection patterns for testability
This project is licensed under the MIT License - see the LICENSE.txt file for details.
Built with ❤️ for the developer community to make working with LLMs more efficient.
