Solr MCP Server
使用说明(简明易懂,便于快速上手):
- 项目简介
- 该项目实现了一个基于 MCP 的服务器,能够把 Apache Solr 的查询、索引、模式化元数据等能力以 MCP 工具(Tools)形式暴露给 AI 客户端,并通过资源(Resources)提供可读的数据接口,通过传输通道(如 STDIO、HTTP/WebSocket 等)与客户端通信。
- 主要功能点
- MCP 服务器核心能力:注册并暴露工具(例如 search、index_json_documents、index_csv_documents、index_xml_documents 等)、提供资源、支持提示/模板渲染等能力,符合 MCP 的通用后端角色。
- 与 Solr 的深度集成:提供 Solr Collections/Schema 的查询与统计、健康状态、索引文档、以及基于 Solr 的搜索能力。
- 传输协议与安全:支持 STDIO 与 HTTP 传输模式(HTTP 模式可选 OAuth2 资源服务器安全,CORS 兼容 MCP Inspector)。
- 容器化与部署友好:提供 Docker 映像构建、基于 Spring Boot 的应用结构,以及测试覆盖(包含集成测试与容器化集成测试)。
- 安装步骤
- 构建与打包:在项目根目录执行构建命令,将生成可运行的 JAR 包。
- 运行方式(多选其一):
- STDIO 模式(默认):通过 Docker 直接运行容器、或使用 JAR 包在本地启动,容器内外部 Solr 地址通过 SOLR_URL 进行注入配置。
- HTTP 模式:同样支持通过 Docker 运行并暴露 HTTP 服务端口(默认 8080),可选传入 PROFILES=http 来启用 HTTP 配置和 OAuth2 安全。
- 服务器配置(用于 MCP 客户端连接的 JSON 配置描述)
- 服务器名称(serverName):Solr-MCP
- 启动命令(command):执行服务器的启动方式,可选为
- Docker 启动镜像的命令行(例如 Docker 运行命令,包含必要的环境变量,如 SOLR_URL,以及模式选择 PROFILES)。
- 或直接使用 Java 命令启动打包好的 JAR 文件(java -jar path/to/solr-mcp-版本.jar)。
- 参数(args):根据所选启动方式不同而不同的参数列表
- 若使用 Docker STDIO 模式:args 可能包括 ["run","-i","--rm","ghcr.io/apache/solr-mcp:latest"],并通过环境变量配置 SOLR_URL 指向 Solr 地址。
- 若使用 Docker HTTP 模式:args 可能包括 ["run","-p","8080:8080","--rm","ghcr.io/apache/solr-mcp:latest"],并通过环境变量配置 PROFILES=http 与 SOLR_URL。
- 若直接使用 JAR 启动:args 可能包括 ["-jar","/absolute/path/to/solr-mcp-1.0.0-SNAPSHOT.jar"],并通过环境变量配置 SOLR_URL 与 PROFILES。
- 说明注解
- MCP 客户端需要的仅是启动命令与参数(command、args),以便通过该服务器建立连接并调用 MCP 工具;具体的授权、路由和接口实现均在服务器端完成。
- 基本使用方法
- 启动后,MCP 客户端(如 Claude Desktop)可以通过以下方式与服务器对接:
- 配置 solr-mcp 服务器条目,提供启动命令和参数(并可选环境变量,例如 SOLR_URL、PROFILES)。
- 使用 MCP 远程/传输适配器连接到服务器的 MCP 端点(STDIO 或 HTTP),并通过工具清单发现、调用具体工具(如 search、index_json_documents、listCollections 等)。
- 常用流程示例(对开发者友好):
- 连接并探查可用工具与资源。
- 使用 search 工具执行对 Solr 集合的查询,搭配过滤、分面、排序和分页等参数。
- 通过 index-json-documents/ index-csv-documents / index-xml-documents 工具批量索引文档到指定 Solr 集群的集合。
- 通过 check-health、get-collection-stats、get-schema 等工具获取集合的健康状态、统计信息和模式信息。
- 调试与运维要点
- 确保 Solr 服务可访问(通过 SOLR_URL 指定正确的 Solr 基础地址)。
- HTTP 模式开启时若需 OAuth2,请按文档配置 issuer、域名、客户端等信息并使用正确的访问令牌进行调用。
- 在容器化环境下,遵循 README 中的部署指南,使用 Jib 构建的镜像或者 JAR/Docker Compose 的组合。
- 启动后,MCP 客户端(如 Claude Desktop)可以通过以下方式与服务器对接: