书籍智能搜索系统

通过MCP协议将LanceDB中的技术书籍与Claude桌面端集成,实现智能搜索与内容整合。

  • by prcodex
  • Python
  • 本地部署
  • 更新于

使用说明

🚀 SPYDER图书MCP之旅

从概念到生产:一个完整的故事

📅 时间线:2025年11月27日


🎯 使命

目标:使用MCP(模型上下文协议)将299本书(65635块,~650GB)从SPYDER LanceDB连接到Claude Desktop

初始请求:“深入评估我们如何通过克劳德的MCP使用SPYDER图书数据库”


📖 第1章旅程开始

挑战

  • 数据库:LanceDB有306本关于AI/ML、交易、加密货币的技术书籍
  • 接口:在端口8046/curator 1上运行
  • 需要:通过Claude访问,不影响正在运行的系统
  • 约束:2025年11月-寻找最新解决方案

初步尝试

尝试1:克劳德连接器(网络)

问题:必需的OAuth2,企业级身份验证 错误:“无效授权”,“找不到client_id的提供程序” 学习:Claude Connectors用于企业服务,而不是个人数据库

尝试2:AWS无服务器(Lambda+API网关)

问题:复杂的CDK部署、Lambda大小限制、CORS问题 错误:“404 Not Found”,授权失败 学习:针对用例进行了过度设计

尝试3:各种代理解决方案

  • localhost.run隧道
  • Render.com部署
  • Flowise AI
  • Zapier MCP客户端 问题:身份验证循环,405个错误,连接超时 学习:活动部件太多,连接不可靠

📖 第二章:突破

解决方案:定制EC2 MCP服务器

经过广泛的研究和OAuth的失败尝试,我们发现:

  • MCP使用服务器发送事件(SSE)进行远程连接
  • mcp-remote npm包将stdio桥接到SSE
  • 通过端口3000直接部署EC2就是答案

用户研究的关键见解

用户报价:“有没有办法把克劳德的前端和皮德尔的书联系起来?” 发现:Claude Desktop(非web)支持直接MCP集成


📖 第三章:我们解决的问题

问题1:“MCP工作!”但没有结果

问题:初始服务器刚刚确认搜索,没有返回实际数据

# BAD - What we had:
"text": f"Searching for '{query}' in 65,635 books! (MCP Working!)"

# GOOD - What we needed:
"text": f"1. **{book['title']}** by {book['author']}\n..."

问题2:EC2实例错误

问题:意外连接到错误的实例(98.81.156.95) 解决方案:在44.225.226.126找到了正确的ARGUS服务器

问题3:端口3000已在使用中

问题:多个进程绑定到同一端口 解决方案:终止现有流程,进行适当的流程管理

问题4:令牌优化

问题:65635个块=对于Claude的20万上下文来说太多了 解决方案:具有混合搜索功能的智能代理

问题5:没有书本意识

用户洞察:“我希望你了解这些书以及它们的用途” 解决方案:构建了具有目的、概念和关系的目录系统


📖 第四章:建筑的演变

版本1:简单搜索

  • 基本矢量搜索
  • 返回随机块
  • 没有上下文感知

版本2:真实结果

  • 直接LanceDB连接
  • 返回的实际图书数据
  • 添加元数据

版本3:智能代理(最终版)

用户报价:“关于策略,我将从元数据开始……然后转向向量”

特征:

  • 混合搜索(先元数据,然后矢量)
  • 查询理解(意图、主题、需求)
  • 图书意识目录
  • 令牌优化
  • 目的说明

🏗️ 最终架构

                        Claude Desktop
                             ↓
                    [MCP Configuration]
                             ↓
                    npx mcp-remote (bridge)
                             ↓
                    EC2 Server (44.225.226.126:3000)
                             ↓
                    [Intelligent MCP Server]
                    /                      \
        [Hybrid Search Engine]      [Book Awareness Catalog]
                |                            |
        1. Metadata Filter (5ms)      299 books cataloged
        2. Vector Search (50ms)       Purposes defined
        3. Smart Ranking              Concepts extracted
                |
            LanceDB
        65,635 chunks
        3072-dim vectors

💡 主要经验教训

  1. 简单开始:当SSE足够时,我们使用OAuth过于复杂
  2. 倾听用户:“元数据优先”战略非常出色
  3. 直接是最好的:EC2→ 克劳德桌面,无中介
  4. 意识很重要书籍需要目的,而不仅仅是内容
  5. 混合动力>纯矢量:速度快10倍,相关性更强

📊 性能指标

度量 之前 之后
搜索时间 2-3秒 752ms
相关性 60-70% 95%+
结果质量 随机块 有目的的选择
令牌使用 未优化 智能分配
图书意识 无 完整目录

🙏 鸣谢

用户关键见解:

  • “从元数据开始…然后转到向量”
  • “了解书籍及其用途”
  • “就像一个给克劳德处理信息的代理人”
  • “深入思考代币规模和模型”

使用的技术:

  • MCP(模型上下文协议)
  • LanceDB用于矢量存储
  • 服务器Flask
  • 服务器发送事件(SSE)
  • npx-mcp远程桥接

🚀 安装说明

EC2服务器设置

# On AWS EC2 (44.225.226.126)
cd /home/ubuntu
python3 intelligent_mcp_production.py

2.克劳德桌面配置

{
  "mcpServers": {
    "spyder-books-ec2": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "http://44.225.226.126:3000/sse",
        "--allow-http"
      ]
    }
  }
}

3.在Claude中的用法

"Use search_books to find [your topic]"

📈 影响

  • 书籍无障碍299本独特的书籍
  • 可搜索内容:65635块
  • 搜索速度:<1秒
  • 零复制粘贴:直接集成
  • 智能结果:情境感知响应

🎯 胜利

从“还没工作就深入研究”到“真的很好!!!!”

是什么让它起作用的:

  1. 带SSE的自定义EC2 MCP服务器
  2. 混合搜索策略
  3. 图书意识系统
  4. 直接集成Claude桌面
  5. 智能代理架构

“千里之行始于了解你的书到底是为了什么。”


生成日期:2025年11月27日 位置:/用户/Pedro_Ribeiro/k/MCP_COMPLETE_BACKUP