Token导航 LogoToken导航TokenDH.com
Drush MCP logo
AI代理stdio官方级别未说明来源级核验

Drush MCP

MCP Server

skills

通过Drush为Drupal提供的MCP服务器,允许AI代理通过执行Drush命令与Drupal 10+/11+站点交互。

工具数

19

提示词数

0

GitHub Stars

4

资源数

0
TypeScriptClaudeAI代理ClaudeCursorWindsurf

安装说明

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

作者 / 组织

Bloomidea

提供方

Bloomidea

最后核验

2026/5/17 20:19

运行时

Node.js

快速接入

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

命令预览

npx skills add Bloomidea/drush-mcp

详细介绍

drush mcp

通过Drush为Drupal提供MCP服务器。允许AI代理(Claude Code、Gemini CLI等)通过执行Drush命令与任何Drupal 10+/11+站点进行交互,可以在本地、通过SSH或通过Docker。

两个包:

  • @bloomidea/drush-mcp (npm)-TypeScript MCP服务器
  • bloomidea/drush-mcp-bridge (Composer)-用于结构化实体操作的PHP Drush桥

需求

  • Node.js 18+
  • PHP 8.1+
  • 德鲁士语12+或13+
  • Drupal 10+或11+

快速开始

安装MCP服务器:

npm install -g @bloomidea/drush-mcp

在Drupal站点上安装Drush桥:

composer require bloomidea/drush-mcp-bridge

添加 代理技能 因此,您的代理知道如何使用Drupal实体、字段和组:

npx skills add Bloomidea/drush-mcp
*“在Atrium组中创建任务”* / *“列出所有已发表的文章”* / *“检查Drupal状态”* / *“向节点123添加注释”* 适用于 Claude Code、Cursor、Codex、Gemini、Windsurf和37+代理商.

在克劳德代码(本地)中注册:

claude mcp add drupal -- drush-mcp --local --command "drush"

或者使用SSH:

claude mcp add drupal -- drush-mcp --ssh --host example.com --user deploy --root /var/www/html

配置

三种方法:CLI标志、YAML配置文件或环境变量。

CLI标志

# Local
drush-mcp --local --command "ddev drush"

# SSH
drush-mcp --ssh --host example.com --user deploy --root /var/www/html

# Docker (static container name)
drush-mcp --docker --host example.com --user deploy --container mycontainer

# Docker (dynamic container lookup via filter)
drush-mcp --docker --host example.com --user deploy --container-filter "label=coolify.serviceName=myapp"

配置文件

创建 drush-mcp.yml 在项目根目录或主目录中,或传递 --config path:

sites:
  production:
    transport: ssh
    host: example.com
    user: deploy
    root: /var/www/html
  local:
    transport: local
    command: ddev drush

defaults:
  timeout: 30

德鲁什网站别名

如果您的项目已经使用 Drush网站别名 (drush/sites/self.site.yml),字段直接映射到 drush-mcp.yml:

Drush别名字段Drush-mcp等效项
hosthost
useruser
rootroot
uriuri
docker.servicecontainer

所以德鲁什人的别名是这样的:

# drush/sites/self.site.yml
live:
  host: example.com
  user: deploy
  root: /var/www/html
  uri: https://example.com

成为:

# drush-mcp.yml
sites:
  live:
    transport: ssh
    host: example.com
    user: deploy
    root: /var/www/html
    uri: https://example.com

主要区别在于drush-mcp需要一个明确的 transport 字段,并支持其他选项,如 containerFilter 用于动态Docker容器查找。

文件上传设置(每个站点)

drupal_file_uploaddrupal_file_attach 接受可选 file_upload 中的设置 drush-mcp.yml (所有键都是可选的,显示默认值):

sites:
  production:
    transport: ssh
    host: example.com
    user: deploy
    root: /var/www/html
    uri: https://example.com   # required to get a real public URL back
    file_upload:
      max_size: 10485760                # 10 MB; further capped by upload_max_filesize / post_max_size
      allowed_extensions: [txt, md, pdf, png, jpg, jpeg, gif, svg, log, sql, json, yaml, yml, zip, tar, gz]
      default_uid: 0                    # 0 = anonymous; set to a real user ID for attribution
      destination_prefix: mcp-uploads   # files land in ://
//

没有a uri 为站点配置后,该工具仍然可以工作,但 url 在响应中是 null (CLI模式下的drush没有 --uri 无法构建可路由的公共URL)。

环境变量

变量描述
DRUSH_MCP_TRANSPORTlocal, ssh,或 docker
DRUSH_MCP_HOSTSSH/Docker主机
DRUSH_MCP_USERSSH/Docker用户
DRUSH_MCP_ROOTDrupal根路径
DRUSH_MCP_COMMAND本地命令(例如。 ddev drush)
DRUSH_MCP_CONTAINERDocker容器名称
DRUSH_MCP_CONTAINER_FILTER用于动态容器查找的Docker过滤器

动态容器分辨率

当使用基于Docker的托管平台(Coolify、Docker Swarm等)时,容器名称在每次部署时都会发生变化。使用 --container-filtercontainerFilter 带有任何有效配置选项 docker ps --filter 表达式:

