MCP Hub
Back to servers

flyto-indexer

Code intelligence MCP server: impact analysis, dependency graphs, dead code detection.

Stars
2
Updated
Feb 12, 2026
Validated
Feb 20, 2026

Quick Install

uvx flyto-indexer

Flyto Indexer

Code intelligence MCP server for AI-assisted development

CI PyPI License Python 3.10+

Impact analysis • Smart code search • Dependency graphs • Dead code detection
Works with Claude Code, Cursor, Windsurf, and any MCP client


Flyto Indexer demo — impact analysis before renaming

"What breaks if I change this?" — Every developer asks this. Flyto Indexer answers it.

It indexes your codebase, understands symbol relationships, and exposes 23 MCP tools that give any AI assistant deep code intelligence — impact analysis, reference finding, dependency tracking, and more.

Zero dependencies. Pure Python standard library. Runs locally. No code leaves your machine.

Quick Start

Option A: Install from PyPI

pip install flyto-indexer

# Index your project (creates .flyto-index/)
flyto-index scan /path/to/your/project

# Start MCP server
python -m flyto_indexer.mcp_server

Option B: Run from source

git clone https://github.com/flytohub/flyto-indexer.git
cd flyto-indexer
pip install -e .

# Index your project
flyto-index scan /path/to/your/project

# Start MCP server (from repo)
python -m src.mcp_server

Tip: Add .flyto-index/ to your .gitignore. The index is typically a few MB for medium projects.

Connect to Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "flyto-indexer": {
      "command": "python3",
      "args": ["-m", "flyto_indexer.mcp_server"]
    }
  }
}
Running from source instead?
{
  "mcpServers": {
    "flyto-indexer": {
      "command": "python3",
      "args": ["-m", "src.mcp_server"],
      "cwd": "/path/to/flyto-indexer"
    }
  }
}

That's it. Claude Code now has access to all 23 tools.

Why This Exists

AI coding assistants are powerful, but they're flying blind:

  • They don't know what breaks when they change a function
  • They can't trace dependencies across files or projects
  • They have no idea which code is dead and safe to remove
  • They can't assess the risk of a proposed change

Flyto Indexer gives AI the structural understanding it needs to make safe, informed changes.

See It In Action

You:    "Rename validateOrder to validate_order — what breaks?"

Claude: Let me check the impact first.
        → impact_analysis("myproject:src/validators.py:function:validateOrder")
        → find_references("validateOrder")

        ⚠️ Modifying validateOrder affects 5 locations:
          → Cart.vue:42 — calls validateOrder() directly
          → CheckoutAPI.py:18 — imports validateOrder
          → test_validators.py:55 — tests validateOrder
          Risk: MEDIUM — 3 files, 2 projects

        I'll rename all call sites and update the tests.
        → edit_impact_preview("validateOrder", change_type="rename")

What It Does

Impact Analysis

> "What happens if I change the checkout() function?"

⚠️ Modifying checkout() affects:
  → Cart.vue (direct caller)
  → QuickBuy.vue (calls via useCart)
  → /api/checkout (API endpoint)
  Risk: MEDIUM — 3 files affected, no breaking changes detected

Smart Code Search

Search uses symbol-aware ranking with metadata matching — no embeddings or external services required.

> search_code("authentication")

  1. src/composables/useAuth.ts — Auth state management, login/logout, JWT tokens
  2. src/api/auth.py — Authentication API endpoints, rate limiting
  3. src/middleware/auth.ts — Route guards, token validation

Dependency Graph

> dependency_graph("src/composables/useCart.ts")

  useCart.ts
  ├── imports: useAuth, usePayment, cartApi
  └── depended on by: Cart.vue, QuickBuy.vue, CartSidebar.vue

Cross-Project Tracking

> cross_project_impact("validateOrder")

  Defined in: backend/src/validators.py
  Used by:
    → frontend (3 references)
    → mobile-app (1 reference)
    → admin-panel (2 references)
  Risk: HIGH — changes affect 3 other projects

MCP Tools

23 tools organized by category. Start with these 6:

ToolWhat it does
impact_analysis"What breaks if I change this?"
find_references"Who calls this function?"
search_code"Where is the auth code?"
dependency_graph"What does this file depend on?"
get_symbol_content"Show me the full function"
find_dead_code"What can I safely delete?"
All 23 tools

Code Search & Discovery

ToolDescription
search_codeSymbol-aware search across all indexed projects
get_symbol_contentGet full source code of a function/class
get_file_symbolsList all symbols defined in a file
get_file_infoGet file purpose, category, keywords, dependencies
fulltext_searchSearch inside comments, strings, and TODO markers

Impact & Dependencies

