drupal-mcp-connector 2.7.3 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/.agents/commands/drupal-audit-config-best-practices.md +15 -0
  2. package/{.claude → .agents}/commands/drupal-audit-site-health.md +4 -5
  3. package/.agents/commands/drupal-block-user.md +19 -0
  4. package/{.claude → .agents}/commands/drupal-bulk-create.md +4 -5
  5. package/{.claude → .agents}/commands/drupal-bulk-update.md +4 -5
  6. package/.agents/commands/drupal-config-get.md +18 -0
  7. package/.agents/commands/drupal-config-list.md +16 -0
  8. package/.agents/commands/drupal-config-set.md +19 -0
  9. package/.agents/commands/drupal-content-by-moderation-state.md +21 -0
  10. package/.agents/commands/drupal-create-block.md +20 -0
  11. package/{.claude → .agents}/commands/drupal-create-media.md +4 -5
  12. package/{.claude → .agents}/commands/drupal-create-menu-link.md +4 -5
  13. package/{.claude → .agents}/commands/drupal-create-node.md +7 -8
  14. package/{.claude → .agents}/commands/drupal-create-paragraph.md +4 -5
  15. package/{.claude → .agents}/commands/drupal-create-redirect.md +4 -5
  16. package/.agents/commands/drupal-create-taxonomy-term.md +22 -0
  17. package/{.claude → .agents}/commands/drupal-create-translation.md +4 -5
  18. package/.agents/commands/drupal-create-user.md +23 -0
  19. package/.agents/commands/drupal-delete-media.md +21 -0
  20. package/.agents/commands/drupal-delete-node.md +22 -0
  21. package/.agents/commands/drupal-delete-taxonomy-term.md +21 -0
  22. package/{.claude → .agents}/commands/drupal-describe-fields.md +4 -5
  23. package/.agents/commands/drupal-drush-cache-rebuild.md +15 -0
  24. package/.agents/commands/drupal-drush-config-export.md +15 -0
  25. package/.agents/commands/drupal-drush-config-import.md +15 -0
  26. package/.agents/commands/drupal-drush-config-status.md +15 -0
  27. package/.agents/commands/drupal-drush-cron.md +15 -0
  28. package/.agents/commands/drupal-drush-module-disable.md +20 -0
  29. package/.agents/commands/drupal-drush-module-enable.md +18 -0
  30. package/.agents/commands/drupal-drush-module-list.md +16 -0
  31. package/.agents/commands/drupal-drush-security-updates.md +15 -0
  32. package/{.claude → .agents}/commands/drupal-drush-sql-query.md +4 -5
  33. package/.agents/commands/drupal-drush-status.md +15 -0
  34. package/.agents/commands/drupal-drush-updatedb.md +15 -0
  35. package/.agents/commands/drupal-drush-user-create.md +21 -0
  36. package/.agents/commands/drupal-drush-user-list.md +18 -0
  37. package/.agents/commands/drupal-drush-watchdog.md +18 -0
  38. package/{.claude → .agents}/commands/drupal-entity-create.md +4 -5
  39. package/.agents/commands/drupal-entity-delete.md +23 -0
  40. package/.agents/commands/drupal-entity-get.md +21 -0
  41. package/{.claude → .agents}/commands/drupal-entity-list.md +4 -5
  42. package/{.claude → .agents}/commands/drupal-entity-update.md +7 -8
  43. package/.agents/commands/drupal-find-orphaned-media.md +17 -0
  44. package/.agents/commands/drupal-get-entity-schema.md +19 -0
  45. package/.agents/commands/drupal-get-media.md +19 -0
  46. package/.agents/commands/drupal-get-node.md +19 -0
  47. package/{.claude → .agents}/commands/drupal-get-paragraph.md +4 -5
  48. package/{.claude → .agents}/commands/drupal-get-revision.md +4 -5
  49. package/.agents/commands/drupal-get-taxonomy-term.md +19 -0
  50. package/.agents/commands/drupal-get-taxonomy-terms.md +20 -0
  51. package/.agents/commands/drupal-get-user-by-name.md +18 -0
  52. package/.agents/commands/drupal-get-user.md +18 -0
  53. package/{.claude → .agents}/commands/drupal-governance-status.md +4 -5
  54. package/.agents/commands/drupal-graphql-introspect.md +16 -0
  55. package/{.claude → .agents}/commands/drupal-graphql.md +4 -5
  56. package/{.claude → .agents}/commands/drupal-list-blocks.md +4 -5
  57. package/.agents/commands/drupal-list-content-types.md +15 -0
  58. package/.agents/commands/drupal-list-entity-types.md +15 -0
  59. package/.agents/commands/drupal-list-media-types.md +15 -0
  60. package/.agents/commands/drupal-list-media.md +20 -0
  61. package/{.claude → .agents}/commands/drupal-list-menu-links.md +4 -5
  62. package/.agents/commands/drupal-list-moderation-states.md +19 -0
  63. package/{.claude → .agents}/commands/drupal-list-nodes.md +4 -5
  64. package/{.claude → .agents}/commands/drupal-list-revisions.md +4 -5
  65. package/.agents/commands/drupal-list-roles.md +15 -0
  66. package/{.claude → .agents}/commands/drupal-list-sites.md +2 -3
  67. package/{.claude → .agents}/commands/drupal-list-translations.md +4 -5
  68. package/.agents/commands/drupal-list-users.md +19 -0
  69. package/.agents/commands/drupal-list-vocabularies.md +15 -0
  70. package/.agents/commands/drupal-mcp-whoami.md +15 -0
  71. package/.agents/commands/drupal-report-404-log.md +16 -0
  72. package/.agents/commands/drupal-report-accessibility-audit.md +17 -0
  73. package/.agents/commands/drupal-report-alias-coverage.md +17 -0
  74. package/.agents/commands/drupal-report-broken-embeds.md +17 -0
  75. package/{.claude → .agents}/commands/drupal-report-broken-links.md +4 -5
  76. package/.agents/commands/drupal-report-cache-config.md +15 -0
  77. package/.agents/commands/drupal-report-config-drift.md +15 -0
  78. package/.agents/commands/drupal-report-content-by-author.md +17 -0
  79. package/.agents/commands/drupal-report-content-summary.md +15 -0
  80. package/.agents/commands/drupal-report-duplicate-content.md +17 -0
  81. package/.agents/commands/drupal-report-field-completeness.md +20 -0
  82. package/.agents/commands/drupal-report-menu-integrity.md +16 -0
  83. package/{.claude → .agents}/commands/drupal-report-missing-field.md +4 -5
  84. package/.agents/commands/drupal-report-module-audit.md +15 -0
  85. package/.agents/commands/drupal-report-orphan-pages.md +17 -0
  86. package/{.claude → .agents}/commands/drupal-report-orphaned-references.md +4 -5
  87. package/.agents/commands/drupal-report-permission-audit.md +15 -0
  88. package/.agents/commands/drupal-report-pii-exposure.md +18 -0
  89. package/.agents/commands/drupal-report-readability.md +18 -0
  90. package/.agents/commands/drupal-report-recently-published.md +17 -0
  91. package/.agents/commands/drupal-report-redirect-health.md +16 -0
  92. package/.agents/commands/drupal-report-revision-hotspots.md +17 -0
  93. package/.agents/commands/drupal-report-scheduled-content.md +17 -0
  94. package/{.claude → .agents}/commands/drupal-report-seo-audit.md +4 -5
  95. package/.agents/commands/drupal-report-seo-meta-coverage.md +18 -0
  96. package/.agents/commands/drupal-report-stale-content.md +19 -0
  97. package/.agents/commands/drupal-report-status-report.md +16 -0
  98. package/.agents/commands/drupal-report-taxonomy-usage.md +21 -0
  99. package/.agents/commands/drupal-report-text-format-audit.md +15 -0
  100. package/.agents/commands/drupal-report-translation-coverage.md +18 -0
  101. package/.agents/commands/drupal-report-unpublished.md +17 -0
  102. package/.agents/commands/drupal-report-user-activity.md +17 -0
  103. package/.agents/commands/drupal-report-workflow-bottlenecks.md +19 -0
  104. package/{.claude → .agents}/commands/drupal-resolve-reference.md +4 -5
  105. package/{.claude → .agents}/commands/drupal-revert-revision.md +4 -5
  106. package/{.claude → .agents}/commands/drupal-schedule-publish.md +4 -5
  107. package/.agents/commands/drupal-search-content.md +21 -0
  108. package/.agents/commands/drupal-search.md +20 -0
  109. package/.agents/commands/drupal-security-info.md +15 -0
  110. package/.agents/commands/drupal-set-moderation-state.md +20 -0
  111. package/.agents/commands/drupal-site-info.md +15 -0
  112. package/.agents/commands/drupal-update-media.md +22 -0
  113. package/{.claude → .agents}/commands/drupal-update-menu-link.md +4 -5
  114. package/{.claude → .agents}/commands/drupal-update-node.md +10 -11
  115. package/{.claude → .agents}/commands/drupal-update-paragraph.md +4 -5
  116. package/{.claude → .agents}/commands/drupal-update-redirect.md +4 -5
  117. package/.agents/commands/drupal-update-taxonomy-term.md +22 -0
  118. package/.agents/commands/drupal-update-user.md +24 -0
  119. package/{.claude → .agents}/commands/drupal-upload-file-and-create-media.md +4 -5
  120. package/{.claude → .agents}/commands/drupal-upload-file.md +4 -5
  121. package/CHANGELOG.md +80 -0
  122. package/README.md +23 -12
  123. package/config/config.example.json +1 -1
  124. package/package.json +4 -2
  125. package/scripts/generate-commands.js +42 -21
  126. package/scripts/install-commands.js +157 -0
  127. package/src/lib/backends/backend-interface.js +20 -1
  128. package/src/lib/backends/jsonapi.js +47 -4
  129. package/src/lib/body-summary.js +60 -0
  130. package/src/lib/data-flow.js +437 -0
  131. package/src/lib/dispatch.js +99 -30
  132. package/src/lib/drupal-fetch.js +52 -6
  133. package/src/lib/field-definition.js +285 -0
  134. package/src/lib/operations.js +39 -2
  135. package/src/lib/patch-preflight.js +157 -66
  136. package/src/lib/security.js +15 -1
  137. package/src/lib/server-tools.js +9 -0
  138. package/src/lib/site-target.js +78 -0
  139. package/src/lib/tool-prompts.js +2 -1
  140. package/src/lib/write-revision.js +82 -2
  141. package/src/tools/bulk.js +4 -3
  142. package/src/tools/config.js +5 -2
  143. package/src/tools/entities.js +11 -7
  144. package/src/tools/index.js +24 -3
  145. package/src/tools/moderation.js +88 -9
  146. package/src/tools/nodes.js +55 -43
  147. package/.claude/commands/drupal-audit-config-best-practices.md +0 -16
  148. package/.claude/commands/drupal-block-user.md +0 -20
  149. package/.claude/commands/drupal-config-get.md +0 -19
  150. package/.claude/commands/drupal-config-list.md +0 -17
  151. package/.claude/commands/drupal-config-set.md +0 -20
  152. package/.claude/commands/drupal-content-by-moderation-state.md +0 -22
  153. package/.claude/commands/drupal-create-block.md +0 -21
  154. package/.claude/commands/drupal-create-taxonomy-term.md +0 -23
  155. package/.claude/commands/drupal-create-user.md +0 -24
  156. package/.claude/commands/drupal-delete-media.md +0 -22
  157. package/.claude/commands/drupal-delete-node.md +0 -23
  158. package/.claude/commands/drupal-delete-taxonomy-term.md +0 -22
  159. package/.claude/commands/drupal-drush-cache-rebuild.md +0 -16
  160. package/.claude/commands/drupal-drush-config-export.md +0 -16
  161. package/.claude/commands/drupal-drush-config-import.md +0 -16
  162. package/.claude/commands/drupal-drush-config-status.md +0 -16
  163. package/.claude/commands/drupal-drush-cron.md +0 -16
  164. package/.claude/commands/drupal-drush-module-disable.md +0 -21
  165. package/.claude/commands/drupal-drush-module-enable.md +0 -19
  166. package/.claude/commands/drupal-drush-module-list.md +0 -17
  167. package/.claude/commands/drupal-drush-security-updates.md +0 -16
  168. package/.claude/commands/drupal-drush-status.md +0 -16
  169. package/.claude/commands/drupal-drush-updatedb.md +0 -16
  170. package/.claude/commands/drupal-drush-user-create.md +0 -22
  171. package/.claude/commands/drupal-drush-user-list.md +0 -19
  172. package/.claude/commands/drupal-drush-watchdog.md +0 -19
  173. package/.claude/commands/drupal-entity-delete.md +0 -24
  174. package/.claude/commands/drupal-entity-get.md +0 -22
  175. package/.claude/commands/drupal-find-orphaned-media.md +0 -18
  176. package/.claude/commands/drupal-get-entity-schema.md +0 -20
  177. package/.claude/commands/drupal-get-media.md +0 -20
  178. package/.claude/commands/drupal-get-node.md +0 -20
  179. package/.claude/commands/drupal-get-taxonomy-term.md +0 -20
  180. package/.claude/commands/drupal-get-taxonomy-terms.md +0 -21
  181. package/.claude/commands/drupal-get-user-by-name.md +0 -19
  182. package/.claude/commands/drupal-get-user.md +0 -19
  183. package/.claude/commands/drupal-graphql-introspect.md +0 -17
  184. package/.claude/commands/drupal-list-content-types.md +0 -16
  185. package/.claude/commands/drupal-list-entity-types.md +0 -16
  186. package/.claude/commands/drupal-list-media-types.md +0 -16
  187. package/.claude/commands/drupal-list-media.md +0 -21
  188. package/.claude/commands/drupal-list-moderation-states.md +0 -20
  189. package/.claude/commands/drupal-list-roles.md +0 -16
  190. package/.claude/commands/drupal-list-users.md +0 -20
  191. package/.claude/commands/drupal-list-vocabularies.md +0 -16
  192. package/.claude/commands/drupal-mcp-whoami.md +0 -16
  193. package/.claude/commands/drupal-report-404-log.md +0 -17
  194. package/.claude/commands/drupal-report-accessibility-audit.md +0 -18
  195. package/.claude/commands/drupal-report-alias-coverage.md +0 -18
  196. package/.claude/commands/drupal-report-broken-embeds.md +0 -18
  197. package/.claude/commands/drupal-report-cache-config.md +0 -16
  198. package/.claude/commands/drupal-report-config-drift.md +0 -16
  199. package/.claude/commands/drupal-report-content-by-author.md +0 -18
  200. package/.claude/commands/drupal-report-content-summary.md +0 -16
  201. package/.claude/commands/drupal-report-duplicate-content.md +0 -18
  202. package/.claude/commands/drupal-report-field-completeness.md +0 -21
  203. package/.claude/commands/drupal-report-menu-integrity.md +0 -17
  204. package/.claude/commands/drupal-report-module-audit.md +0 -16
  205. package/.claude/commands/drupal-report-orphan-pages.md +0 -18
  206. package/.claude/commands/drupal-report-permission-audit.md +0 -16
  207. package/.claude/commands/drupal-report-pii-exposure.md +0 -19
  208. package/.claude/commands/drupal-report-readability.md +0 -19
  209. package/.claude/commands/drupal-report-recently-published.md +0 -18
  210. package/.claude/commands/drupal-report-redirect-health.md +0 -17
  211. package/.claude/commands/drupal-report-revision-hotspots.md +0 -18
  212. package/.claude/commands/drupal-report-scheduled-content.md +0 -18
  213. package/.claude/commands/drupal-report-seo-meta-coverage.md +0 -19
  214. package/.claude/commands/drupal-report-stale-content.md +0 -20
  215. package/.claude/commands/drupal-report-status-report.md +0 -17
  216. package/.claude/commands/drupal-report-taxonomy-usage.md +0 -22
  217. package/.claude/commands/drupal-report-text-format-audit.md +0 -16
  218. package/.claude/commands/drupal-report-translation-coverage.md +0 -19
  219. package/.claude/commands/drupal-report-unpublished.md +0 -18
  220. package/.claude/commands/drupal-report-user-activity.md +0 -18
  221. package/.claude/commands/drupal-report-workflow-bottlenecks.md +0 -20
  222. package/.claude/commands/drupal-search-content.md +0 -22
  223. package/.claude/commands/drupal-search.md +0 -21
  224. package/.claude/commands/drupal-security-info.md +0 -16
  225. package/.claude/commands/drupal-set-moderation-state.md +0 -21
  226. package/.claude/commands/drupal-site-info.md +0 -16
  227. package/.claude/commands/drupal-update-media.md +0 -23
  228. package/.claude/commands/drupal-update-taxonomy-term.md +0 -23
  229. package/.claude/commands/drupal-update-user.md +0 -25
