首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
kb-mcp-server2025-05-280分享
github
一个便携式、本地化、简单便捷的MCP服务器,用于支持txtai“一体化”嵌入式数据库的语义/图谱检索。任何以tar.gz形式存在的txtai嵌入式数据库都可以被加载。
By Geeksfino
2025-05-280
github
详情内容

MseeP.ai 安全评估徽章

嵌入式MCP服务器

这是一个由txtai驱动的模型上下文协议(MCP)服务器实现,通过标准化接口提供语义搜索、知识图谱能力和AI驱动的文本处理。

txtai的强大功能:一站式嵌入数据库

本项目利用txtai——一个支持RAG(检索增强生成)的一站式嵌入数据库,提供语义搜索、知识图谱构建和语言模型工作流功能。txtai具有以下关键优势:

  • 统一向量数据库:在单一平台中整合向量索引、图网络和关系数据库
  • 语义搜索:基于语义而非关键词查找信息
  • 知识图谱集成:自动从您的数据构建和查询知识图谱
  • 便携式知识库:将整个知识库保存为可压缩归档文件(.tar.gz),便于共享和加载
  • 可扩展流水线系统:通过统一API处理文本、文档、音频、图像和视频
  • 本地优先架构:所有操作均在本地运行,无需将数据发送到外部服务

工作原理

该项目包含一个知识库构建工具和一个MCP服务器。知识库构建工具是一个用于创建和管理知识库的命令行界面。MCP服务器提供访问知识库的标准接口。

使用知识库构建工具构建知识库并非必需。您始终可以通过编写Python脚本或使用Jupyter Notebook,利用txtai的编程接口构建知识库。只要知识库是用txtai构建的,就可以被MCP服务器加载。更好的是,知识库可以是文件系统上的文件夹或导出的.tar.gz文件。只需将其提供给MCP服务器,它就会加载。

1. 使用kb_builder构建知识库

kb_builder模块提供了一个命令行界面,用于创建和管理知识库:

  • 处理来自各种来源(文件、目录、JSON)的文档
  • 提取文本并创建嵌入
  • 自动构建知识图谱
  • 导出便携式知识库

请注意,其功能可能有限,目前仅出于便利提供。

2. 启动MCP服务器

MCP服务器提供访问知识库的标准接口:

  • 语义搜索功能
  • 知识图谱查询和可视化
  • 文本处理流水线(摘要、提取等)
  • 完全符合模型上下文协议

安装

推荐:使用Python 3.10+的uv

我们推荐使用uv与Python 3.10或更高版本以获得最佳体验。这提供了更好的依赖管理并确保行为一致。

# 如果尚未安装,请安装uv
pip install -U uv

# 使用Python 3.10或更高版本创建虚拟环境
uv venv --python=3.10  # 或3.11、3.12等

# 激活虚拟环境(bash/zsh)
source .venv/bin/activate
# 对于fish shell
# source .venv/bin/activate.fish

# 从PyPI安装
uv pip install kb-mcp-server

注意:我们将transformers固定为4.49.0版本,以避免在4.50.0及更高版本中出现的关于transformers.agents.tools的弃用警告。如果您使用更高版本的transformers,可能会看到这些警告,但它们不会影响功能。

使用conda

# 创建新的conda环境(可选)
conda create -n embedding-mcp python=3.10
conda activate embedding-mcp

# 从PyPI安装
pip install kb-mcp-server

从源代码

# 创建新的conda环境
conda create -n embedding-mcp python=3.10
conda activate embedding-mcp

# 克隆仓库
git clone https://github.com/Geeksfino/kb-mcp-server.git.git
cd kb-mcp-server

# 安装依赖项
pip install -e .

使用uv(更快的替代方案)

# 如果尚未安装,请安装uv
pip install uv

# 创建新的虚拟环境
uv venv
source .venv/bin/activate

# 选项1:从PyPI安装
uv pip install kb-mcp-server

# 选项2:从源代码安装(用于开发)
uv pip install -e .

使用uvx(无需安装)

uvx允许您直接从PyPI运行包而无需安装:

# 运行MCP服务器
uvx --from kb-mcp-server@0.3.0 kb-mcp-server --embeddings /path/to/knowledge_base

# 构建知识库
uvx --from kb-mcp-server@0.3.0 kb-build --input /path/to/documents --config config.yml

# 搜索知识库
uvx --from kb-mcp-server@0.3.0 kb-search /path/to/knowledge_base "Your search query"

命令行使用

构建知识库

您可以使用从PyPI安装的命令行工具、直接使用Python模块或方便的shell脚本:

使用从PyPI安装的命令

# 从文档构建知识库
kb-build --input /path/to/documents --config config.yml

# 使用新文档更新现有知识库
kb-build --input /path/to/new_documents --update

# 导出知识库以便便携
kb-build --input /path/to/documents --export my_knowledge_base.tar.gz

