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.pyMCP配置
将以下内容添加到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 errorreturn self.process(item发展
运行测试
uv run pytest代码格式化
uv run black src/类型检查
uv run mypy src/许可证
MIT许可证
贡献
欢迎投稿!请随时提交拉取请求。
