Skip to main content
Glama
DarkEden-coding

TreeSitter Code Structure MCP Server

TreeSitter MCP Server

A fast Model Context Protocol (MCP) server that analyzes source code files and extracts their structure in a markdown format optimized for LLM consumption.

Features

  • Multi-language Support: Python, JavaScript, TypeScript, Java, C#, Go, and Rust

  • Fast Parsing: Uses tree-sitter for efficient AST parsing

  • Comprehensive Structure: Extracts classes, functions, nested elements

  • Line Numbers: Tracks start and end lines for each element

  • Nesting Levels: Shows the depth of nested elements

  • Parameters & Return Types: Extracts function signatures

  • Optional Docstrings: Configurable docstring extraction

  • Multi-File Analysis: Analyze single or multiple files in one request

  • Error Handling: Parses as much as possible and indicates error locations

  • LLM-Optimized Output: Markdown format designed for easy LLM consumption

Installation

uv sync

Using pip

pip install -r requirements.txt

Usage

Running the MCP Server

uv run python src/server.py

Or directly:

python src/server.py

MCP Configuration

Add the following to your MCP client configuration (e.g., Claude Desktop):

{
  "mcpServers": {
    "CodeStructureAnalyzer": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/TreeSitterMcp",
        "run",
        "python",
        "src/server.py"
      ]
    }
  }
}

MCP Tool: query

Analyzes the structure of one or more source code files.

Parameters:

  • file_path (required): Path to the source code file(s) to analyze. Can be either:

    • A single file path as a string (e.g., "src/models.py")

    • An array of file paths (e.g., ["src/models.py", "src/config.py"])

  • include_docstrings (optional, default: false): Whether to include docstrings in the output

Single File Analysis

Example Request:

{
  "name": "query",
  "arguments": {
    "file_path": "src/models.py",
    "include_docstrings": true
  }
}

Multi-File Analysis

Example Request:

{
  "name": "query",
  "arguments": {
    "file_path": ["src/models.py", "src/config.py", "src/server.py"],
    "include_docstrings": false
  }
}

Output Format

The output is optimized for token efficiency and follows this schema: Format: ### Name (Start-End, Nesting, [Parent]) | - Type | - [Parameters] | - [Return Type] | - [Docstring]

Example Output:

Format: ### `Name` (Start-End, Nesting, [Parent]) | - Type | - [Parameters] | - [Return Type] | - [Docstring]

# `src/models.py`

### `MyClass` (10-50, N:0)
- Class
- A sample class for demonstration.

  ### `__init__` (15-25, N:1, P: `MyClass`)
  - Function
  - (self, param1: str, param2: int)
  - -> None
  - Initialize the class.

Multi-File Output Example

Format: ### `Name` (Start-End, Nesting, [Parent]) | - Type | - [Parameters] | - [Return Type] | - [Docstring]

# `src/models.py`

### `MyClass` (10-50, N:0)
- Class
...

---
# `src/config.py`

### `get_language_from_extension` (10-20, N:0)
- Function
...

Supported Languages

Language

File Extensions

Python

.py

JavaScript

.js, .mjs, .cjs

TypeScript

.ts, .tsx

Java

.java

C#

.cs

Go

.go

Rust

.rs

Architecture

The server is organized into the following modules:

  • src/mcp_impl/server.py: MCP server implementation with tool definitions

  • src/parsers/tree_sitter.py: Tree-sitter parser integration

  • src/extractors/structure.py: Code structure extraction logic

  • src/formatters/markdown.py: Markdown formatting for output

  • src/config.py: Language configuration and mappings

  • src/models.py: Data models for code elements

Error Handling

The server attempts to parse as much of the file as possible, even when there are syntax errors. Errors are reported in a dedicated section:

## Parse Errors

⚠️ **Error at Line 42**: Syntax error
return self.process(item

Development

Running Tests

uv run pytest

Code Formatting

uv run black src/

Type Checking

uv run mypy src/

License

MIT License

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access 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/DarkEden-coding/CodeStructureMCP'

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