Skip to main content
Glama
salfatigroup

MCP Code Intelligence

by salfatigroup

MCP Code Intelligence

Intelligent code search MCP server with AST analysis, call graphs, dependency tracking, and semantic embeddings.

Features

  • Semantic Code Search: Vector-based similarity search across your codebase

  • Language-Aware Splitting: Automatically detects and handles 25+ programming languages

  • Local-First: Uses SQLite-vec for fast vector search without external services

  • Gitignore Support: Respects .gitignore patterns automatically

AST Intelligence (NEW)

  • Call Graph Analysis: Track who-calls-what relationships

  • Symbol Extraction: Index all functions, classes, and methods

  • Dependency Trees: Map import/export relationships

  • Smart Search: Find code by structure, not just keywords

File Intelligence

  • Semantic File Search: Find files by purpose, not just name

  • Auto-Summarization: AI-generated file summaries

  • Background Indexing: Automatically tracks file changes

Related MCP server: docsgrep

Installation

# Run directly with uvx (no installation needed)
uvx mcp-code-intelligence

Install as Tool

# Install permanently
uv tool install mcp-code-intelligence

# Run
mcp-code-intelligence

Development Installation

# Clone repository
git clone https://github.com/salfatigroup/mcp-code-intelligence
cd mcp-code-intelligence

# Install dependencies
uv sync

# Run
uv run main.py

Usage

Standalone Testing

# Test the server directly
uv run main.py

Configure in Claude Code

Add to your Claude Code MCP configuration file:

Location: ~/.config/claude-code/mcp.json (Linux/Mac) or %APPDATA%\claude-code\mcp.json (Windows)

{
  "mcpServers": {
    "code-intelligence": {
      "command": "uvx",
      "args": ["mcp-code-intelligence"],
      "env": {
        "MCP_CS_PROJECT_ROOT": "/path/to/your/project"
      }
    }
  }
}

Advanced Configuration:

{
  "mcpServers": {
    "code-intelligence": {
      "command": "uvx",
      "args": ["mcp-code-intelligence"],
      "env": {
        "MCP_CS_PROJECT_ROOT": "/Users/username/my-project",
        "MCP_CS_INDEX_INTERVAL": "600",
        "MCP_CS_ENABLE_AST": "true",
        "MCP_CS_ENABLE_SUMMARIES": "true"
      }
    }
  }
}

For Development (from source):

{
  "mcpServers": {
    "code-intelligence": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-code-intelligence", "run", "main.py"],
      "env": {
        "MCP_CS_PROJECT_ROOT": "/path/to/project"
      }
    }
  }
}

Configure in Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "code-intelligence": {
      "command": "uvx",
      "args": ["mcp-code-intelligence"],
      "env": {
        "MCP_CS_PROJECT_ROOT": "/path/to/your/project"
      }
    }
  }
}

Verify Installation

After adding the configuration:

  1. Restart Claude Code/Desktop

  2. Check server status - You should see "code-search" in the MCP servers list

  3. Test a search - Try asking: "Search for authentication logic in the codebase"

The first run will:

  • ✅ Validate git repository

  • ✅ Add .mcp-code-search/ to your project's .gitignore

  • ✅ Download the embedding model (~1.2GB, one-time)

  • ✅ Index all git-tracked files

  • ✅ Start background monitoring for changes

Configuration

Configure via environment variables with MCP_CS_ prefix:

Variable

Default

Description

MCP_CS_PROJECT_ROOT

.

Root directory to index

MCP_CS_DB_PATH

.mcp-code-search/db.sqlite

SQLite database path

MCP_CS_EMBEDDER_MODEL

intfloat/multilingual-e5-large-instruct

HuggingFace model name

MCP_CS_CHUNK_SIZE

1000

Chunk size in characters

MCP_CS_CHUNK_OVERLAP

200

Chunk overlap in characters

MCP_CS_INDEX_INTERVAL

300

Background index interval (seconds)

Example .env:

MCP_CS_PROJECT_ROOT=/path/to/your/project
MCP_CS_INDEX_INTERVAL=600

MCP Tools (7 Total)

Core Search Tools

1. search_codebase(query, limit=10)

  • Semantic code search using vector similarity

  • Returns matching code chunks with file paths and line numbers

2. search_files(query, limit=20, semantic=true)

  • Search files by name OR semantic similarity

  • With semantic=true: finds files by purpose

  • With semantic=false: pattern matching on filenames

3. is_file_indexed(file_path)

  • Check if a file is indexed and its status

  • Returns chunk count, errors, indexing timestamp

4. get_indexing_status(compact=true)

  • Overall indexing health check

  • Compact: summary counts

  • Detailed: per-file breakdown

AST Intelligence Tools (NEW)

5. find_callers(symbol, limit=50)

  • Find all functions that call a specific function/method

  • Critical before refactoring - understand impact

  • Returns callers with file paths, line numbers, signatures

6. find_callees(symbol, limit=50)

  • Find all functions called BY a specific function

  • Understand dependencies and data flow

  • Returns callees with context and external flags

7. get_dependency_tree(file_path, depth=3, direction="both")

  • Map import/export relationships

  • direction="imports": what file depends on

  • direction="importers": what depends on file

  • direction="both": complete dependency graph

Architecture

Project Structure

mcp-code-search/
├── main.py                   # FastMCP server + tools
├── settings/                 # Pydantic settings
├── embedders/                # Embedding providers
├── chunkers/                 # Language-aware text splitters
├── db/                       # Database & vector store
│   └── vectorstore/          # SQLite-vec integration
└── index/                    # Indexing logic
    ├── delta.py              # Git delta detection
    ├── gitignore.py          # .gitignore filtering
    ├── manager.py            # Indexing orchestration
    └── worker.py             # Background worker

Supported Languages

Python, JavaScript/TypeScript, Go, Rust, C/C++, Java, Kotlin, Scala, Ruby, PHP, Swift, C#, Lua, Perl, Haskell, Elixir, Solidity, Protobuf, PowerShell, HTML, Markdown, LaTeX, RST

How It Works

  1. Startup: Initializes embedder, chunker, database, and vector store

  2. Initial Index: Scans git-tracked files and indexes supported file types

  3. Background Indexing: Periodically checks for changed files via git delta

  4. Search: Embeds queries and performs vector similarity search

  5. Gitignore: Respects .gitignore patterns to exclude files

Troubleshooting

"Not a git repository" Error

The server requires a git repository for indexing. Solutions:

# Option 1: Initialize git in your project
cd /path/to/your/project
git init

# Option 2: Set project root to a git repo
export MCP_CS_PROJECT_ROOT=/path/to/git/repo

# Option 3: Add to .env file
echo "MCP_CS_PROJECT_ROOT=/path/to/git/repo" >> .env

Model Download Issues

First run downloads ~1.2GB embedding model. If it fails:

# Manually download model
python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('intfloat/multilingual-e5-large-instruct')"

Performance Tips

  • Chunk Size: Larger chunks = fewer but longer results

  • Index Interval: Higher interval = less CPU usage

  • Ignore Patterns: Add large binary/generated files to speed up indexing

# Environment variables for tuning
export MCP_CS_CHUNK_SIZE=1500        # Larger chunks
export MCP_CS_INDEX_INTERVAL=900     # Index every 15 min

Development

Requirements

  • Python 3.13+

  • PyTorch (for embeddings)

  • Git (for delta detection)

Device Detection

Automatically detects best device:

  • CUDA (NVIDIA GPUs)

  • MPS (Apple Silicon)

  • CPU (fallback)

Project Structure

All code follows the architecture in the implementation plan:

  • settings/: Pydantic configuration

  • embedders/: Embedding providers with device detection

  • chunkers/: Language-aware text splitters

  • db/: Database models and SQLite-vec integration

  • index/: Git delta, gitignore filtering, background worker

Examples

Using in Claude Code

User: "Search for error handling code"
Assistant: *Uses search_codebase tool*
Found error handling in:
- src/api/handler.py:45-67
- src/utils/errors.py:12-34

User: "Find all test files"
Assistant: *Uses search_files tool with query="test_"*
Found test files:
- tests/test_api.py
- tests/test_utils.py

Checking Index Status

User: "What files are indexed?"
Assistant: *Uses get_indexing_status(compact=True)*
Total: 234 files
- completed: 230
- in_progress: 2
- failed: 2

License

See LICENSE file.

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/salfatigroup/mcp-code-intelligence'

If you have feedback or need assistance with the MCP directory API, please join our Discord server