Skip to content

Code Splitter Server

Overview

The Code Splitter MCP Server provides AST-based code analysis and splitting for intelligent code segmentation. It uses Python's Abstract Syntax Tree to accurately parse and segment code into logical components while providing detailed metadata about each segment. The server is powered by FastMCP for enhanced type safety and automatic validation.

Key Features

  • AST-Based Analysis: Uses Python Abstract Syntax Tree for accurate parsing
  • Multiple Split Levels: Functions, classes, methods, imports, or all
  • Detailed Metadata: Function signatures, docstrings, decorators, inheritance
  • Complexity Analysis: Cyclomatic complexity and nesting depth analysis
  • Dependency Analysis: Import analysis and dependency categorization
  • FastMCP Implementation: Modern decorator-based tools with automatic validation

Quick Start

Installation

# Basic installation with FastMCP
make install

# Installation with development dependencies
make dev-install

Running the Server

# Start the FastMCP server
make dev

# Or directly
python -m code_splitter_server.server_fastmcp

# HTTP bridge for REST API access
make serve-http

Available Tools

split_code

Split code into logical segments using AST analysis.

Parameters: - code (required): Source code to split - language: Programming language (currently "python" only) - split_level: What to extract - "function", "class", "method", "import", or "all" - include_metadata: Include detailed metadata (default: true) - preserve_comments: Include comments in output (default: true) - min_lines: Minimum lines per segment (default: 5, min: 1)

Returns: - success: Boolean indicating success/failure - language: Programming language used - split_level: The split level used - total_segments: Number of segments created - segments: Array of code segments with metadata

analyze_code

Analyze code structure, complexity, and dependencies.

Parameters: - code (required): Source code to analyze - language: Programming language (default: "python") - include_complexity: Include complexity metrics (default: true) - include_dependencies: Include dependency analysis (default: true)

Returns: - Code statistics and structure information - Complexity metrics (cyclomatic complexity, nesting depth) - Dependency analysis (imports categorized by type)

extract_functions

Extract only function definitions from code.

Parameters: - code (required): Source code - language: Programming language (default: "python") - include_docstrings: Include function docstrings (default: true) - include_decorators: Include function decorators (default: true)

extract_classes

Extract only class definitions from code.

Parameters: - code (required): Source code - language: Programming language (default: "python") - include_methods: Include class methods (default: true) - include_inheritance: Include inheritance information (default: true)

Configuration

MCP Client Configuration

{
  "mcpServers": {
    "code-splitter": {
      "command": "python",
      "args": ["-m", "code_splitter_server.server_fastmcp"],
      "cwd": "/path/to/code_splitter_server"
    }
  }
}

Examples

Split Python Module into All Components

{
  "code": "def hello():\n    print('Hello')\n\nclass MyClass:\n    def method(self):\n        pass",
  "split_level": "all",
  "include_metadata": true
}

Response:

{
  "success": true,
  "language": "python",
  "split_level": "all",
  "total_segments": 2,
  "segments": [
    {
      "type": "function",
      "name": "hello",
      "code": "def hello():\n    print('Hello')",
      "start_line": 1,
      "end_line": 2,
      "arguments": [],
      "docstring": null
    },
    {
      "type": "class",
      "name": "MyClass",
      "code": "class MyClass:\n    def method(self):\n        pass",
      "start_line": 4,
      "end_line": 6,
      "methods": ["method"],
      "base_classes": []
    }
  ]
}

Analyze Code Complexity

{
  "code": "import os\nimport requests\n\ndef complex_func():\n    if True:\n        for i in range(10):\n            print(i)",
  "include_complexity": true,
  "include_dependencies": true
}

Response:

{
  "success": true,
  "language": "python",
  "total_lines": 7,
  "function_count": 1,
  "class_count": 0,
  "complexity": {
    "cyclomatic_complexity": 3,
    "max_nesting_depth": 1,
    "complexity_rating": "low"
  },
  "dependencies": {
    "imports": {
      "standard_library": ["os"],
      "third_party": ["requests"],
      "local": []
    },
    "total_imports": 2,
    "external_dependencies": true
  }
}

Extract Functions with Decorators

{
  "code": "@decorator\ndef my_func(x, y):\n    '''Docstring'''\n    return x + y",
  "include_docstrings": true,
  "include_decorators": true
}

Extract Classes with Methods

{
  "code": "class MyClass(BaseClass):\n    def __init__(self):\n        pass\n    def method(self):\n        return True",
  "include_methods": true,
  "include_inheritance": true
}

Integration

With MCP Gateway

# Start the code splitter server via HTTP
make serve-http

# Register with MCP Gateway
curl -X POST http://localhost:8000/gateways \
  -H "Content-Type: application/json" \
  -d '{
    "name": "code-splitter",
    "url": "http://localhost:9000",
    "description": "AST-based code analysis server"
  }'

Programmatic Usage

import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def split_code():
    server_params = StdioServerParameters(
        command="python",
        args=["-m", "code_splitter_server.server_fastmcp"]
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()

            result = await session.call_tool("split_code", {
                "code": "def example():\n    return 'Hello'",
                "split_level": "function",
                "include_metadata": True
            })

            print(result.content[0].text)

asyncio.run(split_code())

Code Analysis Features

Split Levels

  • function: Extract all function definitions
  • class: Extract all class definitions
  • method: Extract all methods from classes
  • import: Extract all import statements
  • all: Extract everything above

Complexity Metrics

The complexity analysis includes: - Cyclomatic Complexity: Measures code complexity based on control flow - Nesting Depth: Maximum depth of nested structures - Complexity Rating: Low (<10), Medium (10-20), High (>20)

Dependency Categorization

Dependencies are categorized into: - Standard Library: Built-in Python modules - Third Party: External packages - Local: Relative imports

Supported Languages

  • Python: Full AST support with comprehensive analysis
  • Future: JavaScript, TypeScript, Java (with tree-sitter integration)

Use Cases

Code Documentation Generation

Extract functions and classes to automatically generate API documentation.

Code Review Assistance

Analyze complexity metrics to identify areas that need refactoring.

Codebase Migration

Split large files into smaller, more manageable modules.

Dependency Analysis

Understand import relationships and external dependencies.

Educational Tools

Help students understand code structure and organization.

Performance Considerations

For Large Files

  • Consider splitting by specific levels instead of "all"
  • Increase min_lines to reduce number of small segments
  • Disable metadata if not needed

Syntax Error Handling

If code splitting fails with syntax errors: - Ensure the code is valid Python - Check for proper indentation - Verify all brackets and quotes are balanced