codetex-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@codetex-mcp search for authentication implementation in my-project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
codetex-mcp
A commit-aware code context manager for LLMs. Indexes Git repositories into a multi-tier knowledge hierarchy — repo overviews, file summaries, and symbol details — stored in SQLite with vector search. Serves context to LLM clients via the Model Context Protocol (MCP) or a local CLI.
What It Does
codetex builds a structured, searchable index of your codebase that LLMs can query on demand:
Tier 1 — Repo Overview: Purpose, architecture, directory structure, key technologies, entry points
Tier 2 — File Summaries: Per-file purpose, public interfaces, dependencies, roles
Tier 3 — Symbol Details: Function/class signatures, parameters, return types, call relationships
Summaries are generated by an LLM (Anthropic Claude). Embeddings are computed locally with sentence-transformers for semantic search. Everything is stored in a single SQLite database with sqlite-vec for vector queries.
Incremental sync means only changed files are re-analyzed when you update your code.
Related MCP server: code-graph-mcp
Requirements
Python 3.12+
Git
An Anthropic API key (for indexing)
Installation
# With pip
pip install codetex-mcp
# With uv (recommended)
uv tool install codetex-mcpQuick Start
1. Set your Anthropic API key
# Via environment variable
export ANTHROPIC_API_KEY=sk-ant-...
# Or via config
codetex config set llm.api_key sk-ant-...2. Add a repository
# Local repo
codetex add /path/to/your/project
# Remote repo (clones to ~/.codetex/repos/)
codetex add https://github.com/user/repo.git3. Index it
# Preview what indexing will cost (no API calls)
codetex index my-project --dry-run
# Build the full index
codetex index my-project4. Query your codebase
# Repo overview (Tier 1)
codetex context my-project
# File summary (Tier 2)
codetex context my-project --file src/auth/login.py
# Symbol detail (Tier 3)
codetex context my-project --symbol authenticate_user
# Semantic search
codetex context my-project --query "how is authentication implemented?"5. Keep it up to date
# Incremental sync — only re-analyzes changed files
codetex sync my-projectMCP Server Setup
The MCP server lets LLM clients (like Claude Code, Cursor, Windsurf, etc.) query your indexed codebases directly.
Claude Code
Add to your Claude Code MCP settings (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"codetex": {
"command": "codetex",
"args": ["serve"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}If you installed with uv tool, use the full path:
{
"mcpServers": {
"codetex": {
"command": "/path/to/codetex",
"args": ["serve"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}Find the path with which codetex or uv tool dir.
Other MCP Clients
Any client that supports MCP stdio transport can use codetex. The server command is:
codetex serveAvailable MCP Tools
Once connected, the LLM has access to 7 tools:
Tool | Description |
| Tier 1 repo overview (architecture, technologies, entry points) |
| Tier 2 file summary with symbol list |
| Tier 3 full symbol detail (signature, params, relationships) |
| Semantic search across all indexed context |
| Index status (staleness, file/symbol counts, last indexed) |
| Trigger incremental sync from within the LLM session |
| List all registered repositories |
CLI Reference
codetex add <target>
Register a git repository. Accepts a local path or remote URL.
codetex add . # Current directory
codetex add /path/to/repo # Local path
codetex add https://github.com/user/repo.git # Remote (clones locally)
codetex add git@github.com:user/repo.git # SSH remotecodetex index <repo-name>
Build a full index for a registered repository.
codetex index my-project # Full index
codetex index my-project --dry-run # Preview (files, symbols, estimated LLM calls/tokens)
codetex index my-project --path src/ # Index only files under src/codetex sync <repo-name>
Incremental sync to the current HEAD. Only files changed since the last indexed commit are re-analyzed.
codetex sync my-project # Sync changes
codetex sync my-project --dry-run # Preview what would change
codetex sync my-project --path src/ # Sync only changes under src/codetex context <repo-name>
Query indexed context at any tier.
codetex context my-project # Tier 1: repo overview
codetex context my-project --file src/main.py # Tier 2: file summary
codetex context my-project --symbol MyClass # Tier 3: symbol detail
codetex context my-project --query "error handling" # Semantic searchcodetex status <repo-name>
Show index status: indexed commit, current HEAD, staleness, file/symbol counts, token usage.
codetex list
List all registered repositories with their index status.
codetex config show
Display the current configuration.
codetex config set <key> <value>
Update a configuration value.
codetex config set llm.api_key sk-ant-...
codetex config set llm.model claude-sonnet-4-5-20250929
codetex config set indexing.max_file_size_kb 1024
codetex config set indexing.max_concurrent_llm_calls 10Configuration
Configuration is loaded in layers (last wins):
Defaults — sensible out-of-the-box values
TOML file —
~/.codetex/config.tomlEnvironment variables — override everything
Config file
# ~/.codetex/config.toml
[storage]
data_dir = "~/.codetex" # Base directory for DB and cloned repos
[llm]
provider = "anthropic" # LLM provider (currently: anthropic)
model = "claude-sonnet-4-5-20250929" # Model used for summarization
api_key = "sk-ant-..." # Anthropic API key
[indexing]
max_file_size_kb = 512 # Skip files larger than this
max_concurrent_llm_calls = 5 # Parallel LLM requests during indexing
tier1_rebuild_threshold = 0.10 # Rebuild repo overview if >=10% of files changed on sync
[embedding]
model = "all-MiniLM-L6-v2" # Sentence-transformers model for embeddingsEnvironment variables
Variable | Maps to | Example |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
File Exclusion
Files are filtered through multiple stages:
Default excludes —
node_modules/,__pycache__/,.git/,dist/,build/,.venv/,*.lock,*.min.js,*.pyc,*.so, etc..gitignore— standard gitignore rules from your repo.codetexignore— same syntax as.gitignore, placed in your repo root. Use!patternto un-ignore filesFile size — files exceeding
max_file_size_kbare skippedBinary detection — files with null bytes in the first 8 KB are skipped
Language Support
Language | Tree-sitter (full AST) | Fallback (regex) |
Python | Yes | Yes |
JavaScript | Yes | Yes |
TypeScript | Yes | Yes |
Go | Yes | Yes |
Rust | Yes | Yes |
Java | Yes | Yes |
Ruby | Yes | Yes |
C/C++ | Yes | Yes |
All others | — | Yes |
Tree-sitter grammars for all 8 languages are installed automatically. For other languages, the fallback parser uses regex patterns to extract functions, classes, and imports.
Architecture
CLI (Typer) ──┐
├──▶ Core Services (Indexer, Syncer, ContextStore, SearchEngine)
MCP (FastMCP)─┘ │ │ │
Analysis LLM Provider Embeddings
(tree-sitter + (Anthropic) (sentence-transformers)
regex fallback) │ │
└──────────────┴──────────────┘
│
SQLite + sqlite-vecTwo entry points (CLI and MCP server) share the same core service layer
No DI framework — services are wired via a
create_app()factoryAll core services are async — CLI bridges with
asyncio.run()Embeddings are local — no external API calls for vector search (model auto-downloads on first run, ~90 MB)
Single SQLite database — 6 main tables + 2 vector tables (384-dimensional embeddings)
Development
git clone https://github.com/mrosata/codetex-mcp.git
cd codetex-mcp
# Install dependencies (including dev)
uv sync
# Run tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=codetex_mcp
# Lint and format
uv run ruff check src/ tests/
uv run ruff format src/ tests/
# Type check
uv run mypy src/Releasing
Releases are automated via GitHub Actions and python-semantic-release. Version bumps are driven by conventional commit messages on main.
Commit message format
Prefix | Effect | Example |
| Patch bump (0.1.0 → 0.1.1) |
|
| Minor bump (0.1.0 → 0.2.0) |
|
| Major bump (0.1.0 → 1.0.0) |
|
| No release |
|
A BREAKING CHANGE: line in the commit body also triggers a major bump.
How it works
Push or merge a PR to
mainCI runs lint, type check, and tests
The release workflow analyzes commits since the last tag
If a version bump is needed, it:
Updates the version in
pyproject.tomlCreates a git tag (e.g.,
v0.2.0)Publishes a GitHub Release with a changelog
Builds and publishes the package to PyPI
Manual release (not recommended)
If you need to release without the automation:
uv build
uv publishLicense
MIT
Available Tools
7 toolsget_file_contextC
Return the Tier 2 file summary for a specific file.
Includes file purpose, public interfaces, dependencies, role classification, line count, and token count.
Inputs: file_path (required), repo_name (required). Returns: result
get_repo_overviewA
Return the Tier 1 markdown overview for a repository.
Includes repository purpose, directory structure, key technologies, entry points, and architecture patterns.
Inputs: repo_name (required). Returns: result
get_repo_statusB
Return index status for a repository.
Includes indexed commit, current HEAD, staleness indicator, file count, symbol count, total tokens, and last indexed time.
Inputs: repo_name (required). Returns: result
get_symbol_detailC
Return the Tier 3 detail for a specific symbol.
Includes full signature, description, parameters with types, return type, call relationships, and file location.
Inputs: repo_name (required), symbol_name (required). Returns: result
list_reposA
List all registered repositories with their status.
Returns a markdown table of repository names, remote URLs, indexed commits, and file counts.
Inputs: no named parameters. Returns: result
search_contextC
Search for relevant code context using semantic similarity.
Returns a ranked list of matching files and symbols with relevance scores.
Inputs: query (required), repo_name (required), max_results. Returns: result
sync_repoB
Trigger an incremental sync for a repository.
Processes only files changed since the last indexed commit. Returns a summary of changes made.
Inputs: repo_name (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool targets a distinct concern: repo-level overview, file context, symbol detail, semantic search, status, syncing, and repo listing. There is no meaningful overlap or ambiguity between tool boundaries.
Tool names consistently follow a snake_case verb_noun pattern, mostly using get_ for retrieval actions. Minor variation like search_context and sync_repo still fit the same predictable style.
Seven tools is well-scoped for a code context and indexing server. Each tool earns its place by covering a distinct retrieval or maintenance operation without unnecessary bloat.
The set covers repository overview, file context, symbol detail, semantic search, status, sync, and listing—covering the core workflows well. The main gap is the lack of explicit repo registration or full-sync tools, though these may be handled externally.
Maintenance
Related MCP Connectors
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Intelligent context infrastructure for AI teams: knowledge graph, sessions, tasks, documents.
Codebase intelligence for AI coding agents: graph, git history, docs, decisions, code health.
The context platform for AI agents: code search, team decisions, and grounded project context.
Related MCP Servers
- AlicenseAqualityCmaintenanceA semantic code context server that connects your local repository to AI assistants via the Model Context Protocol, enabling dynamic codebase exploration without copy-pasting.576 npm4MIT
- AlicenseNot gradedqualityBmaintenanceTurns a codebase into a queryable graph with semantic search, call graphs, and control/data flow analysis, served to AI coding agents via the Model Context Protocol.256 npmMIT
- FlicenseNot gradedqualityDmaintenanceTransforms local Git repositories into queryable, context-rich knowledge bases via AST-aware chunking and Git metadata, enabling AI assistants to search and understand codebases with semantic precision.-
- AlicenseNot gradedqualityBmaintenanceProvides AI coding agents with structured, deterministic repository intelligence—file tree, dependencies, hotspots, and git history—via Model Context Protocol, enabling them to understand codebases without reconstructing architecture from scratch.146 npm1MIT