使用说明
代码搜索MCP服务器
一种高性能的模型上下文协议(MCP)服务器,使用树保姆解析提供语义代码智能。此工具可以在不读取整个文件的情况下进行高效的代码探索和分析。
特性
服务器提供了四种强大的代码分析工具:
1. list_symbols
列出文件中的所有符号(函数、结构、枚举、特征等)及其行号和类型。
比读取整个文件更有效 -仅返回符号元数据。
参数:
file-从项目根目录开始的相对文件路径(例如,“server/src/lib.rs”)
输出示例:
[
{
"name": "compute_movement_speed",
"kind": "function",
"line": 42
},
{
"name": "Player",
"kind": "struct",
"line": 15
}
]
2. get_signature
获取不带正文的函数或声明的签名。返回函数签名、结构定义头等。
比读取文件少95%的令牌 -非常适合理解没有实现细节的API。
参数:
file-从项目根目录开始的相对文件路径name-要搜索的符号名称(例如,“compute_movement_speed”)
输出示例:
pub fn compute_movement_speed(player: &Player, terrain: TerrainType) -> f32
3. get_definition
获取特定命名符号(函数、结构、枚举、trait、impl、const等)的完整源代码。
仅返回该符号的代码,不返回周围的文件 -非常适合集中精力进行代码审查。
参数:
file-从项目根目录开始的相对文件路径name-要搜索的符号名称
输出示例:
pub fn compute_movement_speed(player: &Player, terrain: TerrainType) -> f32 {
let base_speed = player.stats.speed;
let terrain_modifier = terrain.speed_modifier();
base_speed * terrain_modifier
}
4. get_file_structure
获取文件结构的层次结构概述,显示嵌套的模块、impl块、函数、结构等。
比读取文件少85%的令牌 -非常适合理解文件组织。
参数:
file-从项目根目录开始的相对文件路径
输出示例:
{
"modules": [
{
"name": "combat",
"items": [
{"kind": "struct", "name": "Weapon"},
{"kind": "function", "name": "calculate_damage"}
]
}
]
}
安装
从源代码构建
cd tools/code-search-mcp
cargo build --release
编译后的二进制文件将位于 target/release/code-search-mcp.
用法
作为MCP服务器
在MCP客户端配置中配置服务器(例如。, .mcp.json):
{
"mcpServers": {
"code-search": {
"type": "stdio",
"command": "/path/to/code-search-mcp/target/release/code-search-mcp",
"args": [
"--project-root",
"/path/to/your/project"
],
"env": {}
}
}
}
命令行参数
--project-root <PATH>-用于解析相对文件路径的项目根目录(默认:“.”)
独立使用
# Use current directory as project root
./code-search-mcp
# Specify a project root
./code-search-mcp --project-root /path/to/project
支持的语言
目前支持:
- 锈 (.rs文件)
- Types/JavaScript (.ts、.tsx文件)
- C (.cs文件)
该工具使用树型解析器来准确理解代码结构的语义。
性能优势
| 工具 | 代币缩减 | 用例 |
|---|---|---|
list_symbols |
~99% | 发现文件中的内容 |
get_signature |
~95% | 了解函数API |
get_file_structure |
~85% | 掌握文件组织 |
get_definition |
变化 | 提取特定符号 |
您无需读取整个文件(数千个令牌),只需使用最少的令牌即可获得所需的信息。
建筑
- 解析器:基于树的解析,使用文件缓存提高性能
- 服务器:使用MCP兼容的基于stdio的服务器
rmcp图书馆 - 查询:用于语义代码分析的树型查询
- 缓存:自动解析树缓存,避免冗余解析
依赖项
rmcp-MCP服务器框架tree-sitter-解析器生成器工具和增量解析库tree-sitter-rust-树保姆的Rust语法tree-sitter-typescript-Types/JavaScript语法tree-sitter-c-sharp-C#语法树保姆tokio-异步运行时dashmap-用于缓存的并发哈希映射
发展
运行测试
cargo test
添加语言支持
要添加对新语言的支持,请执行以下操作:
- 将树保姆语法依赖项添加到
Cargo.toml - 更新解析器以处理新的文件扩展名
- 为中的语言添加树型查询
src/queries.rs - 更新工具实现以处理新的语言构造
许可证
有关许可证信息,请参阅项目根目录。
