Skip to content
v1.3.0 on PyPI
Official MCP Registry
MCP Server Built-in
Standalone EXE
Apache 2.0

Your agent keeps guessing which files matter.

LLMScribe hands it the answer instead: an exact directory map, search that reports what it found, a dependency graph and a safe file reader — over MCP, the CLI, the GUI and Python. No embeddings. No semantic ranking. No re-reading the same file four times.

pip install llmscribe

Three ways to run: llmscribe-mcp, LLMScribe-GUI.exe, llmscribe

LLMScribe

v1.3.0
Preview—

Select a project folder and press Generate. The output will appear here.

Interactive demo — Generate, copy, or download a sample export.

The problem

Your agent does not have an intelligence problem.

It has a retrieval problem. On a 1.4-million-line codebase, one benchmark agent burned 6,000 seconds and produced nothing; the same model with structured code search finished the same task in 89 seconds. Across another benchmark, Codex CLI never reached the file that would have solved the task in 27–29% of runs — and once it had the right context, its score nearly doubled. The bottleneck is what goes into the window, not how clever the model is.

“Every time it explores like 200 files for a small change.”
Google Antigravity user
“Nine searches and fourteen files for one variable — the search itself isn't ranked.”
Cursor user
“I asked it what it was doing. It said it was looking at unnecessary files.”
Cursor user
“It randomly proceeds to re-read the same files over and over again.”
Google Antigravity user
“Stale fixtures, mock data, outdated comments — it wastes tokens and makes me argue with my agent non stop.”
Claude Code user
“Search reports no matches, then a plain grep finds the content immediately.”
Claude Code Grep bug report

What LLMScribe does about it

Reads 200 files to change one line

project_map returns the whole tree with contents excluded, before a single file is read.

Re-reads the same files in a loop

Same input, same bytes, every run.

Misses the file that actually mattered

project_dependencies resolves local, stdlib, external and unresolved imports — plus reverse dependencies.

Search returns nothing when the text exists

search returns path, line, matched text and match type, or a stable error code. Never a silent empty.

Stale fixtures read as current truth

Nothing is inferred, embedded or ranked. You get the files as they are, plus a Git diff.

Build output and binaries fill the context

Real .gitignore semantics. Binaries and oversized files are skipped, not summarised.

Context gets silently truncated

Every cut is reported: truncated, truncation_note, omitted_files.

The file an agent needs next is usually the one structurally related to the file it is already looking at — a dependent, a sibling module, a test fixture. That is a graph question, not a similarity question, which is why LLMScribe ships dependency analysis and a real tree instead of embeddings.

How it works

One walk through the tree. One file out.

  1. 01

    Point it at a folder

    Pass a path on the command line, pick a folder in the desktop window, or type it into the terminal menu. That is the only input.

  2. 02

    It walks, filters, and writes

    LLMScribe builds a directory tree, skips junk and .gitignore matches, and concatenates every supported source file into one document.

  3. 03

    Paste it into an AI chat

    The .txt is ready for ChatGPT, Claude, Cursor, or anything else that can read a project as text. Copy, open, or save it wherever you like.

Made for people who just want to give their whole project to an AI without fighting with copy-paste.

Four interfaces

An MCP server for agents, a standalone EXE, a desktop GUI, and a CLI.

Install once. Use whichever fits the situation — MCP server for AI agents, standalone EXE for non-tech users, CLI for terminal power users, and desktop GUI.

llmscribe-mcp (For AI Agents)

Model Context Protocol (MCP) server providing 7 tools for AI coding tools. Setup for 13 popular clients — Cursor, Claude Desktop, Claude Code, VS Code, Windsurf, Cline, Roo Code, LM Studio, Zed, Continue, JetBrains, Goose, and Codex CLI — is in the Connect section.

Provides project_map, project_overview, search, read, read_many, project_dependencies, and project_diff.

{
  "mcpServers": {
    "llmscribe": {
      "command": "llmscribe-mcp"
    }
  }
}

Connect

Add LLMScribe to the app you already use.

LLMScribe is a standard MCP server that runs locally over stdio — no cloud, no network. Install it once with pip, then point your client at the command below.

Local

stdio — runs on your machine

Everything stays local. Your code is never uploaded and no network access is used.

{
  "mcpServers": {
    "llmscribe": {
      "command": "llmscribe-mcp"
    }
  }
}

pip install llmscribe

Per-app setup

Each client reads a different configuration file. Copy the block for your tool. Verified against each tool's official documentation.

Claude Desktop

claude_desktop_config.json (Settings → Developer → Edit Config)

{
  "mcpServers": {
    "llmscribe": { "command": "llmscribe-mcp" }
  }
}

macOS: ~/Library/Application Support/Claude/ · Windows: %APPDATA%\Claude\. Quit and reopen after saving.

Claude Code

terminal

claude mcp add llmscribe -- llmscribe-mcp

Verify with `claude mcp list`.

Cursor

.cursor/mcp.json (or ~/.cursor/mcp.json)

{
  "mcpServers": {
    "llmscribe": { "command": "llmscribe-mcp" }
  }
}

Restart Cursor, then Customize → MCPs.

VS Code (Copilot)

.vscode/mcp.json

{
  "servers": {
    "llmscribe": {
      "type": "stdio",
      "command": "llmscribe-mcp"
    }
  }
}

Uses `servers`, not `mcpServers`.

Windsurf (Cascade)

~/.codeium/mcp_config.json

{
  "mcpServers": {
    "llmscribe": { "command": "llmscribe-mcp" }
  }
}

Windsurf Settings → Cascade → MCP → View Raw Config.

Cline

MCP Servers → Configure → Configure MCP Servers

{
  "mcpServers": {
    "llmscribe": { "command": "llmscribe-mcp" }
  }
}

Roo Code

mcp_settings.json (global) or .roo/mcp.json (project)

{
  "mcpServers": {
    "llmscribe": { "command": "llmscribe-mcp" }
  }
}

LM Studio

~/.lmstudio/mcp.json

{
  "mcpServers": {
    "llmscribe": { "command": "llmscribe-mcp" }
  }
}

Program tab → Install → Edit mcp.json. Follows Cursor notation.

Zed

settings.json (Settings → AI → MCP Servers)

{
  "context_servers": {
    "llmscribe": {
      "command": "llmscribe-mcp",
      "args": [],
      "env": {}
    }
  }
}

Zed uses `context_servers`.

Continue

~/.continue/config.yaml

name: LLMScribe
version: 1.0.0
schema: v1
mcpServers:
  - name: LLMScribe
    command: llmscribe-mcp

Also reads Cursor/Claude/Cline JSON dropped into .continue/mcpServers/.

JetBrains IDEs

Settings → Tools → AI Assistant → MCP → Add

{
  "mcpServers": {
    "llmscribe": { "command": "llmscribe-mcp" }
  }
}

IntelliJ, WebStorm, … Can also Import from Claude.

Goose

~/.config/goose/config.yaml

extensions:
  llmscribe:
    name: llmscribe
    enabled: true
    type: stdio
    cmd: llmscribe-mcp
    args: []
    timeout: 300

OpenAI Codex CLI

~/.codex/config.toml

[mcp_servers.llmscribe]
command = "llmscribe-mcp"

Output formats

Clean Markdown for humans, structured JSON for agents.

Choose Markdown mode for pasting into chat prompts, or JSON mode for programmatic agent parsing with metadata.

project_overview.txt
Selected Files Directory Structure:

my-project/
├── src/
│   ├── main.py
│   └── utils.py
├── tests/
│   └── test_main.py
├── pyproject.toml
└── README.md

File Contents:

--- src/main.py ---
def hello():
    print("Hello world")

--- src/utils.py ---
def add(a: int, b: int) -> int:
    return a + b

--- tests/test_main.py ---
from src.main import hello

def test_hello():
    hello()

--- pyproject.toml ---
[project]
name = "my-project"
version = "1.2.0"
requires-python = ">=3.10"

--- README.md ---
# my-project

A sample project exported with LLMScribe.

Capabilities

Built to give AI agents & developers predictable context.

MCP Server for AI Agents

Built-in Model Context Protocol server featuring 7 composable tools (overview, map, search, batch file read, and git diff) with structured JSON envelopes.

Git Status & Diff

Inspect modified files and unified diffs directly via project_diff tool, supporting staged, unstaged, and specific commit comparisons.

Four Interfaces

MCP server for agents, standalone Windows EXE for non-tech users, modern CustomTkinter GUI, and a CLI for terminal power users.

Smart Ignore Rules

Drops .git, node_modules, venv, build caches, IDE folders, OS junk, and anything listed in the project's own .gitignore.

Predictable Size Guards

Enforces 50-file batch caps, 400k character content limits, 200k diff character caps, and 13 closed, standardized error codes.

Embeddable Python Core

Import llmscribe.core or llmscribe.mcp from Python. Use run(), build_project_summary(), or project_overview() programmatically.

Supported Text Files

Common source code, configuration, scripts, and text extensions.

  • .py
  • .js
  • .ts
  • .jsx
  • .tsx
  • .java
  • .go
  • .rs
  • .md
  • .json
  • .yaml
  • .toml
  • .html
  • .css
  • .sh
  • .sql
  • + many more

Ignored Automatically

Dependencies, build outputs, IDE config, binary assets, and your .gitignore.

  • .git
  • node_modules
  • venv
  • __pycache__
  • dist
  • build
  • .idea
  • .vscode
  • .DS_Store
  • Thumbs.db
  • .gitignore rules

Install

Available on PyPI or Standalone EXE.

Install from PyPI using Python 3.10+, or download the pre-compiled LLMScribe-GUI.exe from GitHub Releases.

From PyPI
pip install llmscribe
From source
git clone https://github.com/AMRITO-KUNDU/llmscribe.git
cd llmscribe
pip install -e .
Build Standalone EXE
# Build standalone LLMScribe-GUI.exe:
pip install pyinstaller
python build_exe.py

Generates dist/LLMScribe-GUI.exe (PyInstaller executable for non-tech users).

llmscribe-mcp
MCP server for Cursor, Claude, and other MCP clients.
LLMScribe-GUI.exe
Standalone desktop app for local project exports.
llmscribe
CLI for map, overview, search, read, diff, and dependency checks.
pip install llmscribe[gui]
Optional GUI extras for desktop support.

Python API

Use the core from your own code.

The same writer the CLI uses is importable. Write a file, or keep the summary as a string and send it wherever you need context.

llmscribe.core.writer
from pathlib import Path
from llmscribe.core import project_map, project_overview, search, read_file, read_files, analyze_dependencies, get_git_diff
from llmscribe.mcp.server import project_map, project_overview, search, read, read_many, project_dependencies, project_diff

# 1. Direct Python Core Usage
text = project_overview(Path("/path/to/project"))

# 2. Call MCP tools programmatically (JSON mode or Markdown)
json_overview = project_overview(path="/path/to/project", format="json")
json_search = search(query="auth", path="/path/to/project", format="json")
json_read = read(file_path="src/main.py", path="/path/to/project", format="json")
json_deps = project_dependencies(file_path="src/main.py", path="/path/to/project", format="json")
diff_markdown = project_diff(path="/path/to/project", staged=False)

FAQ

Common questions

Stop copying files one at a time.

Install LLMScribe, point it at a project, paste the result into the model you already use.

pip install llmscribe