# Coolify: match by service name label
drush-mcp --docker --host example.com --user root --container-filter "label=coolify.serviceName=myapp-web"

# Docker Compose: match by compose service
drush-mcp --docker --host example.com --user root --container-filter "label=com.docker.compose.service=web"

# Match by image name
drush-mcp --docker --host example.com --user root --container-filter "ancestor=myimage:latest"

或在 drush-mcp.yml:

sites:
  production:
    transport: docker
    host: example.com
    user: root
    containerFilter: "label=coolify.serviceName=myapp-web"

容器名称在每次命令时都会通过以下方式重新解析 docker ps --filter,因此它在部署后会自动拾取新的容器。

冷却设置

如果你的Drupal网站运行在 冷却:

  1. 在Coolify中设置服务名称: 配置>通用>名称 (例如。, atrium-web)
  2. 使用标签过滤器:
   claude mcp add drupal-production -- drush-mcp \
     --docker --host your-server.com --user root \
     --container-filter "label=coolify.serviceName=atrium-web"
  1. 在Drupal站点上安装网桥: composer require bloomidea/drush-mcp-bridge
  2. 部署-桥接命令立即可用

工具

无论运输方式如何,所有19种工具都可用:

工具说明
drupal_entity_create从JSON字段创建实体
drupal_entity_read按类型+ID加载实体
drupal_entity_update更新现有实体上的字段
drupal_entity_list使用筛选器查询实体
drupal_entity_delete按类型+ID删除实体
drupal_introspect发现实体类型、捆绑包、字段
drupal_cache_rebuild清除所有缓存
drupal_watchdog查看最近的日志条目
drupal_status网站信息(版本、数据库、PHP)
drupal_config_get读取配置值
drupal_config_set写入配置值
drupal_field_info实体类型的字段定义
drupal_user_create创建用户帐户
drupal_user_block阻止用户帐户
drupal_file_upload上传字节并创建托管文件实体
drupal_file_attach在一次往返中上传字节并附加到节点、注释或其他实体上的文件/图像字段
drupal_drush运行任何Drush命令
drupal_php_eval执行PHP代码
drupal_sql_query运行SQL查询

多站点

配置多个站点时,所有工具都接受 site 参数以针对特定站点。配置单个站点后,它会自动解析。

德鲁什桥命令

bloomidea/drush-mcp-bridge Composer包提供Drush自动发现的结构化实体命令:

命令描述
mcp:entity-create创建实体
mcp:entity-read读取实体
mcp:entity-update更新实体
mcp:entity-list查询实体
mcp:introspect内省实体类型和字段
mcp:file-upload上传字节(从stdin读取)并创建托管文件实体
mcp:file-attach上传字节并附加到实体上的文件/图像字段,使用 file.usage 注册失败后回滚

通过Composer安装,Drush会自动获取它们,无需额外注册。

重要提示: 桥接命令类文件必须命名 *DrushCommands.php (不是 *Commands.php)Drush 12的PSR-4发现。该类还提供了一个静态 create() Drupal服务容器中依赖注入的工厂方法。

这与Drupal MCP服务器模块有何不同?

MCP服务器 Drupal模块采用了一种不同的方法:它运行MCP服务器 里面 Drupal作为一个PHP模块,通过HTTP和OAuth 2.1身份验证公开工具。

drush mcp跑步 外面 Drupal是一个独立的TypeScript进程,通过shell、SSH或Docker执行Drush命令。这导致了几个实际差异:

drush-mcpmcp服务器模块
在Drupal上安装可选Composer包(桥接)必需模块+工具API+简单OAuth
运行为外部Node.js进程Drupal的PHP运行时内部
运输STDIO(本地shell、SSH、Docker)HTTP端点(/_mcp)
身份验证模型SSH密钥/shell访问OAuth 2.1令牌
配置YAML文件或CLI标志Drupal配置实体
工具17个固定工具+任意Drush可通过工具API插件扩展
多站点内置(一台服务器,多个站点)每个Drupal站点一个实例
无需更改Drupal即可工作是(内置Drush命令无需桥接即可工作)否(必须安装和配置模块)

何时使用drush mcp: 您已经可以通过SSH/shell访问您的站点,希望通过一个MCP服务器连接多个Drupal站点,或者不希望安装额外的Drupal模块。适用于DDEV/Lando的开发工作流程和管理多个站点的运维团队。

何时使用MCP服务器模块: 您需要细粒度的基于OAuth的访问控制,想要公开自定义工具API插件,或者更喜欢将所有内容保留在Drupal的生态系统中。

安全

没有人为的能力层次。如果你有Drush访问网站的权限,你就可以访问所有工具。

安全边界是传输访问:SSH密钥、Docker套接字权限或本地进程访问。桥接命令(mcp:entity-*)强制Drupal的实体访问检查。电动工具(drupal_drush, drupal_php_eval, drupal_sql_query)不要——相应地对待他们。

许可证

麻省理工学院

目录标签

目录标签

TypeScriptClaudeAI代理Drupal本地部署DrushMCP服务器实体操作

支持客户端

ClaudeCursorWindsurf

接入字段

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

stdio

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

oauth

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

skills

工具数量(toolCount,工具数)

19

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiooauth部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP