Read-only MCP server that turns a folder or repository into redacted, token-efficient context.
Runs on your machine from its package; the steps are below.

At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y devprojex
MCP client config
{
"mcpServers": {
"devprojex": {
"command": "npx",
"args": [
"-y",
"devprojex"
]
}
}
}Published to NuGet as `devprojex` — run it with your .NET MCP host.
🏆 Selected by the Avalonia UI team for the App Showcase
Clean, token-efficient codebase context for AI chats and coding agents. You see exactly what leaves your project, and secrets are masked before it goes.
DevProjex turns any folder or Git repository into clean context for AI. Paste it into ChatGPT or Claude, or let Claude Code, Codex, and Cursor read the project through its read-only MCP server. A desktop app, a Terminal Workspace, a CLI, and the MCP server share one engine, one set of filters, and one masking pipeline, on Windows, macOS, and Linux.
Tick what you need in a file tree, check the live preview and its token estimate, then copy or export the result as ASCII, Markdown, JSON, or XML, or as a clean copy of the project in a folder or ZIP.
🔒 Read-only and telemetry-free by design. DevProjex does not upload your project contents or collect telemetry.

Microsoft Store: 👉 DevProjex
Latest GitHub release (Windows, macOS, Linux): 👉 github.com/Avazbek22/DevProjex/releases/latest
WinGet (Windows): winget install OlimoffDev.DevProjex
The CLI, the Terminal Workspace, and the MCP server run straight from npm or NuGet, or from a direct release binary:
npx devprojex tree . # Node.js 20+
dnx devprojex tree . # .NET SDK 10
./DevProjex tree . # release binary (DevProjex.exe on Windows)
The npm and NuGet packages contain the CLI, the Terminal Workspace, and the MCP server, but not the desktop app. Requirements per platform, the direct headless archives, and the non-root Docker image are all covered in Docs/Installation.md.
Copying files into a chat window one by one doesn't scale. Packing tools are fast, but you see the result after it's packed, not while you choose. And a coding agent with plain file access reads .env as easily as Program.cs, unless every tool it uses is told to ignore it.
DevProjex works differently: visual, precise, and local-first.
The numbers, with their caveats. In the final blind series against Repomix (11 tasks, 8 repositories, 6 languages, 22 sessions per side, Claude Haiku 4.5 as the agent and as the judge), DevProjex used 973,020 tokens against 1,174,907, and the judge trusted the DevProjex answer in 17 pairs of 22 against 3. With seven planted credentials, neither tool leaked a value, but the code around them stayed readable through DevProjex in 7 files of 7 against 1 of 7. The tasks were written by the author, Repomix needs fewer tool calls, and it wins broad "how does X work" questions. The whole series, with the agents' and the judge's verdicts verbatim, is in Docs/Benchmark-History.md.
Works with any language, repository, or project structure.
Choose and control
.gitignore, tracked files, staged files, all current changes, or a ref-to-ref diff.AI agents
Preview and export
Workflow and interface
Use File → Export project → To folder… or To ZIP archive… to create a separate copy of your current selection. The same workflow is available through devprojex export project.
Project copies respect your chosen root folders, file types, ignore rules, and checked items; if nothing is checked, the whole current tree is exported. Directory structure, binary files, and included empty folders are preserved. When Hide Secrets or Hide private data is enabled, detected values in text files are replaced, binary files remain unchanged, and the result is intentionally not a byte-for-byte copy, so it may not build or run. The source project is never modified, and the result can't be written inside it.
DevProjex ships a built-in secure Model Context Protocol server, on the official C# MCP SDK, that turns any local folder or Git repository into token-efficient codebase context for AI agents: Claude Code, Codex, Claude Desktop, Cursor, Google Antigravity, VS Code, or any MCP client. It runs on the same engine as the desktop app, the Terminal Workspace, and the CLI. One line connects Claude Code, with or without the desktop app installed:
claude mcp add devprojex -- npx -y devprojex mcp --root /absolute/path/to/project
Under the hood every client starts the same command, devprojex mcp --root /path/to/project, and talks to it over stdio.
mcp connect <client> [live|standard] registers the server without opening another terminal; live mode is the default here.devprojex mcp connect . --client <client> (standard mode unless --mode live is given). Add --open to launch the client, or --print when only a manual configuration fragment is needed.npx -y devprojex or dnx devprojex. Snippets for every client are in Docs/McpServer.md.Cursor and VS Code get a project-local .cursor/mcp.json or .vscode/mcp.json; other servers in those files are left alone. For a first-call check, inspect DevProjex with /mcp in Claude Code or run codex mcp list, then ask: “Through DevProjex, show the tree of the current selection.” That call appears in the agent journal.