# 搜索知识库
kb-search /path/to/knowledge_base "What is machine learning?"

# 使用图增强搜索
kb-search /path/to/knowledge_base "What is machine learning?" --graph --limit 10

使用uvx(无需安装)

# 从文档构建知识库
uvx --from kb-mcp-server@0.3.0 kb-build --input /path/to/documents --config config.yml

# 使用新文档更新现有知识库
uvx --from kb-mcp-server@0.3.0 kb-build --input /path/to/new_documents --update

# 导出知识库以便便携
uvx --from kb-mcp-server@0.3.0 kb-build --input /path/to/documents --export my_knowledge_base.tar.gz

# 搜索知识库
uvx --from kb-mcp-server@0.3.0 kb-search /path/to/knowledge_base "What is machine learning?"

# 使用图增强搜索
uvx --from kb-mcp-server@0.3.0 kb-search /path/to/knowledge_base "What is machine learning?" --graph --limit 10

使用Python模块

# 从文档构建知识库
python -m kb_builder build --input /path/to/documents --config config.yml

# 使用新文档更新现有知识库
python -m kb_builder build --input /path/to/new_documents --update

# 导出知识库以便便携
python -m kb_builder build --input /path/to/documents --export my_knowledge_base.tar.gz

使用方便的脚本

仓库包含方便的包装脚本,使构建和搜索知识库更轻松:

# 使用模板配置构建知识库
./scripts/kb_build.sh /path/to/documents technical_docs

# 使用自定义配置文件构建
./scripts/kb_build.sh /path/to/documents /path/to/my_config.yml

# 更新现有知识库
./scripts/kb_build.sh /path/to/documents technical_docs --update

# 搜索知识库
./scripts/kb_search.sh /path/to/knowledge_base "What is machine learning?"

# 使用图增强搜索
./scripts/kb_search.sh /path/to/knowledge_base "What is machine learning?" --graph

运行./scripts/kb_build.sh --help./scripts/kb_search.sh --help以获取更多选项。

启动MCP服务器

使用从PyPI安装的命令

# 使用特定知识库文件夹启动
kb-mcp-server --embeddings /path/to/knowledge_base_folder

# 使用给定的知识库归档启动
kb-mcp-server --embeddings /path/to/knowledge_base.tar.gz

使用uvx(无需安装)

# 使用特定知识库文件夹启动
uvx kb-mcp-server@0.2.6 --embeddings /path/to/knowledge_base_folder

# 使用给定的知识库归档启动
uvx kb-mcp-server@0.2.6 --embeddings /path/to/knowledge_base.tar.gz

使用Python模块

# 使用特定知识库文件夹启动
python -m txtai_mcp_server --embeddings /path/to/knowledge_base_folder

# 使用给定的知识库归档启动
python -m txtai_mcp_server --embeddings /path/to/knowledge_base.tar.gz

MCP服务器配置

MCP服务器通过环境变量或命令行参数进行配置,而不是YAML文件。YAML文件仅用于在构建知识库期间配置txtai组件。

以下是配置MCP服务器的方法:

# 使用命令行参数启动服务器
kb-mcp-server --embeddings /path/to/knowledge_base --host 0.0.0.0 --port 8000

# 或使用uvx(无需安装)
uvx kb-mcp-server@0.2.6 --embeddings /path/to/knowledge_base --host 0.0.0.0 --port 8000

# 或使用Python模块
python -m txtai_mcp_server --embeddings /path/to/knowledge_base --host 0.0.0.0 --port 8000

# 或使用环境变量
export TXTAI_EMBEDDINGS=/path/to/knowledge_base
export MCP_SSE_HOST=0.0.0.0
export MCP_SSE_PORT=8000
python -m txtai_mcp_server

常见配置选项:

  • --embeddings:知识库路径(必需)
  • --host:要绑定的主机地址(默认:localhost)
  • --port:要监听的端口(默认:8000)
  • --transport:使用的传输方式,'sse'或'stdio'(默认:stdio)
  • --enable-causal-boost:启用因果增强功能以提高相关性评分
  • --causal-config:自定义因果增强配置YAML文件的路径

配置LLM客户端使用MCP服务器

要配置LLM客户端使用MCP服务器,您需要创建一个MCP配置文件。以下是一个示例mcp_config.json

直接使用服务器

如果您使用虚拟Python环境安装服务器,可以使用以下配置 - 请注意,如果使用虚拟环境,像Claude这样的MCP主机将无法连接到服务器,您需要使用在其中执行"pip install"或"uv pip install"的虚拟环境的Python可执行文件的绝对路径,例如

{
  "mcpServers": {
    "kb-server": {
      "command": "/your/home/project/.venv/bin/kb-mcp-server",
      "args": [
        "--embeddings", 
        "/path/to/knowledge_base.tar.gz"
      ],
      "cwd": "/path/to/working/directory"
    }
  }
}

使用系统默认Python

如果您使用系统默认Python,可以使用以下配置:

