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.
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 llmscribeThree ways to run: llmscribe-mcp, LLMScribe-GUI.exe, llmscribe
LLMScribe
v1.3.0Select a project folder and press Generate. The output will appear here.
Interactive demo — Generate, copy, or download a sample export.
The 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.”
“Nine searches and fourteen files for one variable — the search itself isn't ranked.”
“I asked it what it was doing. It said it was looking at unnecessary files.”
“It randomly proceeds to re-read the same files over and over again.”
“Stale fixtures, mock data, outdated comments — it wastes tokens and makes me argue with my agent non stop.”
“Search reports no matches, then a plain grep finds the content immediately.”
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
01
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.
02
LLMScribe builds a directory tree, skips junk and .gitignore matches, and concatenates every supported source file into one document.
03
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
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
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
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-mcpAlso 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: 300OpenAI Codex CLI
~/.codex/config.toml
[mcp_servers.llmscribe] command = "llmscribe-mcp"
Output formats
Choose Markdown mode for pasting into chat prompts, or JSON mode for programmatic agent parsing with metadata.
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-in Model Context Protocol server featuring 7 composable tools (overview, map, search, batch file read, and git diff) with structured JSON envelopes.
Inspect modified files and unified diffs directly via project_diff tool, supporting staged, unstaged, and specific commit comparisons.
MCP server for agents, standalone Windows EXE for non-tech users, modern CustomTkinter GUI, and a CLI for terminal power users.
Drops .git, node_modules, venv, build caches, IDE folders, OS junk, and anything listed in the project's own .gitignore.
Enforces 50-file batch caps, 400k character content limits, 200k diff character caps, and 13 closed, standardized error codes.
Import llmscribe.core or llmscribe.mcp from Python. Use run(), build_project_summary(), or project_overview() programmatically.
Common source code, configuration, scripts, and text extensions.
Dependencies, build outputs, IDE config, binary assets, and your .gitignore.
Install
Install from PyPI using Python 3.10+, or download the pre-compiled LLMScribe-GUI.exe from GitHub Releases.
pip install llmscribe
git clone https://github.com/AMRITO-KUNDU/llmscribe.git cd llmscribe pip install -e .
# Build standalone LLMScribe-GUI.exe: pip install pyinstaller python build_exe.py
Generates dist/LLMScribe-GUI.exe (PyInstaller executable for non-tech users).
Python API
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.
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
Install LLMScribe, point it at a project, paste the result into the model you already use.
pip install llmscribe