Token导航 LogoToken导航TokenDH.com
MCP Drupal Ts logo
搜索检索未说明官方级别未说明来源级核验

MCP Drupal Ts

MCP Server

一个基于MCP协议的服务器,提供Drupal和PHP文档的搜索和访问工具,支持语义搜索和自定义向量数据库集成。

工具数

2

提示词数

0

GitHub Stars

0

资源数

0
文档处理搜索本地部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ednark

提供方

ednark

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP Drupal文档服务器

一个模型上下文协议(MCP)服务器,提供用于搜索和访问Drupal和PHP文档的工具和资源。

概述

该项目实现了一个MCP服务器,允许AI助手从Drupal和PHP文档中搜索和检索信息。它遵循严格的测试驱动开发(TDD)方法,以确保高代码质量和全面的测试覆盖率。

特性

  • 遵循模型上下文协议规范的MCP服务器实现
  • 用于搜索Drupal和PHP文档的工具
  • 用于访问文档内容的资源
  • 基于自定义文件的矢量数据库集成用于语义搜索
  • 全面的测试套件,覆盖率高

项目结构

mcp-drupal-ts/
├── src/                  # Source code
│   ├── mcp/              # MCP server implementation
│   │   ├── tools/        # MCP tools
│   │   └── resources/    # MCP resources
│   ├── types/            # TypeScript type definitions
│   └── index.ts          # Entry point
├── tests/                # Test files
│   ├── unit/             # Unit tests
│   └── integration/      # Integration tests
├── docs/                 # Documentation
│   └── README.md         # Documentation index
└── README.md             # This file

测试驱动开发

该项目遵循严格的测试驱动开发(TDD)方法。所有功能和错误修复必须按照TDD流程实施:

  1. 先写测试
  2. 运行测试以验证它们是否失败
  3. 实现最少的代码以使测试通过
  4. 在保持通过测试的同时进行重构

有关此项目中TDD过程的详细信息,请参阅 TDD文档.

入门指南

先决条件

  • Node.js 18或更高版本
  • npm 8或更高版本

安装

  1. 克隆存储库:
   git clone https://github.com/yourusername/mcp-drupal-ts.git
   cd mcp-drupal-ts
  1. 安装依赖项:
   npm install
  1. 构建项目:
   npm run build

运行测试

运行所有测试:

npm test

仅运行单元测试:

npm run test:unit

仅运行集成测试:

npm run test:integration

生成覆盖率报告:

npm run test:coverage

运行服务器

启动MCP服务器:

npm start

对于自动重建的开发:

npm run dev

用法

MCP服务器可供支持模型上下文协议的AI助手使用。它提供了搜索和访问Drupal和PHP文档的工具和资源。

用于RooCode的MCP服务器

该项目可以用作RooCode的MCP服务器,为PHP和Drupal文档提供语义搜索功能。有关详细说明,请参阅 RooCode MCP服务器指南.

文档管道

该项目包括一个文档管道,用于收集、处理和导入Drupal和PHP文档:

  1. 从来源收集文件
   npm run collect-php-docs
   npm run collect-drupal-docs
  1. 将文档转换为markdown格式
   npm run markdown-php-docs
   npm run markdown-drupal-docs
  1. 将文档导入数据库
   npm run import-docs
  1. 运行整个管道
   npm run docs-pipeline

矢量搜索

该项目使用基于自定义文件的矢量数据库进行语义搜索:

  1. 使用语义搜索搜索文档
   npm run search-docs -- "your search query"

矢量数据库是一个简单的基于JSON的存储系统,不需要单独的服务器进程。

有关矢量数据库集成的更多详细信息,请参阅 矢量数据库文档.

矢量数据库发布管理

该项目为矢量数据库文件实现了一种基于发布的分发方法。它们不是在Git存储库中存储大型矢量数据库文件,而是通过GitHub版本进行管理,并在需要时自动下载。

架构概述

矢量数据库发布系统由几个组件组成:

  1. 版本管理A. vector-db-version.json file跟踪矢量文件的元数据,包括版本、校验和和和兼容性信息
  2. 开发设置:用于设置具有必要矢量文件的开发环境的工具
  3. 释放大楼:用于构建和发布新矢量数据库版本的脚本
  4. 部署:确保矢量文件在部署过程中存在的脚本
  5. CI/CD集成:GitHub Actions工作流用于自动化发布过程

这种方法有几个好处:

  • 保持Git存储库的小型化和可管理性
  • 确保所有开发人员使用相同的矢量数据库文件
  • 提供版本控制和兼容性检查
  • 通过完整性验证实现轻松更新

矢量数据库版本系统

该系统对矢量数据库版本使用语义版本控制,独立于主应用程序版本。矢量文件元数据存储在 vector-db-version.json:

{
  "version": "0.1.0",           // Semantic version of the vector database
  "releaseDate": "2025-05-12",  // Last update date
  "compatibility": {            // App version compatibility range
    "minAppVersion": "0.1.0",
    "maxAppVersion": null
  },
  "files": {                    // Vector files included in this version
    "drupal-vectors.json": {
      "size": 0,
      "checksum": "",
      "lastUpdated": "2025-05-12",
      "description": "Drupal documentation vector embeddings"
    },
    "php-vectors.json": {
      "size": 0,
      "checksum": "",
      "lastUpdated": "2025-05-12",
      "description": "PHP documentation vector embeddings"
    }
  },
  "repositoryInfo": {           // Repository information for downloads
    "owner": "your-github-username",
    "repo": "mcp-drupal-ts",
    "releasesUrl": "https://github.com/your-github-username/mcp-drupal-ts/releases"
  }
}

当应用程序运行时,它会检查这些矢量文件,如果它们丢失或损坏,则会下载它们。

