使用说明
语义搜索MCP服务器
隐私优先的本地模型上下文协议(MCP)服务器,使AI助手能够在工作区的Markdown文档中执行最先进的语义搜索。
此服务器使用 LanceDB 用于本地向量存储和运行Python驱动的微服务 Jina Embeddeds v5 (jinaai/jina-embeddings-v5-text-small)用于极其精确的1024维文本嵌入。
建筑
- MCP Node.js服务器(
server.ts):您的AI助手的入口点。它公开了两个工具:sync_markdown和search_markdown. - Python嵌入器(
embedder.py):一个轻量级的FastAPI微服务。Node.js服务器会自动生成此进程,以利用PyTorch和GPU/CPU加速进行嵌入生成。 - LanceDB:直接存储在工作区中的快速本地矢量数据库(
.lancedb). - 智能同步:实现增量差分(集合论),因此它只进行块化和嵌入 新 或 已删除 文件,在第一次运行后保持近乎即时的同步时间。批处理保证了安全的内存边界。
先决条件
您的系统上必须安装以下内容:
- Node.js (v18+)
- python (v3.10+)
- 紫外线 (非常快的Python包管理器)
- 通过以下方式安装:
curl -LsSf https://astral.sh/uv/install.sh | sh(Mac/Linux)或powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"(Windows)
- 通过以下方式安装:
安装说明
1.安装节点依赖关系
从该项目的根目录开始,运行:
npm install
2.设置Python虚拟环境
我们使用 uv 创建虚拟环境(.venv)直接在项目根目录内。Node.js服务器是硬编码的,可以查找这个确切的环境!
# 1. Create the virtual environment
uv venv
# 2. Activate it (Optional for installation, but good practice)
# Mac/Linux:
source .venv/bin/activate
# Windows:
# .venv\Scripts\activate
# 3. Install the required Python packages into the .venv
uv pip install fastapi uvicorn torch transformers einops
注意:第一次运行服务器时,它将从Hugging Face下载Jina模型(~150MB)。后续运行将立即从缓存中加载。
MCP客户端安装
要使用此服务器,您必须配置您的AI助手以执行 server.ts 文件使用 npx tsx。以下是常见客户端的配置。
1.Cline(VS代码扩展)
在Cline中打开MCP设置文件(通常通过Cline设置面板访问或位于 ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json).
将以下内容添加到您的 mcpServers 对象(确保更换 /absolute/path/to/semantic-search-mcp 使用您的实际目录路径):
{
"mcpServers": {
"semantic-search-mcp": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/semantic-search-mcp/server.ts"],
"env": {}
}
}
}
2.克劳德代码(Anthropic CLI)
要为Claude Code CLI全局安装服务器,请在终端中运行以下命令:
claude mcp add semantic-search-mcp npx -- tsx /absolute/path/to/semantic-search-mcp/server.ts
3.游标/VS代码原生MCP
如果您使用的是Cursor或其他原生MCP消费者,请导航到“设置”>“功能”>“MCP”(或同等产品)。 添加新服务器:
- 名字:
semantic-search-mcp - 类型:
stdio - 命令:
npx tsx /absolute/path/to/semantic-search-mcp/server.ts
可用工具
一旦服务器连接,AI将可以访问以下工具:
sync_markdown
重要:指示你的代理人(通过
Rules或自定义指令)调用sync_markdown在第一轮。
将本地markdown文件与矢量数据库同步。
- 行动:扫描您的工作区以查找
.md文件,将其与LanceDB状态进行比较,将新文档拆分为块(1000个字符,200个重叠),通过Jina微服务嵌入并保存。 - 输入:无
- 退货:添加和删除的文件的JSON摘要。
search_markdown
对索引的markdown文档执行语义搜索。
- 行动:嵌入您的语句,并对LanceDB执行余弦距离矢量搜索。
- 输入:
statement(string,必填):一个详细的自然语言语句或问题,捕捉到你所要查找的内容的语义含义。(人工智能代理注意:不要使用AND、OR、NOT等布尔搜索运算符。将其表述为完整的描述性句子)。topK(number,可选,默认值:3):返回多少个结果块。
- 退货:与语句匹配的顶部块的JSON数组,以及它们的源文件路径和距离分数。
本地测试
要独立于AI代理测试服务器,您可以运行内置的MCP检查器:
npm run inspect
这将启动本地web服务器(通常 http://localhost:5173)在那里,您可以手动单击并执行工具!
