用途
opensolr-mcp 是 Opensolr 的 MCP(Model Context Protocol)服务器,目标是把托管 Apache Solr 的搜索能力作为工具交给任意 AI 智能体使用。它把混合检索、服务端嵌入、文档索引和 RAG 回答封装成智能体可调用的工具,让智能体无需自行搭建向量数据库或配置嵌入模型。
主要能力
- 混合检索:BM25 关键词检索与 kNN 向量检索融合,按文档融合分数。
- 服务端嵌入:嵌入在 Opensolr 服务端(GPU)计算,无需用户配置嵌入模型。
- 文档索引:支持本地文件与整个文件夹;PDF 按页索引(每页一个文档);扫描件通过 OCR 读取(支持 100 多种语言);Word、RTF、OpenDocument、文本、HTML 和图片文件各作为一个文档。
- 有依据的 RAG 回答:基于检索结果生成有依据的答案。
- 按图片搜索:
opensolr_search_by_image允许智能体用图片而非文本查询,Opensolr 从视觉标签、OCR 文本和条码/二维码三方面读取图片并转为文字后执行常规搜索,不存储图片向量。 - 文本提取:
opensolr_extract_text只读取不索引,返回每个文件的文本,PDF 按页返回(page、text、is_ocr、lang)。 - 图片描述:
opensolr_describe_image返回图片内容说明(caption)、OCR 文本、标签和条码/二维码。 - 搜索运算符:查询字符串支持
+、-、短语等运算符,在关键词、混合和纯向量模式下均可用;带前缀的词或短语会转为过滤器作用于整个结果集。 - 日期范围:
date_from和date_to(YYYY-MM-DD,含端点)按文档 creation_date 过滤。 - 新鲜度偏置:
fresh_bias按 creation_date 对分数乘以时间曲线,只重排不过滤,默认关闭。 - PDF 页面分组:
group_pages控制 PDF 是否按最佳页返回;opensolr_read_document可读取完整结果。 - 纯关键词模式:不需要向量时可跳过嵌入调用,零 AI 配额消耗。
使用方式
- 在 opensolr.com/register 注册免费账户(永久免费、无需信用卡),从 Account 复制 API 密钥。
- 在 MCP 客户端中以 stdio 传输运行命令
uvx opensolr-mcp(或pipx run opensolr-mcp),并在环境变量中设置OPENSOLR_EMAIL和OPENSOLR_API_KEY。 - 支持 Claude Desktop、Claude Code、Cursor、Windsurf 及任意 MCP 客户端。
- 提供公开演示账户
mcp_demo_d1__dense,已预载 300 篇新闻文章,无需注册即可试用搜索、过滤和有依据的回答,也可在账户上创建自己的索引并写入、查询。 - 写入通过 Opensolr 的 Data Ingestion API 异步进行:文档入队后由服务端计算嵌入、情感、语言等派生字段,约一分钟内可搜索;进度可在 Control Panel → Data Ingestion 查看,也可通过 ingest_status API 查询。
- 每个索引同时也是标准 Apache Solr,带原生 /select API。
- 另有 Python 版 LangChain 集成:langchain-opensolr。
适用场景
- 让 AI 智能体对自有文档、FAQ、合同、扫描发票或报告文件夹进行检索与问答。
- 需要混合关键词与语义检索、跨语言查询或纯语义命中的搜索应用。
- 需要按图片搜索或从图片中提取文字与条码的场景。
- 需要基于检索结果生成有依据回答的 RAG 应用。
限制
- 演示账户为共享账户:所创建内容 3 天后自动删除且无警告或导出;索引对所有人可见,他人可添加文档;该密钥下无法删除或重新配置索引;每索引限制 200 MB 带宽和 50 MB 磁盘。
- 向量索引位于向量区域(运行网页爬虫的 Opensolr 服务器),可用区域由
opensolr_vector_regions实时返回;额外专用区域为付费附加项,需联系 support@opensolr.com。 - 包内功能要求索引位于向量区域并带有 Opensolr 向量 schema;不满足时相关操作会被阻止并抛出 OpensolrSchemaError。
apply_schema可为向量区域内配置被更改或未设置的索引安装配置,已有文档的索引需force=True且文档需重新发送;向量区域外的索引无法应用。 - 图片经 OCR 读取每个计 0.5 次 AI 请求;此前已读取过的文件免费。
- 大文件在后台读取,超过 wait_seconds 仍未完成的会出现在 pending 中,需用相同路径再次调用。
- 具体收费、价格与更多平台细节暂未提供。