使用说明
语义搜索MCP服务器
使用本地嵌入提供语义代码搜索的MCP服务器。使用“身份验证中间件”或“数据库连接池”等自然语言查询搜索您的代码库。
特性
- 混合搜索:使用往复式秩融合将向量相似性(Jina代码嵌入)与FTS5关键字匹配相结合
- 165+种语言:Python、TypeScript、JavaScript、Go、Rust、Java、C/C++、Ruby、PHP等的树型解析
- 增量索引:文件监视器自动检测添加、修改和删除
- 尊敬的吉吉尼奥尔:尊重您的项目
.gitignore文件(包括嵌套文件) - 自动初始化:服务器启动时后台的模型加载和代码库索引
- 零外部API:使用FastEmbed在本地生成的所有嵌入
安装
uv tool install semantic-search-mcp
或者使用pip:
pip install semantic-search-mcp
或者直接运行而不安装:
uvx semantic-search-mcp
快速开始
添加到克劳德代码
选项A:项目级配置(推荐)
安装后 uv tool install 或 pip install,创建 .mcp.json 在项目根目录中:
{
"mcpServers": {
"semantic-search": {
"command": "semantic-search-mcp"
}
}
}
选项B:CLI
claude mcp add semantic-search -- semantic-search-mcp
选项C:不安装(临时)
如果您不想安装,请使用 uvx 在短暂的环境中运行:
{
"mcpServers": {
"semantic-search": {
"command": "uvx",
"args": ["semantic-search-mcp"]
}
}
}
使用
服务器在启动时自动初始化。
可用工具
| 工具 | 说明 |
|---|---|
search_code |
使用自然语言搜索代码库 |
get_status |
获取服务器状态、进度和统计信息 |
pause_watcher |
暂停文件监视(丢弃事件) |
resume_watcher |
继续观看文件 |
reindex |
开始完全重新索引(在后台运行) |
cancel_indexing |
取消正在运行的索引作业 |
clear_index |
擦除所有索引数据 |
exclude_paths |
添加要忽略的路径(仅限会话) |
include_paths |
从排除列表中删除路径 |
运作原理
索引
启动时,服务器:
- 扫描代码库以查找支持的文件类型
- 使用Tree sitter将代码解析为语义块(函数、类、方法)
- 使用Jina的代码嵌入模型为每个块生成嵌入
- 将所有内容存储在具有矢量搜索支持的本地SQLite数据库中
文件监视
服务器实时监控您的代码库是否有更改:
| 事件 | 行动 |
|---|---|
| 文件已创建 | 已解析、嵌入并添加到索引中 |
| 文件已修改 | 如果内容哈希值更改,则重新索引 |
| 文件已删除 | 已从索引中删除 |
更改被取消(默认为1秒)以批量快速修改。
什么被索引
包括:
- 具有代码扩展名的文件:
.py,.js,.ts,.tsx,.jsx,.go,.rs,.java,.c,.cpp,.h,.rb,.php,.swift,.kt,.scala,以及更多
排除:
- 文件匹配
.gitignore图案(全部.gitignore项目中的文件受到尊重) - 常见的非代码目录:
node_modules,__pycache__,.venv,build,dist,.git,vendor等等。 - 二进制文件和非代码文件类型
配置
环境变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
SEMANTIC_SEARCH_DB_PATH |
.semantic-search/index.db |
索引数据库位置 |
SEMANTIC_SEARCH_EMBEDDING_MODEL |
jinaai/jina-embeddings-v2-base-code |
嵌入模型 |
SEMANTIC_SEARCH_MIN_SCORE |
0.3 |
最小相关性阈值(0-1) |
SEMANTIC_SEARCH_DEBOUNCE_MS |
1000 |
文件监视器以毫秒为单位进行去抖动 |
SEMANTIC_SEARCH_BATCH_SIZE |
50 |
每批文件数(如果内存不足,则减少) |
SEMANTIC_SEARCH_MAX_FILE_SIZE_KB |
512 |
跳过大于此值(KB)的文件 |
SEMANTIC_SEARCH_EMBEDDING_BATCH_SIZE |
8 |
每次嵌入调用的文本(如果OOM,则减少) |
SEMANTIC_SEARCH_EMBEDDING_THREADS |
4 |
ONNX运行时线程(更高=在多核上更快) |
SEMANTIC_SEARCH_USE_QUANTIZED |
true |
使用INT8量化模型(速度快30-40%) |
演出
GPU加速
GPU加速会自动检测并在可用时使用:
| 平台 | 提供商 | 安装 |
|---|---|---|
| 英伟达 | 库达 | pip install semantic-search-mcp[gpu] |
| 苹果硅 | CoreML | 自动(M1/M2/M3) |
| AMD | ROCm | 在运行时安装启用了ROCm的设备 |
| Windows | DirectML | 在运行时安装启用了DirectML的 |
模型
为了更快地索引(在质量权衡的情况下),您可以使用更轻的型号:
| 型号 | 尺寸 | 速度 | 最适合 |
|---|---|---|---|
jinaai/jina-embeddings-v2-base-code |
768 | 基线 | 代码搜索(默认) |
BAAI/bge-small-en-v1.5 |
384 | 快10倍 | 一般文本 |
sentence-transformers/all-MiniLM-L6-v2 |
384 | 快32倍 | 速度优先 |
要使用替代模型,请执行以下操作:
export SEMANTIC_SEARCH_EMBEDDING_MODEL="sentence-transformers/all-MiniLM-L6-v2"
注意:更改型号需要完全重新索引(删除 .semantic-search/ 目录)。
UniXcoder(实验)
微软UniXcoder 是一个在代码+AST+注释上预先训练的代码特定模型。它可以更好地理解代码结构的语义,但 明显较慢 (比Jina慢约20倍)。
| 型号 | 尺寸 | 速度 | 语言 |
|---|---|---|---|
microsoft/unixcoder-base |
768 | ~20倍慢 | 6(java、ruby、python、php、js、go) |
microsoft/unixcoder-base-nine |
768 | 慢20倍 | 9(+c,c++,c#) |
安装 (需要额外的依赖关系):
pip install semantic-search-mcp[unixcoder]
用途:
export SEMANTIC_SEARCH_EMBEDDING_MODEL="microsoft/unixcoder-base-nine"
何时使用UniXcoder:
- 您将搜索质量置于索引速度之上
- 你的代码库是中小型的
- 你有GPU加速(CUDA或苹果Silicon MPS)
何时避免使用UniXcoder:
- 大型代码库(10000+个文件)-索引需要几个小时
- 您需要快速的初始索引
- 在CPU上运行,无需GPU加速
Claude代码集成
技能和命令是 自动安装 当MCP服务器首次启动时:
- 技能 →
~/.claude/skills/(AI自动发现) - 命令 →
~/.claude/commands/(用户可调用斜线命令)
要手动重新安装或更新,请执行以下操作:
semantic-search-mcp-install-skills
可用的Slash命令
| 命令 | 描述 |
|---|---|
/semantic-search-search <query> |
使用自然语言搜索代码库 |
/semantic-search-status |
检查服务器状态和索引统计信息 |
/semantic-search-reindex |
触发完整代码库重新索引 |
/semantic-search-cancel |
取消正在运行的索引作业 |
/semantic-search-clear |
擦除所有索引数据 |
/semantic-search-pause |
暂停文件监视器 |
/semantic-search-resume |
简历文件监视器 |
需求
- Python 3.11+
- 约700MB磁盘用于嵌入模型(首次运行时下载,约150MB,采用INT8量化)
- ~ 1GB RAM用于嵌入模型