@@ -1,23 +0,0 @@
1
- ---
2
- description: "Create a new taxonomy term in a vocabulary."
3
- argument-hint: "<vocabulary> <name> [site] [description] [weight] [parentId]"
4
- allowed-tools: mcp__drupal__drupal_create_taxonomy_term
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_create_taxonomy_term` MCP tool.
8
-
9
- Create a new taxonomy term in a vocabulary.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `vocabulary` (string)
15
- - `name` (string)
16
-
17
- **Optional:**
18
- - `site` (string): omit for the default site
19
- - `description` (string)
20
- - `weight` (number)
21
- - `parentId` (string): UUID of parent term (for hierarchical vocabularies)
22
-
23
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,24 +0,0 @@
1
- ---
2
- description: "Create a new Drupal user account with optional roles and password."
3
- argument-hint: "<name> <mail> [site] [password] [status] [roles] [timezone]"
4
- allowed-tools: mcp__drupal__drupal_create_user
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_create_user` MCP tool.
8
-
9
- Create a new Drupal user account with optional roles and password.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `name` (string): Username
15
- - `mail` (string): Email address
16
-
17
- **Optional:**
18
- - `site` (string): omit for the default site
19
- - `password` (string): Initial password (plaintext — sent over HTTPS)
20
- - `status` (boolean (true/false)): true = active (default)
21
- - `roles` (array (pass as JSON)): Role UUIDs to assign
22
- - `timezone` (string)
23
-
24
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,22 +0,0 @@
1
- ---
2
- description: "Delete a media entity. Does not delete the underlying File entity. Confirm with the user before calling."
3
- argument-hint: "<type> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_delete_media
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_delete_media` MCP tool.
8
-
9
- Delete a media entity. Does not delete the underlying File entity. Confirm with the user before calling.
10
-
11
- > ⚠ **Destructive** — this permanently changes or deletes data. Confirm with the user before calling.
12
-
13
- Parse the request in `$ARGUMENTS` into this tool's parameters:
14
-
15
- **Required:**
16
- - `type` (string)
17
- - `id` (string)
18
-
19
- **Optional:**
20
- - `site` (string): omit for the default site
21
-
22
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,23 +0,0 @@
1
- ---
2
- description: "Permanently delete a node. Irreversible — confirm with the user before calling."
3
- argument-hint: "<type> <id> [site] [dryRun]"
4
- allowed-tools: mcp__drupal__drupal_delete_node
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_delete_node` MCP tool.
8
-
9
- Permanently delete a node. Irreversible — confirm with the user before calling.
10
-
11
- > ⚠ **Destructive** — this permanently changes or deletes data. Confirm with the user before calling.
12
-
13
- Parse the request in `$ARGUMENTS` into this tool's parameters:
14
-
15
- **Required:**
16
- - `type` (string)
17
- - `id` (string): Node UUID
18
-
19
- **Optional:**
20
- - `site` (string): omit for the default site
21
- - `dryRun` (boolean (true/false)): Validate and return a preview of the delete without committing.
22
-
23
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,22 +0,0 @@
1
- ---
2
- description: "Delete a taxonomy term. Confirm with the user before calling."
3
- argument-hint: "<vocabulary> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_delete_taxonomy_term
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_delete_taxonomy_term` MCP tool.
8
-
9
- Delete a taxonomy term. Confirm with the user before calling.
10
-
11
- > ⚠ **Destructive** — this permanently changes or deletes data. Confirm with the user before calling.
12
-
13
- Parse the request in `$ARGUMENTS` into this tool's parameters:
14
-
15
- **Required:**
16
- - `vocabulary` (string)
17
- - `id` (string)
18
-
19
- **Optional:**
20
- - `site` (string): omit for the default site
21
-
22
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Run `drush cache:rebuild` via SSH. Clears all Drupal caches. Requires drushSsh config and write access."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_cache_rebuild
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_cache_rebuild` MCP tool.
8
-
9
- Run `drush cache:rebuild` via SSH. Clears all Drupal caches. Requires drushSsh config and write access.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Export active configuration to the sync directory. Requires write access."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_config_export
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_config_export` MCP tool.
8
-
9
- Export active configuration to the sync directory. Requires write access.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Import configuration from the sync directory into the database. Requires write access. Confirm with user before running on production."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_config_import
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_config_import` MCP tool.
8
-
9
- Import configuration from the sync directory into the database. Requires write access. Confirm with user before running on production.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Check if active config is in sync with the sync directory. Returns out-of-sync items if any."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_config_status
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_config_status` MCP tool.
8
-
9
- Check if active config is in sync with the sync directory. Returns out-of-sync items if any.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Run Drupal cron via `drush cron`."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_cron
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_cron` MCP tool.
8
-
9
- Run Drupal cron via `drush cron`.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,21 +0,0 @@
1
- ---
2
- description: "Uninstall a Drupal module. Irreversible for module-stored data. Confirm with user."
3
- argument-hint: "<moduleName> [site]"
4
- allowed-tools: mcp__drupal__drupal_drush_module_disable
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_module_disable` MCP tool.
8
-
9
- Uninstall a Drupal module. Irreversible for module-stored data. Confirm with user.
10
-
11
- > ⚠ **Destructive** — this permanently changes or deletes data. Confirm with the user before calling.
12
-
13
- Parse the request in `$ARGUMENTS` into this tool's parameters:
14
-
15
- **Required:**
16
- - `moduleName` (string)
17
-
18
- **Optional:**
19
- - `site` (string): omit for the default site
20
-
21
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,19 +0,0 @@
1
- ---
2
- description: "Enable a Drupal module. Module name validated as machine name. Requires write access."
3
- argument-hint: "<moduleName> [site]"
4
- allowed-tools: mcp__drupal__drupal_drush_module_enable
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_module_enable` MCP tool.
8
-
9
- Enable a Drupal module. Module name validated as machine name. Requires write access.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `moduleName` (string)
15
-
16
- **Optional:**
17
- - `site` (string): omit for the default site
18
-
19
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,17 +0,0 @@
1
- ---
2
- description: "List Drupal modules. Filter by enabled or disabled status."
3
- argument-hint: "[site] [status]"
4
- allowed-tools: mcp__drupal__drupal_drush_module_list
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_module_list` MCP tool.
8
-
9
- List Drupal modules. Filter by enabled or disabled status.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `status` (string)
16
-
17
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "List modules with known security advisories via `drush pm:security`."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_security_updates
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_security_updates` MCP tool.
8
-
9
- List modules with known security advisories via `drush pm:security`.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Get Drupal site status via `drush status` — version, DB, file paths, active config."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_status
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_status` MCP tool.
8
-
9
- Get Drupal site status via `drush status` — version, DB, file paths, active config.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Run pending database updates via `drush updatedb`. Always run after deploying module updates."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_drush_updatedb
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_updatedb` MCP tool.
8
-
9
- Run pending database updates via `drush updatedb`. Always run after deploying module updates.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,22 +0,0 @@
1
- ---
2
- description: "Create a Drupal user and optionally assign roles. Requires write access."
3
- argument-hint: "<name> <mail> <password> [site] [roles]"
4
- allowed-tools: mcp__drupal__drupal_drush_user_create
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_user_create` MCP tool.
8
-
9
- Create a Drupal user and optionally assign roles. Requires write access.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `name` (string)
15
- - `mail` (string)
16
- - `password` (string)
17
-
18
- **Optional:**
19
- - `site` (string): omit for the default site
20
- - `roles` (array (pass as JSON))
21
-
22
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,19 +0,0 @@
1
- ---
2
- description: "List Drupal users via Drush. Filter by active/blocked status or role."
3
- argument-hint: "[site] [status] [role] [limit]"
4
- allowed-tools: mcp__drupal__drupal_drush_user_list
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_user_list` MCP tool.
8
-
9
- List Drupal users via Drush. Filter by active/blocked status or role.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `status` (string)
16
- - `role` (string)
17
- - `limit` (number)
18
-
19
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,19 +0,0 @@
1
- ---
2
- description: "Fetch recent Drupal watchdog/dblog entries. Filter by type or severity level."
3
- argument-hint: "[site] [type] [severity] [limit]"
4
- allowed-tools: mcp__drupal__drupal_drush_watchdog
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_drush_watchdog` MCP tool.
8
-
9
- Fetch recent Drupal watchdog/dblog entries. Filter by type or severity level.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string)
16
- - `severity` (string)
17
- - `limit` (number)
18
-
19
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,24 +0,0 @@
1
- ---
2
- description: "Delete an entity of any Drupal entity type. Requires allowDestructive = true in security config. Confirm with the user before calling."
3
- argument-hint: "<entityType> <bundle> <id> [site] [dryRun]"
4
- allowed-tools: mcp__drupal__drupal_entity_delete
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_entity_delete` MCP tool.
8
-
9
- Delete an entity of any Drupal entity type. Requires allowDestructive = true in security config. Confirm with the user before calling.
10
-
11
- > ⚠ **Destructive** — this permanently changes or deletes data. Confirm with the user before calling.
12
-
13
- Parse the request in `$ARGUMENTS` into this tool's parameters:
14
-
15
- **Required:**
16
- - `entityType` (string)
17
- - `bundle` (string)
18
- - `id` (string)
19
-
20
- **Optional:**
21
- - `site` (string): omit for the default site
22
- - `dryRun` (boolean (true/false)): Validate and return a preview of the delete without committing.
23
-
24
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,22 +0,0 @@
1
- ---
2
- description: "Fetch a single entity of any Drupal entity type by UUID."
3
- argument-hint: "<entityType> <bundle> <id> [site] [include]"
4
- allowed-tools: mcp__drupal__drupal_entity_get
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_entity_get` MCP tool.
8
-
9
- Fetch a single entity of any Drupal entity type by UUID.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `entityType` (string)
15
- - `bundle` (string)
16
- - `id` (string): Entity UUID
17
-
18
- **Optional:**
19
- - `site` (string): omit for the default site
20
- - `include` (array (pass as JSON)): Relationship field names to sideload
21
-
22
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,18 +0,0 @@
1
- ---
2
- description: "Find media entities not referenced by any content. Useful for storage cleanup audits."
3
- argument-hint: "[site] [type] [limit]"
4
- allowed-tools: mcp__drupal__drupal_find_orphaned_media
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_find_orphaned_media` MCP tool.
8
-
9
- Find media entities not referenced by any content. Useful for storage cleanup audits.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `type` (string): Media type to check (default: image)
16
- - `limit` (number)
17
-
18
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,20 +0,0 @@
1
- ---
2
- description: "Inspect the fields and relationships available on any Drupal entity type + bundle. Run this before creating or updating entities to know what fields are available."
3
- argument-hint: "<entityType> <bundle> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_entity_schema
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_get_entity_schema` MCP tool.
8
-
9
- Inspect the fields and relationships available on any Drupal entity type + bundle. Run this before creating or updating entities to know what fields are available.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `entityType` (string): e.g. 'node', 'paragraph', 'commerce_product', 'block_content'
15
- - `bundle` (string): e.g. 'article', 'text', 'default'
16
-
17
- **Optional:**
18
- - `site` (string): omit for the default site
19
-
20
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,20 +0,0 @@
1
- ---
2
- description: "Fetch a single media entity by UUID and media type."
3
- argument-hint: "<type> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_media
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_get_media` MCP tool.
8
-
9
- Fetch a single media entity by UUID and media type.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `type` (string)
15
- - `id` (string): Media entity UUID
16
-
17
- **Optional:**
18
- - `site` (string): omit for the default site
19
-
20
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,20 +0,0 @@
1
- ---
2
- description: "Fetch a single Drupal content node by UUID and content type. Returns title, body, status, path alias, and all attributes."
3
- argument-hint: "<type> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_node
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_get_node` MCP tool.
8
-
9
- Fetch a single Drupal content node by UUID and content type. Returns title, body, status, path alias, and all attributes.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `type` (string): Content type machine name, e.g. 'article'
15
- - `id` (string): Node UUID
16
-
17
- **Optional:**
18
- - `site` (string): Named site (omit for default)
19
-
20
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,20 +0,0 @@
1
- ---
2
- description: "Fetch a single taxonomy term by UUID."
3
- argument-hint: "<vocabulary> <id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_taxonomy_term
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_get_taxonomy_term` MCP tool.
8
-
9
- Fetch a single taxonomy term by UUID.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `vocabulary` (string)
15
- - `id` (string): Term UUID
16
-
17
- **Optional:**
18
- - `site` (string): omit for the default site
19
-
20
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,21 +0,0 @@
1
- ---
2
- description: "List all terms in a taxonomy vocabulary, sorted by name."
3
- argument-hint: "<vocabulary> [site] [limit] [offset]"
4
- allowed-tools: mcp__drupal__drupal_get_taxonomy_terms
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_get_taxonomy_terms` MCP tool.
8
-
9
- List all terms in a taxonomy vocabulary, sorted by name.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `vocabulary` (string): Vocabulary machine name, e.g. 'tags'
15
-
16
- **Optional:**
17
- - `site` (string): omit for the default site
18
- - `limit` (number)
19
- - `offset` (number)
20
-
21
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,19 +0,0 @@
1
- ---
2
- description: "Look up a Drupal user by their exact username."
3
- argument-hint: "<name> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_user_by_name
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_get_user_by_name` MCP tool.
8
-
9
- Look up a Drupal user by their exact username.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `name` (string): Drupal username (exact match)
15
-
16
- **Optional:**
17
- - `site` (string): omit for the default site
18
-
19
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,19 +0,0 @@
1
- ---
2
- description: "Fetch a single Drupal user account by UUID, including their assigned roles."
3
- argument-hint: "<id> [site]"
4
- allowed-tools: mcp__drupal__drupal_get_user
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_get_user` MCP tool.
8
-
9
- Fetch a single Drupal user account by UUID, including their assigned roles.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Required:**
14
- - `id` (string): User UUID
15
-
16
- **Optional:**
17
- - `site` (string): omit for the default site
18
-
19
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,17 +0,0 @@
1
- ---
2
- description: "Introspect the Drupal GraphQL schema. Omit typeName for a full schema overview; provide typeName to get detailed fields and args for a specific type. Requires security.allowGraphql (off outside the development preset by default)."
3
- argument-hint: "[site] [typeName]"
4
- allowed-tools: mcp__drupal__drupal_graphql_introspect
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_graphql_introspect` MCP tool.
8
-
9
- Introspect the Drupal GraphQL schema. Omit typeName for a full schema overview; provide typeName to get detailed fields and args for a specific type. Requires security.allowGraphql (off outside the development preset by default).
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
- - `typeName` (string): Name of a specific GraphQL type to inspect in detail (optional)
16
-
17
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.
@@ -1,16 +0,0 @@
1
- ---
2
- description: "List all content types defined on this Drupal site with their machine names and descriptions."
3
- argument-hint: "[site]"
4
- allowed-tools: mcp__drupal__drupal_list_content_types
5
- ---
6
-
7
- Call the `mcp__drupal__drupal_list_content_types` MCP tool.
8
-
9
- List all content types defined on this Drupal site with their machine names and descriptions.
10
-
11
- Parse the request in `$ARGUMENTS` into this tool's parameters:
12
-
13
- **Optional:**
14
- - `site` (string): omit for the default site
15
-
16
- If a required parameter is missing from `$ARGUMENTS`, ask before calling — do not invent values. Coerce each value to its JSON type (booleans → true/false, numbers → numeric, object/array → parse JSON), then make the single tool call and summarize the result.