CodeContext is a cross-platform C# CLI tool and MCP (Model Context Protocol) server for Mac, Windows, and Linux that turns a codebase into text for an LLM to see its context. It's a code context tool built for prompt engineering: feed a project straight into ChatGPT, Claude, or any other LLM-based coding assistant without manually copy-pasting files.
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.
