Skip to main content

Structural codebase indexer with MCP server for AI-assisted development

Project description

mcp-codebase-index

PyPI version CI Python 3.11+ License: AGPL-3.0 MCP Zero Dependencies

A structural codebase indexer with an MCP server for AI-assisted development. Zero runtime dependencies — uses Python's ast module for Python analysis and regex for TypeScript/JS. Requires Python 3.11+.

What It Does

Indexes codebases by parsing source files into structural metadata -- functions, classes, imports, dependency graphs, and cross-file call chains -- then exposes 17 query tools via the Model Context Protocol, enabling Claude Code and other MCP clients to navigate codebases efficiently without reading entire files.

Language Support

Language Method Extracts
Python (.py) AST parsing Functions, classes, methods, imports, dependency graph
TypeScript/JS (.ts, .tsx, .js, .jsx) Regex-based Functions, arrow functions, classes, interfaces, type aliases, imports
Markdown/Text (.md, .txt, .rst) Heading detection Sections (# headings, underlines, numbered, ALL-CAPS)
Other Generic Line counts only

Installation

pip install "mcp-codebase-index[mcp]"

The [mcp] extra includes the MCP server dependency. Omit it if you only need the programmatic API.

For development (from a local clone):

pip install -e ".[dev,mcp]"

MCP Server

Running

# As a console script
PROJECT_ROOT=/path/to/project mcp-codebase-index

# As a Python module
PROJECT_ROOT=/path/to/project python -m mcp_codebase_index.server

PROJECT_ROOT specifies which directory to index. Defaults to the current working directory.

Configuring with OpenClaw

Install the package on the machine where OpenClaw is running:

# Local install
pip install "mcp-codebase-index[mcp]"

# Or inside a Docker container / remote VPS
docker exec -it openclaw bash
pip install "mcp-codebase-index[mcp]"

Add the MCP server to your OpenClaw agent config (openclaw.json):

{
  "agents": {
    "list": [{
      "id": "main",
      "mcp": {
        "servers": [
          {
            "name": "codebase-index",
            "command": "mcp-codebase-index",
            "env": {
              "PROJECT_ROOT": "/path/to/project"
            }
          }
        ]
      }
    }]
  }
}

Restart OpenClaw and verify the connection:

openclaw mcp list

All 17 tools will be available to your agent.

Performance note: OpenClaw's default MCP integration via mcporter spawns a fresh server process per tool call, which means the index is rebuilt each time (~1-2s for small projects, longer for large ones). For persistent connections, use the openclaw-mcp-adapter plugin, which connects once at startup and keeps the server running:

pip install openclaw-mcp-adapter

Configuring with Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "codebase-index": {
      "command": "mcp-codebase-index",
      "env": {
        "PROJECT_ROOT": "/path/to/project"
      }
    }
  }
}

Or using the Python module directly (useful if installed in a virtualenv):

{
  "mcpServers": {
    "codebase-index": {
      "command": "/path/to/.venv/bin/python3",
      "args": ["-m", "mcp_codebase_index.server"],
      "env": {
        "PROJECT_ROOT": "/path/to/project"
      }
    }
  }
}

Available Tools (17)

Tool Description
get_project_summary File count, packages, top classes/functions
list_files List indexed files with optional glob filter
get_structure_summary Structure of a file or the whole project
get_functions List functions with name, lines, params
get_classes List classes with name, lines, methods, bases
get_imports List imports with module, names, line
get_function_source Full source of a function/method
get_class_source Full source of a class
find_symbol Find where a symbol is defined (file, line, type)
get_dependencies What a symbol calls/uses
get_dependents What calls/uses a symbol
get_change_impact Direct + transitive dependents
get_call_chain Shortest dependency path (BFS)
get_file_dependencies Files imported by a given file
get_file_dependents Files that import from a given file
search_codebase Regex search across all files (max 100 results)
reindex Re-index the project after file changes (MCP server only)

Programmatic Usage

from mcp_codebase_index.project_indexer import ProjectIndexer
from mcp_codebase_index.query_api import create_project_query_functions

indexer = ProjectIndexer("/path/to/project", include_patterns=["**/*.py"])
index = indexer.index()
query_funcs = create_project_query_functions(index)

# Use query functions
print(query_funcs["get_project_summary"]())
print(query_funcs["find_symbol"]("MyClass"))
print(query_funcs["get_change_impact"]("some_function"))

Development

pip install -e ".[dev,mcp]"
pytest tests/ -v
ruff check src/ tests/

References

The structural indexer was originally developed as part of the RMLPlus project, an implementation of the Recursive Language Models framework.

License

This project is dual-licensed:

If you're using mcp-codebase-index as a standalone MCP server for development, the AGPL-3.0 license applies at no cost. If you're embedding it in a proprietary product or offering it as part of a hosted service, you'll need a commercial license. See COMMERCIAL-LICENSE.md for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_codebase_index-0.2.2.tar.gz (78.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_codebase_index-0.2.2-py3-none-any.whl (57.9 kB view details)

Uploaded Python 3

File details

Details for the file mcp_codebase_index-0.2.2.tar.gz.

File metadata

  • Download URL: mcp_codebase_index-0.2.2.tar.gz
  • Upload date:
  • Size: 78.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for mcp_codebase_index-0.2.2.tar.gz
Algorithm Hash digest
SHA256 30944cace446aadc9f7ac7136f1f6785e55e9e5af649ef684da8cd37f28e74d6
MD5 2da4a7d4c3e02a8d8420c2b05572cea2
BLAKE2b-256 90740b1cb28a838fb20ea17bb3af07282d407b11817dbc25e647e911f07b0973

See more details on using hashes here.

File details

Details for the file mcp_codebase_index-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_codebase_index-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ec327db86ac0b3e9695602e616cd1a13bc08e9a5824fd04d5becee04af45406d
MD5 130ed97062ce2db4d82d1f68bf1b1814
BLAKE2b-256 ca2b0f8c61d068dfbd3fbe8d8bcf2d36c814f3ad8af37928d32d59c795ee6ea8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page