统一文档搜索服务

为Plesk扩展开发者提供的统一文档搜索服务,支持跨多个文档源的语义搜索和快速检索。

  • by barateza
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 barateza/mcp-plesk-unified

使用说明

mcp plesk开发文档

[!注意] 此MCP服务器为扩展开发人员提供统一的文档搜索。如果您想通过人工智能管理您的实时Plesk服务器,请参阅 官方Plesk MCP服务器.

在整个Plesk文档表面进行最新技术(SOTA)语义搜索,针对Apple Silicon上的亚秒延迟进行了优化。


为什么存在

Plesk文档分布在五个不同的来源:管理指南、REST API参考、CLI参考、PHP SDK和JS SDK。回答一个扩展开发问题通常意味着手动搜索所有问题,交叉引用结果,但仍然缺少相关部分。

该服务器接收所有五个源,用多语言模型嵌入它们,并公开一个 search_plesk_unified MCP工具。它使用混合搜索(矢量+FTS)、互易秩融合(RRF)和交叉编码器重新排序,在毫秒内提供高精度结果。


架构与性能

flowchart TD
    Client["MCP Client\n(Claude Desktop / Cursor / etc.)"]

    Client -->|"search_plesk_unified(query)"| Server

    subgraph Server["FastMCP Server · Modular Architecture"]
        direction TB
        Main["Bootstrap · server/main.py"]
        Life["Lifecycle Hooks · server/lifecycle.py"]
        Tools["MCP Tools · server/mcp_app.py"]

        Main --> Life --> Tools
    end

    subgraph Pipeline["Retrieval Pipeline"]
        direction TB
        E["1 · Embed query\n(Hardware-accelerated)"]
        S["2 · Hybrid Search\nVector (LanceDB) + FTS (Tantivy)"]
        R["3 · RRF Merge + Rerank\n(MiniLM-L4-v2)"]
        N["4 · Neighbor Expansion\n(Context Enrichment)"]
        A["5 · AI Synthesis\n(sampling-enabled)"]
        E --> S --> R --> N --> A
    end

    subgraph Store["LanceDB Vector & FTS Store"]
        direction LR
        G["Guide"]
        A_["API"]
        C["CLI"]
        P["PHP Stubs"]
        J["JS SDK"]
    end

    Tools --> Pipeline
    S <--> Store

绩效基准(2026-05-04)

使用MPS加速和内存驻留表缓存,针对Apple Silicon(M2/M3)进行了优化。

配置文件 嵌入模型 HR@5 MRR@5 平均延迟 估计值。RAM
light BAAI/bge-small 100.0% 0.917 1.007秒 约200 MB
medium BAAI/bge基地。 100.0% 0.917 ~0.60秒 ~600 MB
full-tq BAAI/bge-m3 75.0% 0.750 ~0.40秒 约1300 MB

在启用LanceDB连接缓存的Apple M2 Pro上测量的指标。


主要特点

  • 单实例锁: 当多个MCP客户端或IDE会话试图同时启动服务器时,基于PID的锁会阻止并发LanceDB访问。
  • 亚秒级混合搜索: 矢量+Tantivy FTS与 RAM缓存表连接 用于即时检索。
  • AST感知分块: 用途 tree-sitter 尊重PHP、JS和TS文档中的类和方法边界。
  • TurboQuant加速: 快速4位量化搜索 full-tq 配置文件,为大型型号提供10倍的低延迟。
  • 邻里检索: 自动获取相邻块(上一个/下一个),为接地提供完整的上下文。
  • 宏观背景概述: 使用以下命令将文件级目的摘要注入到每个块中 SummaryCache.
  • 人工智能综合答案: 通过结构化内联引用从搜索结果中生成简洁的答案 [1], [2].

MCP组件

此服务器提供工具、提示和资源。看 docs/mcp-components.md 以获取完整参考。

主要工具

工具 说明
search_plesk_unified 使用RRF和交叉编码器重新排序的混合搜索。
get_file_content 检索特定文档文件的完整内容。
resolve_references 查找引用特定符号或主题的所有文件。
refresh_knowledge 重新获取源并更新索引(增量)。
trigger_index_sync 启动后台索引作业。
daemon_health 检查准备状态、硬件加速(MPS/CUDA)和延迟统计数据。

资源

  • plesk://toc/api -API文件目录。
  • plesk://toc/cli -CLI参考目录。
  • plesk://toc/guide -扩展指南目录。
  • plesk://toc/php-stubs -PHP类的分层列表。

🚀 安装和设置

因为此服务器发布到 PyPI 并在 MCP注册表,您甚至不需要克隆存储库来运行它!

选项1:通过立即运行 uvx (推荐)

您可以在几秒钟内运行或集成服务器。

1.添加到克劳德桌面

将服务器配置添加到您的 claude_desktop_config.json (通常在 ~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上,或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上):

{
  "mcpServers": {
    "plesk-dev-docs": {
      "command": "uvx",
      "args": ["mcp-plesk-dev-docs"]
    }
  }
}

2.在游标中配置

首选 设置>功能>MCP,单击 +添加新的MCP服务器:

  • 姓名: plesk-dev-docs
  • 类型: command
  • 命令: uvx mcp-plesk-dev-docs

选项2:本地开发人员设置(手动构建)

如果要修改源代码、运行基准测试或管理数据库迁移:

快速引导(推荐):

git clone https://github.com/barateza/mcp-plesk-dev-docs.git
cd mcp-plesk-dev-docs
./install.sh          # Linux / macOS
# powershell -ExecutionPolicy Bypass -File install.ps1   # Windows

手动设置:

git clone https://github.com/barateza/mcp-plesk-dev-docs.git
cd mcp-plesk-dev-docs
uv pip install -e ".[dev]"
  1. 运行初始索引: 生成离线向量数据库和全文搜索索引:

    uv run python -m mcp_plesk_dev_docs.server.main refresh_knowledge
    
  2. 启动服务器:

    uv run python -m mcp_plesk_dev_docs.server.main
    

配置

在中设置环境变量 .env:

PLESK_MODEL_PROFILE=light       # light | medium | full-tq
PLESK_ENABLE_SAMPLING=true     # AI-Synthesized answers
PLESK_DAEMON_AUTO_WARMUP=true  # Preload models on startup
PLESK_INDEX_SUMMARIES=true     # Enable file-level summaries
OPENROUTER_API_KEY=sk-or-v1-...

文档


许可证

MIT。看 许可证.

所有权和免责声明

这是Gilson Siqueira的个人项目。它不是Plesk或WebPros International GmbH的正式附属机构、认可机构或支持机构。Plesk是WebPro International GmbH的商标。

关于Plesk拥有的交付成果的重要通知

该存储库的部分内容是根据Plesk International GmbH(“Plesk”)的合同开发的,除非明确指出。上述MIT许可证仅适用于存储库所有者有权许可的材料。Plesk拥有的文件或目录(如有)列在 通知。如果您需要特定文件的许可保证,请在依赖Plesk拥有的文件的MIT许可证之前联系Plesk或寻求法律顾问。


旨在使Plesk扩展开发更快。