开发工作流程

建立发展环境

当您首次克隆存储库或需要刷新矢量文件时:

# Install dependencies and auto-setup vector files (runs after npm install)
npm install

# Or manually set up the development environment
npm run setup:dev

# Force redownload of all vector files
npm run setup:dev:force

安装脚本:

  1. 检查矢量数据库文件是否存在
  2. 从GitHub版本下载缺失的文件
  3. 使用校验和验证文件完整性
  4. 报告所有文件的状态

创建新的矢量数据库版本

当您需要创建新的矢量版本时(例如,在更新嵌入后):

# Build a release with patch version increment (0.1.0 → 0.1.1)
npm run vector:build-release:patch

# Build a release with minor version increment (0.1.0 → 0.2.0)
npm run vector:build-release:minor

# Build a release with major version increment (0.1.0 → 1.0.0)
npm run vector:build-release:major

# Or specify the increment type as an argument
npm run vector:build-release -- minor

发布生成器:

  1. 根据指定类型递增版本
  2. 更新文件元数据(大小、校验和、日期)
  3. 在中创建发布包 dist/vector-release 目录
  4. 提供在GitHub上发布版本的说明

建成后:

  1. 提交更新 vector-db-version.json 文件
  2. 用标记提交 vector-db-v{version} (例如。, vector-db-v0.2.0)
  3. 使用以下文件创建GitHub版本 dist/vector-release

使用矢量文件部署

部署应用程序时:

# Deploy with automatic vector file management
npm run deploy

# Or directly
bash scripts/deploy-with-vectors.sh

部署脚本:

  1. 读取矢量数据库版本信息
  2. 检查每个所需的矢量文件
  3. 从GitHub版本下载缺失的文件
  4. 继续部署过程

这确保了在应用程序启动之前,所有必要的矢量文件都可用。

带有GitHub操作的CI/CD

该项目包括一个用于自动矢量数据库发布的GitHub Actions工作流:

手动触发

您可以从GitHub Actions选项卡手动触发发布:

  1. 选择“矢量数据库发布”工作流程
  2. 点击“运行工作流”
  3. 选择版本增量类型(主要、次要、补丁)
  4. 可选择启用自动GitHub发布创建

自动触发

按格式推送标签 vector-db-v* (例如。, vector-db-v0.2.0)也将触发工作流:

git tag vector-db-v0.2.0
git push origin vector-db-v0.2.0

工作流程:

  1. 构建应用程序
  2. 生成矢量数据库文件(如果手动触发)
  3. 更新版本信息
  4. 使用矢量文件创建GitHub版本
  5. 可选地提交对版本文件的更改

NPM脚本参考

矢量数据库管理:

  • setup:dev:使用矢量文件设置开发环境
  • setup:dev:force:强制重新下载所有矢量文件
  • vector:build-release:构建向量版本(默认:补丁)
  • vector:build-release:patch:使用补丁增量构建矢量发布
  • vector:build-release:minor:以较小的增量构建矢量版本
  • vector:build-release:major:以大幅增量构建矢量版本
  • deploy:使用自动矢量文件管理进行部署

相关文档脚本:

  • docs-pipeline:运行完整的文档处理管道
  • import-docs:将文档导入矢量数据库
  • search-docs:使用语义搜索搜索文档

常见问题排查

缺少矢量文件

  • 问题:应用程序报告缺少矢量文件
  • 解决方案:运行 npm run setup:dev 下载矢量文件

校验和验证失败

  • 问题:矢量文件校验和验证失败
  • 解决方案:运行 npm run setup:dev:force 强制重新下载所有文件

未找到GitHub版本

  • 问题:无法从GitHub版本下载矢量文件
  • 解决方案:检查中的存储库信息 vector-db-version.json 正确且GitHub版本存在

拒绝使用sectors.sh进行部署的权限

  • 问题:无法执行部署脚本
  • 解决方案:使脚本可执行 chmod +x scripts/deploy-with-vectors.sh

部署脚本中找不到jq错误

  • 问题:部署脚本报告找不到jq
  • 解决方案:这只是一个警告;脚本将回退到Node.js进行JSON解析

通过MCP进行语义搜索

矢量数据库为通过MCP服务器公开的语义搜索工具提供动力。这允许像RooCode这样的AI助手对文档进行语义搜索:

{
  "id": "789",
  "jsonrpc": "2.0",
  "method": "call_tool",
  "params": {
    "name": "semantic-docs-search",
    "arguments": {
      "query": "How to apply a function to each element of an array?"
    }
  }
}

MCP服务器可供支持模型上下文协议的AI助手使用。它提供了搜索和访问Drupal和PHP文档的工具和资源。

工具使用示例

{
  "id": "123",
  "jsonrpc": "2.0",
  "method": "call_tool",
  "params": {
    "name": "drupal-docs-search",
    "arguments": {
      "query": "hook_form_alter"
    }
  }
}

资源访问示例

{
  "id": "456",
  "jsonrpc": "2.0",
  "method": "read_resource",
  "params": {
    "uri": "drupal-docs://api/hook_form_alter"
  }
}

贡献

欢迎投稿!请按照以下步骤操作:

  1. 分叉存储库
  2. 创建要素分支
  3. 遵循TDD流程(先写测试!)
  4. 提交拉取请求

有关更多详细信息,请参阅 贡献指南.

开发指南

  • 遵循TDD流程进行所有更改
  • 保持高测试覆盖率(最低80%)
  • 遵循TypeScript的最佳实践
  • 使用ESLint提高代码质量

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

  • MCP规范的模型上下文协议团队
  • Drupal社区的优秀文档

目录标签

目录标签

文档处理搜索本地部署文档搜索语义搜索MCP协议Drupal文档PHP文档

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP