代码结构分析器

一个快速的模型上下文协议(MCP)服务器,用于分析源代码文件并将它们的结构提取为Markdown格式,优化了大型语言模型(LLM)的输入。

  • by DarkEden-coding
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 DarkEden-coding/CodeStructureMCP

使用说明

TreeSitter MCP服务器

一种快速的模型上下文协议(MCP)服务器,用于分析源代码文件,并以针对LLM消费优化的markdown格式提取其结构。

特性

  • 多语言支持:Python、JavaScript、TypeScript、Java、C#、Go和Rust
  • 快速解析:使用树形图进行高效的AST解析
  • 综合结构:提取类、函数、嵌套元素
  • 行号:跟踪每个元素的开始和结束线
  • 嵌套级别:显示嵌套元素的深度
  • 参数和返回类型:提取函数签名
  • 可选文档字符串:可配置的文档字符串提取
  • 多文件分析:在一个请求中分析单个或多个文件
  • 错误处理:尽可能多地分析并指示错误位置
  • LLM优化输出:Markdown格式,便于LLM使用

安装

使用紫外线(推荐)

uv sync

使用pip

pip install -r requirements.txt

用法

运行MCP服务器

uv run python src/server.py

或者直接:

python src/server.py

MCP配置

将以下内容添加到MCP客户端配置中(例如,Claude Desktop):

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

MCP工具: query

分析一个或多个源代码文件的结构。

参数:

  • file_path (必需):要分析的源代码文件的路径。可以是:
    • 将单个文件路径作为字符串(例如。, "src/models.py")
    • 一系列文件路径(例如。, ["src/models.py", "src/config.py"])
  • include_docstrings (可选,默认值:false):是否在输出中包含文档字符串

单文件分析

请求示例:

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

多文件分析

请求示例:

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

输出格式

输出针对令牌效率进行了优化,并遵循以下模式: Format: ### Name (Start-End, Nesting, [Parent]) | - Type | - [Parameters] | - [Return Type] | - [Docstring]

输出示例:

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.

多文件输出示例

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
...

支持的语言

语言 文件扩展名
Python .py
JavaScript .js、.mjs、.cjs
TypeScript .ts,.tsx
Java .Java
C# .cs
去吧
锈蚀 .rs

建筑

服务器分为以下模块:

  • src/mcp_impl/server.py:带有工具定义的MCP服务器实现
  • src/parsers/tree_sitter.py:树型解析器集成
  • src/extractors/structure.py:代码结构提取逻辑
  • src/formatters/markdown.py:输出的Markdown格式
  • src/config.py:语言配置和映射
  • src/models.py:代码元素的数据模型

错误处理

即使存在语法错误,服务器也会尝试解析尽可能多的文件。错误在专用部分报告:

## Parse Errors

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

发展

运行测试

uv run pytest

代码格式化

uv run black src/

类型检查

uv run mypy src/

许可证

MIT许可证

贡献

欢迎投稿!请随时提交拉取请求。