Open the project in the desktop app and connect through MCP → Live context. From then on the tree you tick is what the agent works with:
Live context uses --live; Standard connects the same server but does not follow the window selection.
Eight read-only tools cover the whole workflow: list_projects, get_tree, analyze, search_project, related_files, get_file, pack_context, and read_pack.
search_project finds text or declarations by name, and get_file reads an exact line range or one declaration instead of a whole file.related_files answers "what does this file actually use, and who uses it" from real imports, for one file or a handful of seeds, so following a thread never widens the selection.pack_context packs a selection under max_tokens: files are admitted in a deterministic order while they fit, the rest are reported as skipped, and top_files shows where the tokens go.pack_context and related_files store an oversized result as a session pack; read_pack reads it back in line ranges instead of flooding the agent's context. Long operations report standard MCP progress notifications.git_scope narrows any tool to staged files, current changes, or a ref-to-ref diff; profile switches between built-in defaults, your saved desktop selections, or a portable profile file.
The local agent journal records metadata and counts for MCP sessions, never file bodies or detected secret values. Each session shows the client, the mode, and its totals: calls, characters, token estimate, delivered files, masked values, and duration. Open a session and every tool call is listed with its arguments summary, revision, timing, and notices. Read it from the desktop app (MCP → Journal), the Terminal Workspace, or the CLI, and export a Markdown or JSON context receipt showing calls, delivered paths, and totals. Want to audit what the agent gets? Open the same project in the desktop app: the engine and the masking pipeline are shared, and filters match when the same profile and parameters are used.
The server enforces hard security boundaries on top of DevProjex's read-only design:
--allow-remote is explicitly enabled for Git URL projects.devprojex mcp --hide-private-data, mirroring the CLI flag..git administrative area is never exposed..gitignore apply, while Dockerfile, .github/, dot-files, and empty files stay visible. Widening that view is your startup decision, never the agent's: an --exclude baseline, the --unrestricted preset, or the opt-in --allow-agent-exclusions flag.The missing off switch is a control guarantee, not a detection guarantee. DevProjex detects common secret formats, but detection is heuristic; review each pack before publishing it outside your environment.
See Docs/McpServer.md for client setup, the full tool reference, and the security model. The measurements behind the MCP server, from 5.1 to 5.2, with the agents' and the blind judge's verdicts verbatim, are in Docs/Benchmark-History.md.
DevProjex also runs from the terminal: a keyboard-first Terminal Workspace for interactive work, and a CLI for repeatable, script-friendly project analysis and AI-context export.