ToolDescription
impact_analysisAnalyze blast radius of modifying a symbol
find_referencesFind all callers and importers of a symbol
dependency_graphShow import chains and dependent relationships
cross_project_impactTrack API usage across multiple projects
edit_impact_previewPreview impact before renaming, deleting, or changing signatures

Project Overview

ToolDescription
list_projectsList all indexed projects with statistics
list_categoriesShow code categories (auth, payment, etc.)
list_apisList all API endpoints found in code
check_index_statusCheck if the index is up-to-date

Code Quality

ToolDescription
find_dead_codeDetect unreferenced functions, classes, and components
find_todosFind TODO, FIXME, HACK markers across the codebase

File Context

ToolDescription
get_file_contextComplete context package for a file (info + symbols + deps)
find_test_fileFind the test file for a source file (or vice versa)
get_descriptionGet the semantic one-liner for a file
update_descriptionWrite or update a file description

Session & Indexing

ToolDescription
session_trackTrack workspace events for search boosting
session_getInspect current session state
check_and_reindexDetect file changes and trigger re-indexing

Supported Languages

LanguageParserSymbols Extracted
PythonASTFunctions, classes, methods, decorators
TypeScript/JavaScriptCustom parserFunctions, classes, interfaces, types, exports
VueSFC parserComponents, composables, emits, props
GoCustom parserFunctions, structs, methods, interfaces
RustCustom parserFunctions, structs, impl blocks, traits
JavaCustom parserClasses, methods, interfaces, annotations

Architecture

your-project/
├── src/            ← Your code (any language)
└── .flyto-index/   ← Generated index (add to .gitignore)
    ├── index.json.gz          # Symbol index (compressed)
    ├── content.jsonl           # Source code content (lazy-loaded)
    ├── PROJECT_MAP.json.gz     # File metadata
    └── workspace_manifest.json # Incremental tracking

How It Works

  1. Scan — AST parsers extract symbols (functions, classes, components) from your code
  2. Index — Symbols are organized into a searchable index with dependency relationships
  3. Serve — The MCP server exposes 23 tools that any AI client can call
  4. Incremental — Only changed files are re-scanned (tracked via content hashes)

Key Concepts

Symbol ID — Every symbol has a unique, stable identifier:

project:path:type:name
─────── ──── ──── ────
  │       │    │    └── Symbol name
  │       │    └── function, class, method, component, composable
  │       └── File path relative to project root
  └── Project name

Depth Levels — Progressive detail:

  • L0 — Project outline (directory tree + one-liner per file)
  • L1 — File summary (exports, imports, main functionality)
  • L2 — Code chunks (only the specific symbols you need)

HTTP API

For editors and tools that don't support MCP, there's a local REST API. This runs on your machine — no data is sent externally.

# Start the local HTTP server
python -m src.api_server --port 8765

# Search
curl -X POST http://localhost:8765/search \
  -H "Content-Type: application/json" \
  -d '{"query": "authentication"}'

# Impact analysis
curl -X POST http://localhost:8765/impact \
  -H "Content-Type: application/json" \
  -d '{"symbol_id": "myproject:src/auth.py:function:login"}'
EndpointMethodDescription
/searchPOSTKeyword search
/file/infoPOSTFile metadata
/file/symbolsPOSTList file symbols
/impactPOSTImpact analysis
/categoriesGETList categories
/apisGETList API endpoints
/statsGETIndex statistics
/openapi.jsonGETOpenAPI spec
/healthGETHealth check

Integrations

CLI

# Scan and index a project
flyto-index scan /path/to/project

# Check what changed since last index
flyto-index status /path/to/project

# Analyze impact of changing a symbol
flyto-index impact myproject:src/auth.py:function:login

# Generate project outline (L0)
flyto-index brief /path/to/project

# Annotate file purposes
flyto-index describe /path/to/project

CI/CD Integration

# .github/workflows/index.yml
on:
  push:
    branches: [main, develop]

jobs:
  index:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: pip install flyto-indexer
      - run: flyto-index scan . --incremental

Security & Privacy

  • Runs 100% locally. No code is sent to any external service.
  • Index stored under .flyto-index/ in your project directory.
  • Clean up by deleting .flyto-index/ — there's no hidden state elsewhere.

Limitations

  • Static analysis only — dynamic imports, metaprogramming, and runtime-generated code are not tracked.
  • No type inference — TypeScript type-level computations and complex generics are simplified.
  • Vue <script setup> — most patterns are supported, but some edge cases with dynamic defineProps may be missed.
  • Cross-project tracking requires all projects to be indexed in the same workspace.

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT — Use it however you want.

Reviews

No reviews yet

Sign in to write a review