语义搜索服务器

一个提供语义搜索功能的MCP服务器,通过连接Claude Desktop和Cloudflare Workers后端实现向量化搜索。

  • by dannwaneri
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 dannwaneri/vectorize-mcp-server

使用说明

矢量化MCP服务器

一种模型上下文协议(MCP)服务器,通过使用Vectorize将Claude Desktop连接到Cloudflare Workers后端来提供语义搜索功能。

建筑

Claude Desktop ──stdio──> MCP Server ──HTTP──> Vectorize Worker ──> Vectorize Index

这是一个 混合式体系结构 -MCP服务器在本地运行,并将Claude Desktop桥接到远程Cloudflare Workers后端。

特性

  • 语义搜索工具:使用向量相似度进行自然语言搜索
  • stdio运输:与Claude Desktop和其他MCP客户端配合使用
  • 远程后端:Cloudflare Workers上发生了繁重的工作(嵌入、矢量搜索)
  • 类型安全:完整的TypeScript实现

先决条件

安装

1.克隆并安装:

git clone https://github.com/dannwaneri/vectorize-mcp-server.git
cd vectorize-mcp-server
npm install

2.构建:

npm run build

3.配置克劳德桌面:

编辑您的Claude Desktop配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

添加此服务器:

{
  "mcpServers": {
    "vectorize-search": {
      "command": "node",
      "args": [
        "/absolute/path/to/vectorize-mcp-server/dist/index.js"
      ]
    }
  }
}

4.重新启动克劳德桌面

用法

服务器向Claude公开了一个工具:

semantic_search

使用语义相似度搜索知识库。

参数:

  • query (字符串,必填):自然语言搜索查询
  • topK (number,可选):要返回的结果数(默认值:5)

Claude Desktop中的示例:

Search for information about AI embeddings

克劳德将自动使用 semantic_search 工具并返回具有相似性得分的结果。

运作原理

  1. Claude发送查询 通过stdio连接到MCP服务器
  2. MCP服务器转发 通过HTTP向Vectorize Worker查询
  3. Worker生成嵌入 使用Workers AI
  4. 矢量化搜索 对于相似的向量
  5. 结果反馈 通过MCP服务器连接到Claude
  6. 克劳德综合 使用搜索结果回答

配置

更改后端URL

编辑 src/index.ts 并更新Worker URL:

const WORKER_URL = "https://your-worker.workers.dev";

然后重建:

npm run build

调整结果计数

默认值 topK 是5。用户可以覆盖此内容:

Search for "databases" and show me 10 results

发展

在开发模式下运行:

npm run dev

生产建设:

npm run build

本地测试:

node dist/index.js

服务器将输出: Vectorize MCP server running on stdio

查询示例

在Claude Desktop中尝试以下操作:

What do you know about vector databases?
Find information about RAG systems
Search for anything related to Cloudflare Workers
Tell me about machine learning at the edge

响应格式

该工具返回JSON:

  • query:原始搜索查询
  • resultsCount:找到的结果数量
  • results:匹配数组:
    • id:条目标识符
    • score:相似性得分(0-1,越高越好)
    • content:实际内容
    • category:内容类别

Claude会自动解析并自然呈现。

故障排除

服务器未出现在Claude Desktop中:

  1. 检查配置文件路径是否正确
  2. 验证到的绝对路径 dist/index.js
  3. 确保您完全重新启动了Claude Desktop(退出,而不仅仅是关闭)
  4. 检查开发人员控制台(Claude Desktop中的Ctrl+Shift+I)

“未连接”错误:

  1. 确保Worker已部署且可访问
  2. 检查 WORKER_URL 在 src/index.ts
  3. 验证Worker是否已填充数据(POST /populate)

未返回任何结果:

  1. 使用Worker填充Vectorize索引 /populate 端点
  2. 尝试更广泛的搜索词
  3. 检查Worker日志 wrangler tail

技术栈

  • TypeScript:类型安全开发
  • @模型上下文协议/sdk:官方MCP SDK
  • Node.js:运行时环境
  • stdio传输:标准MCP通信方法

相关项目

为什么是这种架构?

优势:

  • 与Claude Desktop配合使用(需要stdio)
  • 后端在边缘运行(快速、可扩展)
  • 可以在多个客户端之间共享Worker后端
  • 远程进行大量处理(嵌入、搜索)

权衡:

  • 需要本地服务器和远程Worker
  • 额外的网络跳数会增加延迟(~50-100ms)
  • 需要保持本地服务器运行

有关完全远程的解决方案,请参阅 mcp服务器工作器.

许可证

麻省理工学院

作者

丹尼尔·恩瓦内里- GitHub | Upwork