项目简介

该项目实现了一个基于 Model Context Protocol (MCP) 的服务器,利用 Elasticsearch 作为后端,为大型语言模型 (LLM) 客户端提供强大的知识库服务。它允许LLM通过标准化的接口访问、学习和记忆外部信息,极大地扩展了LLM的能力范围。

主要功能点

  • 知识检索 (ASK): 允许LLM使用自然语言向知识库提问,服务器从存储的文档或记忆中查找最相关的答案片段。
  • 知识学习 (LEARN): 支持LLM指示服务器从指定网页、Git仓库或本地文件系统抓取内容并进行索引,构建新的知识库。特别擅长爬取和处理在线文档。
  • 记忆存储 (REMEMBER): 提供接口让LLM存储和回忆工作信息、用户偏好或规则,作为长期记忆。
  • 知识库管理: 提供创建、获取列表、按名称或ID查找、更新和删除知识库的工具。
  • 资源访问: 允许LLM通过统一资源标识符 (URI) 访问知识库中的特定条目详情。
  • 批量操作: 支持在单个请求中调用一个工具多次,或同时调用多个不同的工具,提高效率。

安装步骤

该服务器推荐使用 'uvx' 工具直接从GitHub运行,这简化了安装过程。

  1. 安装 uvx: 如果您的系统上没有 'uvx',请根据其官方文档安装。
  2. 安装 Docker: 确保您的系统已安装并运行 Docker 服务,这是 学习 (LEARN) 功能(特别是网页爬取)所依赖的。
  3. 设置 Elasticsearch: 启动一个 Elasticsearch 集群,并准备好连接信息(如主机地址、API 密钥或用户名/密码)。

服务器配置

MCP 服务器需要由一个 MCP 客户端(如 VS Code 的 Roo 扩展、Cline 等)来启动和连接。客户端的配置文件(通常是 JSON 格式)需要包含该服务器的配置信息。

典型的配置段如下所示,您需要根据您的MCP客户端类型进行调整:

  • 定义一个服务器配置块,例如命名为 '"es_knowledge_base_mcp_debug"'。
  • 指定 '"command"' 为 '"uvx"'。
  • 指定 '"args"' 为仓库的 GitHub URL ('"git+https://github.com/strawgate/es-knowledge-base-mcp"')。'uvx' 工具会负责下载、安装依赖并启动服务器。
  • 使用 '"env"' 字段传递环境变量,用于配置 Elasticsearch 连接。例如:
    • '"ES_HOST"': 您的 Elasticsearch 集群主机地址(例如 '"https://YOUR_ELASTICSEARCH_HOST_URL:443"')。
    • '"ES_API_KEY"': 您的 Elasticsearch API 密钥(Base64编码)。或者,您也可以使用 '"ES_USERNAME"' 和 '"ES_PASSWORD"' 进行基本认证。请选择一种认证方式。

完成配置后,启动您的MCP客户端,它将根据配置启动并连接到此Elasticsearch知识库服务器。

基本使用方法

服务器启动并连接成功后,LLM 客户端就可以通过调用注册的 工具 和访问 资源 来利用知识库功能:

  • 提问: LLM 可以调用 'ask_questions' 工具,传入问题列表,服务器将返回相关文档片段。例如,LLM 可能会生成一个工具调用请求,如 '{"tool": "ask_questions", "arguments": {"questions": ["如何配置 Elasticsearch?"]}}'。
  • 学习文档: LLM 可以调用 'learn_from_web_documentation' 工具,提供要学习的网页 URL 和希望创建的知识库名称,服务器将开始爬取和索引过程。例如,'{"tool": "learn_from_web_documentation", "arguments": {"learn_web_documentation_proto": {"name": "Pytest Docs", "data_source": "https://docs.pytest.org/en/stable/"}}}'。
  • 获取知识库列表: LLM 可以调用 'knowledge_base_get' 工具(或者更精确的 'knowledge_base_get_by_name' 等管理工具)来获取当前服务器上已有的知识库信息。
  • 访问资源: LLM 可以尝试访问特定的资源 URI,例如 'kb://entry?id=some_kb_id' 或 'kb://entry?name=Some KB Name' 来获取知识库条目的详情(注意:实际的资源访问方式取决于MCP客户端的实现,通常通过特定的协议或客户端库函数)。

服务器通过 JSON-RPC 响应这些请求,将结果(如搜索结果、知识库列表、操作成功/失败信息)返回给 LLM 客户端。

信息

分类

数据库与文件