{
    "rag-server": {
      "command": "python3",
      "args": [
        "-m",
        "txtai_mcp_server",
        "--embeddings",
        "/path/to/knowledge_base.tar.gz",
        "--enable-causal-boost"
      ],
      "cwd": "/path/to/working/directory"
    }
}

或者,如果您使用uvx,假设您已通过"brew install uvx"等在系统中安装了uvx,或者您已安装uvx并使其通过以下方式全局可访问:

# 创建指向/usr/local/bin(通常在系统PATH中)的符号链接
sudo ln -s /Users/cliang/.local/bin/uvx /usr/local/bin/uvx

这从您的用户特定安装创建到系统范围位置的符号链接。对于macOS应用程序(如Claude Desktop),您可以通过创建或编辑launchd配置文件来修改系统范围的PATH:

# 创建plist文件以为所有GUI应用程序设置环境变量
sudo nano /Library/LaunchAgents/environment.plist

添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv PATH $PATH:/Users/cliang/.local/bin</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

然后加载它:

sudo launchctl load -w /Library/LaunchAgents/environment.plist

您需要重新启动计算机才能使此更改生效。

{
  "mcpServers": {
    "kb-server": {
      "command": "uvx",
      "args": [
        "kb-mcp-server@0.2.6",
        "--embeddings", "/path/to/knowledge_base",
        "--host", "localhost",
        "--port", "8000"
      ],
      "cwd": "/path/to/working/directory"
    }
  }
}

将此配置文件放置在LLM客户端可访问的位置,并配置客户端使用它。具体配置步骤将取决于您的特定LLM客户端。

高级知识库配置

使用txtai构建知识库需要一个控制嵌入过程各个方面的YAML配置文件。此配置由kb_builder工具使用,而不是MCP服务器本身。

可能需要调整分段/分块策略、嵌入模型和评分方法,以及配置图构建、因果增强、混合搜索权重等。

幸运的是,txtai提供了一个强大的YAML配置系统,无需编码。以下是一个用于知识库构建的综合配置示例:

# 保存/加载嵌入索引的路径
path: ~/.txtai/embeddings
writable: true

# SQLite中的内容存储
content:
  path: sqlite:///~/.txtai/content.db

# 嵌入配置
embeddings:
  # 模型设置
  path: sentence-transformers/nli-mpnet-base-v2
  backend: faiss
  gpu: true
  batch: 32
  normalize: true
  
  # 评分设置
  scoring: hybrid
  hybridalpha: 0.75

# 流水线配置
pipeline:
  workers: 2
  queue: 100
  timeout: 300

# 问答流水线
extractor:
  path: distilbert-base-cased-distilled-squad
  maxlength: 512
  minscore: 0.3

# 图配置
graph:
  backend: sqlite
  path: ~/.txtai/graph.db
  similarity: 0.75  # 创建图连接的阈值
  limit: 10  # 每个节点的最大连接数

配置示例

src/kb_builder/configs目录包含针对不同用例和存储后端的配置模板:

存储和后端配置

  • memory.yml:内存向量(开发最快,无持久性)
  • sqlite-faiss.yml:SQLite用于内容 + FAISS用于向量(本地基于文件的持久性)
  • postgres-pgvector.yml:PostgreSQL + pgvector(生产就绪,完全持久性)

特定领域配置

  • base.yml:基础配置模板
  • code_repositories.yml:针对代码仓库优化
  • data_science.yml:为数据科学文档配置
  • general_knowledge.yml:通用知识库
  • research_papers.yml:针对学术论文优化
  • technical_docs.yml:为技术文档配置

您可以将这些用作自己配置的起点:

python -m kb_builder build --input /path/to/documents --config src/kb_builder/configs/technical_docs.yml

# 或使用特定于存储的配置
python -m kb_builder build --input /path/to/documents --config src/kb_builder/configs/postgres-pgvector.yml

高级功能

知识图谱功能

MCP服务器利用txtai的内置图功能提供强大的知识图谱功能:

  • 自动图构建:从您的文档自动构建知识图谱
  • 图遍历:导航相关概念和文档
  • 路径查找:发现不同信息片段之间的连接
  • 社区检测:识别相关信息的群集

因果增强机制

MCP服务器包含一个复杂的因果增强机制,通过识别和优先考虑因果关系来提高搜索相关性:

  • 模式识别:检测查询和文档中的因果语言模式
  • 多语言支持:根据检测到的查询语言自动应用适当的模式
  • 可配置的增强乘数:不同类型的因果匹配接收可自定义的增强因子
  • 增强的相关性:解释因果关系的结果在搜索结果中被优先考虑

该机制显著改善了对"为什么"和"如何"问题的响应,通过呈现解释概念之间关系的内容。因果增强配置高度可定制,通过YAML文件允许适应不同领域和语言。

许可证

MIT许可证 - 详情请参阅LICENSE文件

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档