devprojex # open the Terminal Workspace
devprojex open . --preview # desktop app on this folder, preview pane open
devprojex tree . # project tree
devprojex tree https://github.com/owner/repo --branch main # tree of a remote repository
devprojex analyze . --format json # files, lines, tokens, largest files
devprojex analyze . --git-mode tracked --exclude smart-ignore # tracked files only, with Smart Ignore applied
devprojex analyze . --hide-secrets --findings --fail-on-findings # CI gate: findings, never values
devprojex export context . --format markdown -o ../context.md # packed context for a chat
devprojex export context https://github.com/owner/repo -o - # straight from a Git URL to stdout
git diff --name-only | devprojex export context . --select-from - -o - # only the changed files
devprojex export project . --as zip --hide-secrets -o ../submission.zip # masked project copy
devprojex search Configure . --symbols # declarations by name
devprojex related src/App.cs --direction both # what a file uses, and who uses it
devprojex profile save . --hide-secrets on # remember these settings for this project
devprojex cache update https://github.com/owner/repo # refresh a cached clone
devprojex cache, devprojex recent).--findings lists rule, category, file, and line, never the values, and --fail-on-findings fails the pipeline when findings exist.git diff or any tool into --select-from -.devprojex search finds text, --regex patterns, or declarations by name with --symbols; devprojex related lists the files a file uses and the files that use it.export ctx, export proj, -f, -n, -q), plus devprojex help <command> and shell completion for bash, zsh, fish, and PowerShell.See Docs/CommandLine.md for the full command reference, and Docs/TerminalWorkspace.md for the interactive terminal interface.
DevProjex only reads your project. The one exception is an explicit Cursor or VS Code MCP connection, which creates or updates .cursor/mcp.json or .vscode/mcp.json. Beyond that, DevProjex:
Smart Ignore is a local, deterministic filter: not an AI model, and not one big blacklist for the whole folder. It knows where each project starts and ends, and applies the right rules only inside that project.
It knows project boundaries. DevProjex finds project markers like .csproj, package.json, pyproject.toml, go.mod, or Cargo.toml. Rules for that stack (node_modules, bin/obj, virtual environments, build caches) apply only inside the project that owns them. A .NET service won't hide bin in an unrelated folder next to it, and a frontend app won't hide node_modules somewhere it doesn't belong.
It checks before it hides anything. Folder names like build, dist, or vendor can mean generated files or real source code. Smart Ignore looks for real signs first: package files, compiler output, known build layouts. If there's no clear sign, the folder stays visible.
It keeps monorepos separate. Each nested project (frontend, backend, tools, docs) is filtered on its own, based on its own markers. Nothing crosses over between unrelated parts of your workspace.
Git modes are a separate setting, not part of Smart Ignore:
| Mode | What it shows |
|---|---|
.gitignore mode | Tracked files plus untracked files that repository-local .gitignore and info/exclude allow, following git status; embedded repositories stay opaque and declared submodules keep their own rules |
| Tracked-files-only | Only files currently recorded in the Git index |
| Staged | Files with staged changes |
| Changes | Staged, unstaged, and non-ignored untracked files |
| Diff | Files changed between two Git references |
You stay in control. Smart Ignore, the Git mode, and basic filters (hidden files, dot-files, empty folders) all work together and can be turned on or off one by one. "Ignored" means excluded from the current view, copy, or export; it never deletes anything from your project.
📖 Full technical details, including signature matching, worktree handling, and edge cases, are in Docs/SmartIgnore.md.
An AI rarely needs every implementation line; it needs the shape of your code. Compression keeps declarations, signatures, fields, and class structure, and empties named implementation bodies:
// Before: what's in your file (unchanged on disk)
private Command BuildMcpCommand()
{
var command = new Command("mcp", L("Terminal.Command.Mcp"));
// … ~40 more lines of implementation
}
// After: what goes into the packed context
private Command BuildMcpCommand()
{ }
Measured on DevProjex's own C# sources (619 files), the packed context shrinks by about 69%, roughly 3× smaller. On a mixed repository the saving is lower, because compression only touches code, never test fixtures, JSON assets, or documentation.
It covers 14 languages, parsing with Tree-sitter grammars and applying DevProjex's own per-language rules about what must survive (properties in Kotlin, val/var in Scala, free lambdas everywhere), and it is deliberately conservative: a file it can't process safely stays complete. Comment and blank-line stripping extend the same syntax engine to 20 packs in total, the 14 plus six comments-only packs such as HTML, CSS, YAML, and XML project files. The same transformed content feeds token metrics, context documents, and folder or ZIP exports, in the desktop app and via --compress-code in the CLI.
📖 Per-language rules and edge cases are in Docs/CodeCompression.md.
Two independent layers. Both replace values inside the output; they never delete a file and never modify your project.
Hide Secrets finds credential values (API keys, tokens, connection strings) and masks each one where it stands, keeping the file and all surrounding code:
var botToken = "110201543:AAHdqTcvE…"; // in your file
var botToken = "DEVPROJEX_REDACTED[telegram-bot-api-token#1]"; // in the export
Detection runs a pinned, reviewed Gitleaks rule set on DevProjex's own engine, and one secret never costs you the whole file. Findings are marked on the preview scrollbar, and a false positive can be excluded per match right in the preview. You enable it with one switch in the desktop app or --hide-secrets in the CLI; the MCP server keeps it on, see Security boundaries. For pipelines, --findings prints rule, category, file, and line, never the value, and --fail-on-findings fails the build.
Hide private data is the second, optional layer for personal traces: emails, global IPs, local-user paths, MAC addresses, and international phone numbers become DEVPROJEX_REDACTED[email#1], [ipv4#1], [local-user#1], and so on, with the same placeholder for the same finding on every surface, so exported code stays consistent. It is off by default: real projects are full of version strings that look like IPs and sample emails that are not personal. Turn it on per profile in the desktop app, or with --hide-private-data in the CLI and MCP.
📖 Detection rules and edge cases: Docs/HideSecrets.md · Docs/HidePrivateData.md
Installation · Smart Ignore · Hide Secrets · Hide private data · Code Compression · Command Line · Terminal Workspace · MCP Server · Agent Journal · Related files · Benchmark History · Security policy · Contributing · Code of Conduct · Discussions
Built with .NET 10 and Avalonia UI, with Tree-sitter grammars, Gitleaks rules, and the official MCP C# SDK; attributions in THIRD-PARTY-NOTICES.md. 20,000+ automated tests (unit, integration, terminal, UI) run on Windows, Linux, and macOS.
Build from source
git clone https://github.com/Avazbek22/DevProjex.git
cd DevProjex
dotnet build -c Release
dotnet test
Issues and pull requests are welcome. Good places to start: UX, performance tuning, tests, localization, documentation and screenshots. Not sure where? Check issues labeled good first issue.
See CONTRIBUTING.md for details.
DevProjex is licensed under the Apache License 2.0: free to use, modify, and distribute, with an explicit patent grant. Copyright (c) 2025–present Avazbek Olimov. See LICENSE for details.
Code signing: Free code signing provided by SignPath.io, certificate by SignPath Foundation. See the code signing policy.