aidevops 2.52.1

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 (329) hide show
  1. package/.agent/AGENTS.md +614 -0
  2. package/.agent/accounts.md +65 -0
  3. package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
  4. package/.agent/aidevops/api-integrations.md +335 -0
  5. package/.agent/aidevops/architecture.md +510 -0
  6. package/.agent/aidevops/configs.md +274 -0
  7. package/.agent/aidevops/docs.md +244 -0
  8. package/.agent/aidevops/extension.md +311 -0
  9. package/.agent/aidevops/mcp-integrations.md +340 -0
  10. package/.agent/aidevops/mcp-troubleshooting.md +162 -0
  11. package/.agent/aidevops/memory-patterns.md +172 -0
  12. package/.agent/aidevops/providers.md +217 -0
  13. package/.agent/aidevops/recommendations.md +321 -0
  14. package/.agent/aidevops/requirements.md +301 -0
  15. package/.agent/aidevops/resources.md +214 -0
  16. package/.agent/aidevops/security-requirements.md +174 -0
  17. package/.agent/aidevops/security.md +350 -0
  18. package/.agent/aidevops/service-links.md +400 -0
  19. package/.agent/aidevops/services.md +357 -0
  20. package/.agent/aidevops/setup.md +153 -0
  21. package/.agent/aidevops/troubleshooting.md +389 -0
  22. package/.agent/aidevops.md +124 -0
  23. package/.agent/build-plus.md +244 -0
  24. package/.agent/content/guidelines.md +109 -0
  25. package/.agent/content.md +87 -0
  26. package/.agent/health.md +59 -0
  27. package/.agent/legal.md +59 -0
  28. package/.agent/loop-state/full-loop.local.md +16 -0
  29. package/.agent/loop-state/ralph-loop.local.md +10 -0
  30. package/.agent/marketing.md +440 -0
  31. package/.agent/memory/README.md +260 -0
  32. package/.agent/onboarding.md +796 -0
  33. package/.agent/plan-plus.md +245 -0
  34. package/.agent/research.md +100 -0
  35. package/.agent/sales.md +333 -0
  36. package/.agent/scripts/101domains-helper.sh +701 -0
  37. package/.agent/scripts/add-missing-returns.sh +140 -0
  38. package/.agent/scripts/agent-browser-helper.sh +311 -0
  39. package/.agent/scripts/agno-setup.sh +712 -0
  40. package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
  41. package/.agent/scripts/aidevops-update-check.sh +71 -0
  42. package/.agent/scripts/ampcode-cli.sh +522 -0
  43. package/.agent/scripts/auto-version-bump.sh +156 -0
  44. package/.agent/scripts/autogen-helper.sh +512 -0
  45. package/.agent/scripts/beads-sync-helper.sh +596 -0
  46. package/.agent/scripts/closte-helper.sh +5 -0
  47. package/.agent/scripts/cloudron-helper.sh +321 -0
  48. package/.agent/scripts/codacy-cli-chunked.sh +581 -0
  49. package/.agent/scripts/codacy-cli.sh +442 -0
  50. package/.agent/scripts/code-audit-helper.sh +5 -0
  51. package/.agent/scripts/coderabbit-cli.sh +417 -0
  52. package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
  53. package/.agent/scripts/commands/code-simplifier.md +86 -0
  54. package/.agent/scripts/commands/full-loop.md +246 -0
  55. package/.agent/scripts/commands/postflight-loop.md +103 -0
  56. package/.agent/scripts/commands/recall.md +182 -0
  57. package/.agent/scripts/commands/remember.md +132 -0
  58. package/.agent/scripts/commands/save-todo.md +175 -0
  59. package/.agent/scripts/commands/session-review.md +154 -0
  60. package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
  61. package/.agent/scripts/context-builder-helper.sh +522 -0
  62. package/.agent/scripts/coolify-cli-helper.sh +674 -0
  63. package/.agent/scripts/coolify-helper.sh +380 -0
  64. package/.agent/scripts/crawl4ai-examples.sh +401 -0
  65. package/.agent/scripts/crawl4ai-helper.sh +1078 -0
  66. package/.agent/scripts/crewai-helper.sh +681 -0
  67. package/.agent/scripts/dev-browser-helper.sh +513 -0
  68. package/.agent/scripts/dns-helper.sh +396 -0
  69. package/.agent/scripts/domain-research-helper.sh +917 -0
  70. package/.agent/scripts/dspy-helper.sh +285 -0
  71. package/.agent/scripts/dspyground-helper.sh +291 -0
  72. package/.agent/scripts/eeat-score-helper.sh +1242 -0
  73. package/.agent/scripts/efficient-return-fix.sh +92 -0
  74. package/.agent/scripts/extract-opencode-prompts.sh +128 -0
  75. package/.agent/scripts/find-missing-returns.sh +113 -0
  76. package/.agent/scripts/fix-auth-headers.sh +104 -0
  77. package/.agent/scripts/fix-common-strings.sh +254 -0
  78. package/.agent/scripts/fix-content-type.sh +100 -0
  79. package/.agent/scripts/fix-error-messages.sh +130 -0
  80. package/.agent/scripts/fix-misplaced-returns.sh +74 -0
  81. package/.agent/scripts/fix-remaining-literals.sh +152 -0
  82. package/.agent/scripts/fix-return-statements.sh +41 -0
  83. package/.agent/scripts/fix-s131-default-cases.sh +249 -0
  84. package/.agent/scripts/fix-sc2155-simple.sh +102 -0
  85. package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
  86. package/.agent/scripts/fix-string-literals.sh +273 -0
  87. package/.agent/scripts/full-loop-helper.sh +773 -0
  88. package/.agent/scripts/generate-opencode-agents.sh +497 -0
  89. package/.agent/scripts/generate-opencode-commands.sh +1629 -0
  90. package/.agent/scripts/generate-skills.sh +366 -0
  91. package/.agent/scripts/git-platforms-helper.sh +640 -0
  92. package/.agent/scripts/gitea-cli-helper.sh +743 -0
  93. package/.agent/scripts/github-cli-helper.sh +702 -0
  94. package/.agent/scripts/gitlab-cli-helper.sh +682 -0
  95. package/.agent/scripts/gsc-add-user-helper.sh +325 -0
  96. package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
  97. package/.agent/scripts/hetzner-helper.sh +485 -0
  98. package/.agent/scripts/hostinger-helper.sh +229 -0
  99. package/.agent/scripts/keyword-research-helper.sh +1815 -0
  100. package/.agent/scripts/langflow-helper.sh +544 -0
  101. package/.agent/scripts/linkedin-automation.py +241 -0
  102. package/.agent/scripts/linter-manager.sh +599 -0
  103. package/.agent/scripts/linters-local.sh +434 -0
  104. package/.agent/scripts/list-keys-helper.sh +488 -0
  105. package/.agent/scripts/local-browser-automation.py +339 -0
  106. package/.agent/scripts/localhost-helper.sh +744 -0
  107. package/.agent/scripts/loop-common.sh +806 -0
  108. package/.agent/scripts/mainwp-helper.sh +728 -0
  109. package/.agent/scripts/markdown-formatter.sh +338 -0
  110. package/.agent/scripts/markdown-lint-fix.sh +311 -0
  111. package/.agent/scripts/mass-fix-returns.sh +58 -0
  112. package/.agent/scripts/mcp-diagnose.sh +167 -0
  113. package/.agent/scripts/mcp-inspector-helper.sh +449 -0
  114. package/.agent/scripts/memory-helper.sh +650 -0
  115. package/.agent/scripts/monitor-code-review.sh +255 -0
  116. package/.agent/scripts/onboarding-helper.sh +706 -0
  117. package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
  118. package/.agent/scripts/opencode-test-helper.sh +213 -0
  119. package/.agent/scripts/pagespeed-helper.sh +464 -0
  120. package/.agent/scripts/pandoc-helper.sh +362 -0
  121. package/.agent/scripts/postflight-check.sh +555 -0
  122. package/.agent/scripts/pre-commit-hook.sh +259 -0
  123. package/.agent/scripts/pre-edit-check.sh +169 -0
  124. package/.agent/scripts/qlty-cli.sh +356 -0
  125. package/.agent/scripts/quality-cli-manager.sh +525 -0
  126. package/.agent/scripts/quality-feedback-helper.sh +462 -0
  127. package/.agent/scripts/quality-fix.sh +263 -0
  128. package/.agent/scripts/quality-loop-helper.sh +1108 -0
  129. package/.agent/scripts/ralph-loop-helper.sh +836 -0
  130. package/.agent/scripts/ralph-upstream-check.sh +341 -0
  131. package/.agent/scripts/secretlint-helper.sh +847 -0
  132. package/.agent/scripts/servers-helper.sh +241 -0
  133. package/.agent/scripts/ses-helper.sh +619 -0
  134. package/.agent/scripts/session-review-helper.sh +404 -0
  135. package/.agent/scripts/setup-linters-wizard.sh +379 -0
  136. package/.agent/scripts/setup-local-api-keys.sh +330 -0
  137. package/.agent/scripts/setup-mcp-integrations.sh +472 -0
  138. package/.agent/scripts/shared-constants.sh +246 -0
  139. package/.agent/scripts/site-crawler-helper.sh +1487 -0
  140. package/.agent/scripts/snyk-helper.sh +940 -0
  141. package/.agent/scripts/sonarcloud-autofix.sh +193 -0
  142. package/.agent/scripts/sonarcloud-cli.sh +191 -0
  143. package/.agent/scripts/sonarscanner-cli.sh +455 -0
  144. package/.agent/scripts/spaceship-helper.sh +747 -0
  145. package/.agent/scripts/stagehand-helper.sh +321 -0
  146. package/.agent/scripts/stagehand-python-helper.sh +321 -0
  147. package/.agent/scripts/stagehand-python-setup.sh +441 -0
  148. package/.agent/scripts/stagehand-setup.sh +439 -0
  149. package/.agent/scripts/system-cleanup.sh +340 -0
  150. package/.agent/scripts/terminal-title-helper.sh +388 -0
  151. package/.agent/scripts/terminal-title-setup.sh +549 -0
  152. package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
  153. package/.agent/scripts/test-stagehand-integration.sh +309 -0
  154. package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
  155. package/.agent/scripts/todo-ready.sh +263 -0
  156. package/.agent/scripts/tool-version-check.sh +362 -0
  157. package/.agent/scripts/toon-helper.sh +469 -0
  158. package/.agent/scripts/twilio-helper.sh +917 -0
  159. package/.agent/scripts/updown-helper.sh +279 -0
  160. package/.agent/scripts/validate-mcp-integrations.sh +250 -0
  161. package/.agent/scripts/validate-version-consistency.sh +131 -0
  162. package/.agent/scripts/vaultwarden-helper.sh +597 -0
  163. package/.agent/scripts/vercel-cli-helper.sh +816 -0
  164. package/.agent/scripts/verify-mirrors.sh +169 -0
  165. package/.agent/scripts/version-manager.sh +831 -0
  166. package/.agent/scripts/webhosting-helper.sh +471 -0
  167. package/.agent/scripts/webhosting-verify.sh +238 -0
  168. package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
  169. package/.agent/scripts/worktree-helper.sh +595 -0
  170. package/.agent/scripts/worktree-sessions.sh +577 -0
  171. package/.agent/seo/dataforseo.md +215 -0
  172. package/.agent/seo/domain-research.md +532 -0
  173. package/.agent/seo/eeat-score.md +659 -0
  174. package/.agent/seo/google-search-console.md +366 -0
  175. package/.agent/seo/gsc-sitemaps.md +282 -0
  176. package/.agent/seo/keyword-research.md +521 -0
  177. package/.agent/seo/serper.md +278 -0
  178. package/.agent/seo/site-crawler.md +387 -0
  179. package/.agent/seo.md +236 -0
  180. package/.agent/services/accounting/quickfile.md +159 -0
  181. package/.agent/services/communications/telfon.md +470 -0
  182. package/.agent/services/communications/twilio.md +569 -0
  183. package/.agent/services/crm/fluentcrm.md +449 -0
  184. package/.agent/services/email/ses.md +399 -0
  185. package/.agent/services/hosting/101domains.md +378 -0
  186. package/.agent/services/hosting/closte.md +177 -0
  187. package/.agent/services/hosting/cloudflare.md +251 -0
  188. package/.agent/services/hosting/cloudron.md +478 -0
  189. package/.agent/services/hosting/dns-providers.md +335 -0
  190. package/.agent/services/hosting/domain-purchasing.md +344 -0
  191. package/.agent/services/hosting/hetzner.md +327 -0
  192. package/.agent/services/hosting/hostinger.md +287 -0
  193. package/.agent/services/hosting/localhost.md +419 -0
  194. package/.agent/services/hosting/spaceship.md +353 -0
  195. package/.agent/services/hosting/webhosting.md +330 -0
  196. package/.agent/social-media.md +69 -0
  197. package/.agent/templates/plans-template.md +114 -0
  198. package/.agent/templates/prd-template.md +129 -0
  199. package/.agent/templates/tasks-template.md +108 -0
  200. package/.agent/templates/todo-template.md +89 -0
  201. package/.agent/tools/ai-assistants/agno.md +471 -0
  202. package/.agent/tools/ai-assistants/capsolver.md +326 -0
  203. package/.agent/tools/ai-assistants/configuration.md +221 -0
  204. package/.agent/tools/ai-assistants/overview.md +209 -0
  205. package/.agent/tools/ai-assistants/status.md +171 -0
  206. package/.agent/tools/ai-assistants/windsurf.md +193 -0
  207. package/.agent/tools/ai-orchestration/autogen.md +406 -0
  208. package/.agent/tools/ai-orchestration/crewai.md +445 -0
  209. package/.agent/tools/ai-orchestration/langflow.md +405 -0
  210. package/.agent/tools/ai-orchestration/openprose.md +487 -0
  211. package/.agent/tools/ai-orchestration/overview.md +362 -0
  212. package/.agent/tools/ai-orchestration/packaging.md +647 -0
  213. package/.agent/tools/browser/agent-browser.md +464 -0
  214. package/.agent/tools/browser/browser-automation.md +400 -0
  215. package/.agent/tools/browser/chrome-devtools.md +282 -0
  216. package/.agent/tools/browser/crawl4ai-integration.md +422 -0
  217. package/.agent/tools/browser/crawl4ai-resources.md +277 -0
  218. package/.agent/tools/browser/crawl4ai-usage.md +416 -0
  219. package/.agent/tools/browser/crawl4ai.md +585 -0
  220. package/.agent/tools/browser/dev-browser.md +341 -0
  221. package/.agent/tools/browser/pagespeed.md +260 -0
  222. package/.agent/tools/browser/playwright.md +266 -0
  223. package/.agent/tools/browser/playwriter.md +310 -0
  224. package/.agent/tools/browser/stagehand-examples.md +456 -0
  225. package/.agent/tools/browser/stagehand-python.md +483 -0
  226. package/.agent/tools/browser/stagehand.md +421 -0
  227. package/.agent/tools/build-agent/agent-review.md +224 -0
  228. package/.agent/tools/build-agent/build-agent.md +784 -0
  229. package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
  230. package/.agent/tools/build-mcp/api-wrapper.md +445 -0
  231. package/.agent/tools/build-mcp/build-mcp.md +240 -0
  232. package/.agent/tools/build-mcp/deployment.md +401 -0
  233. package/.agent/tools/build-mcp/server-patterns.md +632 -0
  234. package/.agent/tools/build-mcp/transports.md +366 -0
  235. package/.agent/tools/code-review/auditing.md +383 -0
  236. package/.agent/tools/code-review/automation.md +219 -0
  237. package/.agent/tools/code-review/best-practices.md +203 -0
  238. package/.agent/tools/code-review/codacy.md +151 -0
  239. package/.agent/tools/code-review/code-simplifier.md +174 -0
  240. package/.agent/tools/code-review/code-standards.md +309 -0
  241. package/.agent/tools/code-review/coderabbit.md +101 -0
  242. package/.agent/tools/code-review/management.md +155 -0
  243. package/.agent/tools/code-review/qlty.md +248 -0
  244. package/.agent/tools/code-review/secretlint.md +565 -0
  245. package/.agent/tools/code-review/setup.md +250 -0
  246. package/.agent/tools/code-review/snyk.md +563 -0
  247. package/.agent/tools/code-review/tools.md +230 -0
  248. package/.agent/tools/content/summarize.md +353 -0
  249. package/.agent/tools/context/augment-context-engine.md +468 -0
  250. package/.agent/tools/context/context-builder-agent.md +76 -0
  251. package/.agent/tools/context/context-builder.md +375 -0
  252. package/.agent/tools/context/context7.md +371 -0
  253. package/.agent/tools/context/dspy.md +302 -0
  254. package/.agent/tools/context/dspyground.md +374 -0
  255. package/.agent/tools/context/llm-tldr.md +219 -0
  256. package/.agent/tools/context/osgrep.md +488 -0
  257. package/.agent/tools/context/prompt-optimization.md +338 -0
  258. package/.agent/tools/context/toon.md +292 -0
  259. package/.agent/tools/conversion/pandoc.md +304 -0
  260. package/.agent/tools/credentials/api-key-management.md +154 -0
  261. package/.agent/tools/credentials/api-key-setup.md +224 -0
  262. package/.agent/tools/credentials/environment-variables.md +180 -0
  263. package/.agent/tools/credentials/vaultwarden.md +382 -0
  264. package/.agent/tools/data-extraction/outscraper.md +974 -0
  265. package/.agent/tools/deployment/coolify-cli.md +388 -0
  266. package/.agent/tools/deployment/coolify-setup.md +353 -0
  267. package/.agent/tools/deployment/coolify.md +345 -0
  268. package/.agent/tools/deployment/vercel.md +390 -0
  269. package/.agent/tools/git/authentication.md +132 -0
  270. package/.agent/tools/git/gitea-cli.md +193 -0
  271. package/.agent/tools/git/github-actions.md +207 -0
  272. package/.agent/tools/git/github-cli.md +223 -0
  273. package/.agent/tools/git/gitlab-cli.md +190 -0
  274. package/.agent/tools/git/opencode-github-security.md +350 -0
  275. package/.agent/tools/git/opencode-github.md +328 -0
  276. package/.agent/tools/git/opencode-gitlab.md +252 -0
  277. package/.agent/tools/git/security.md +196 -0
  278. package/.agent/tools/git.md +207 -0
  279. package/.agent/tools/opencode/oh-my-opencode.md +375 -0
  280. package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
  281. package/.agent/tools/opencode/opencode.md +651 -0
  282. package/.agent/tools/social-media/bird.md +437 -0
  283. package/.agent/tools/task-management/beads.md +336 -0
  284. package/.agent/tools/terminal/terminal-title.md +251 -0
  285. package/.agent/tools/ui/shadcn.md +196 -0
  286. package/.agent/tools/ui/ui-skills.md +115 -0
  287. package/.agent/tools/wordpress/localwp.md +311 -0
  288. package/.agent/tools/wordpress/mainwp.md +391 -0
  289. package/.agent/tools/wordpress/scf.md +527 -0
  290. package/.agent/tools/wordpress/wp-admin.md +729 -0
  291. package/.agent/tools/wordpress/wp-dev.md +940 -0
  292. package/.agent/tools/wordpress/wp-preferred.md +398 -0
  293. package/.agent/tools/wordpress.md +95 -0
  294. package/.agent/workflows/branch/bugfix.md +63 -0
  295. package/.agent/workflows/branch/chore.md +95 -0
  296. package/.agent/workflows/branch/experiment.md +115 -0
  297. package/.agent/workflows/branch/feature.md +59 -0
  298. package/.agent/workflows/branch/hotfix.md +98 -0
  299. package/.agent/workflows/branch/refactor.md +92 -0
  300. package/.agent/workflows/branch/release.md +96 -0
  301. package/.agent/workflows/branch.md +347 -0
  302. package/.agent/workflows/bug-fixing.md +267 -0
  303. package/.agent/workflows/changelog.md +129 -0
  304. package/.agent/workflows/code-audit-remote.md +279 -0
  305. package/.agent/workflows/conversation-starter.md +69 -0
  306. package/.agent/workflows/error-feedback.md +578 -0
  307. package/.agent/workflows/feature-development.md +355 -0
  308. package/.agent/workflows/git-workflow.md +702 -0
  309. package/.agent/workflows/multi-repo-workspace.md +268 -0
  310. package/.agent/workflows/plans.md +709 -0
  311. package/.agent/workflows/postflight.md +604 -0
  312. package/.agent/workflows/pr.md +571 -0
  313. package/.agent/workflows/preflight.md +278 -0
  314. package/.agent/workflows/ralph-loop.md +773 -0
  315. package/.agent/workflows/release.md +498 -0
  316. package/.agent/workflows/session-manager.md +254 -0
  317. package/.agent/workflows/session-review.md +311 -0
  318. package/.agent/workflows/sql-migrations.md +631 -0
  319. package/.agent/workflows/version-bump.md +283 -0
  320. package/.agent/workflows/wiki-update.md +333 -0
  321. package/.agent/workflows/worktree.md +477 -0
  322. package/LICENSE +21 -0
  323. package/README.md +1446 -0
  324. package/VERSION +1 -0
  325. package/aidevops.sh +1746 -0
  326. package/bin/aidevops +21 -0
  327. package/package.json +75 -0
  328. package/scripts/npm-postinstall.js +60 -0
  329. package/setup.sh +2366 -0
@@ -0,0 +1,508 @@
1
+ #!/bin/bash
2
+ # shellcheck disable=SC2034,SC2155,SC2317,SC2329,SC2016,SC2181,SC1091,SC2154,SC2015,SC2086,SC2129,SC2030,SC2031,SC2119,SC2120,SC2001,SC2162,SC2088,SC2089,SC2090,SC2029,SC2006,SC2153
3
+
4
+ # WordPress MCP Adapter Helper Script
5
+ # Manages WordPress MCP connections for AI assistants
6
+ # Supports both STDIO (local/SSH) and HTTP transports
7
+
8
+ # String literal constants
9
+ readonly ERROR_CONFIG_NOT_FOUND="Configuration file not found"
10
+ readonly ERROR_JQ_REQUIRED="jq is required but not installed"
11
+ readonly INFO_JQ_INSTALL_MACOS="Install with: brew install jq"
12
+ readonly INFO_JQ_INSTALL_UBUNTU="Install with: apt-get install jq"
13
+ readonly ERROR_CURL_REQUIRED="curl is required but not installed"
14
+ readonly ERROR_SITE_REQUIRED="Site name is required"
15
+ readonly ERROR_SITE_NOT_FOUND="Site not found in configuration"
16
+
17
+ # Colors for output
18
+ GREEN='\033[0;32m'
19
+ BLUE='\033[0;34m'
20
+ YELLOW='\033[1;33m'
21
+ RED='\033[0;31m'
22
+ CYAN='\033[0;36m'
23
+ NC='\033[0m' # No Color
24
+
25
+ print_info() {
26
+ local msg="$1"
27
+ echo -e "${BLUE}[INFO]${NC} $msg"
28
+ return 0
29
+ }
30
+
31
+ print_success() {
32
+ local msg="$1"
33
+ echo -e "${GREEN}[SUCCESS]${NC} $msg"
34
+ return 0
35
+ }
36
+
37
+ print_warning() {
38
+ local msg="$1"
39
+ echo -e "${YELLOW}[WARNING]${NC} $msg"
40
+ return 0
41
+ }
42
+
43
+ print_error() {
44
+ local msg="$1"
45
+ echo -e "${RED}[ERROR]${NC} $msg" >&2
46
+ return 0
47
+ }
48
+
49
+ # Configuration paths
50
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" || exit
51
+ CONFIG_FILE="${SCRIPT_DIR}/../configs/wordpress-sites-config.json"
52
+ MCP_ENV_FILE="${HOME}/.config/aidevops/mcp-env.sh"
53
+ LOCAL_SITES_PATH="${HOME}/Local Sites"
54
+
55
+ # Check dependencies
56
+ check_dependencies() {
57
+ if ! command -v jq &> /dev/null; then
58
+ print_error "$ERROR_JQ_REQUIRED"
59
+ echo "$INFO_JQ_INSTALL_MACOS"
60
+ echo "$INFO_JQ_INSTALL_UBUNTU"
61
+ return 1
62
+ fi
63
+ return 0
64
+ }
65
+
66
+ # Load MCP environment variables
67
+ load_mcp_env() {
68
+ if [[ -f "$MCP_ENV_FILE" ]]; then
69
+ # shellcheck source=/dev/null
70
+ source "$MCP_ENV_FILE"
71
+ fi
72
+ return 0
73
+ }
74
+
75
+ # Load configuration
76
+ load_config() {
77
+ if [[ ! -f "$CONFIG_FILE" ]]; then
78
+ print_warning "$ERROR_CONFIG_NOT_FOUND"
79
+ print_info "Using default configuration for LocalWP sites"
80
+ return 1
81
+ fi
82
+ return 0
83
+ }
84
+
85
+ # Get site configuration
86
+ get_site_config() {
87
+ local site_name="$1"
88
+
89
+ if [[ -z "$site_name" ]]; then
90
+ print_error "$ERROR_SITE_REQUIRED"
91
+ return 1
92
+ fi
93
+
94
+ if [[ -f "$CONFIG_FILE" ]]; then
95
+ local site_config
96
+ site_config=$(jq -r ".sites.\"$site_name\"" "$CONFIG_FILE" 2>/dev/null)
97
+ if [[ "$site_config" != "null" && -n "$site_config" ]]; then
98
+ echo "$site_config"
99
+ return 0
100
+ fi
101
+ fi
102
+
103
+ print_error "$ERROR_SITE_NOT_FOUND: $site_name"
104
+ return 1
105
+ }
106
+
107
+ # List all configured sites
108
+ list_sites() {
109
+ print_info "Configured WordPress Sites:"
110
+ echo ""
111
+
112
+ # List from config file if exists
113
+ if [[ -f "$CONFIG_FILE" ]]; then
114
+ echo -e "${CYAN}From configuration:${NC}"
115
+ jq -r '.sites | to_entries[] | " \(.key): \(.value.type // "unknown") - \(.value.url // "no url")"' "$CONFIG_FILE" 2>/dev/null || echo " No sites configured"
116
+ echo ""
117
+ fi
118
+
119
+ # List LocalWP sites
120
+ if [[ -d "$LOCAL_SITES_PATH" ]]; then
121
+ echo -e "${CYAN}LocalWP Sites (auto-detected):${NC}"
122
+ for site_dir in "$LOCAL_SITES_PATH"/*/; do
123
+ if [[ -d "${site_dir}app/public" ]]; then
124
+ local site_name
125
+ site_name=$(basename "$site_dir")
126
+ local wp_path="${site_dir}app/public"
127
+ echo " $site_name: local - $wp_path"
128
+ fi
129
+ done
130
+ echo ""
131
+ fi
132
+
133
+ return 0
134
+ }
135
+
136
+ # Get WP-CLI path for a site
137
+ get_wp_cli_path() {
138
+ local site_name="$1"
139
+ local site_type="${2:-local}"
140
+
141
+ case "$site_type" in
142
+ "local"|"localwp")
143
+ # LocalWP site
144
+ local site_path="$LOCAL_SITES_PATH/$site_name/app/public"
145
+ if [[ -d "$site_path" ]]; then
146
+ echo "$site_path"
147
+ return 0
148
+ fi
149
+ ;;
150
+ "wp-env")
151
+ # wp-env managed site
152
+ echo "."
153
+ return 0
154
+ ;;
155
+ *)
156
+ # Remote or custom path
157
+ if [[ -f "$CONFIG_FILE" ]]; then
158
+ local path
159
+ path=$(jq -r ".sites.\"$site_name\".path // empty" "$CONFIG_FILE" 2>/dev/null)
160
+ if [[ -n "$path" ]]; then
161
+ echo "$path"
162
+ return 0
163
+ fi
164
+ fi
165
+ ;;
166
+ esac
167
+
168
+ print_error "Could not determine WP path for site: $site_name"
169
+ return 1
170
+ }
171
+
172
+ # Generate STDIO MCP configuration for a site
173
+ generate_stdio_config() {
174
+ local site_name="$1"
175
+ local wp_path="$2"
176
+ local user="${3:-admin}"
177
+ local server="${4:-mcp-adapter-default-server}"
178
+
179
+ cat << EOF
180
+ {
181
+ "mcpServers": {
182
+ "wordpress-$site_name": {
183
+ "command": "wp",
184
+ "args": [
185
+ "--path=$wp_path",
186
+ "mcp-adapter",
187
+ "serve",
188
+ "--server=$server",
189
+ "--user=$user"
190
+ ]
191
+ }
192
+ }
193
+ }
194
+ EOF
195
+ return 0
196
+ }
197
+
198
+ # Generate HTTP MCP configuration for a site
199
+ generate_http_config() {
200
+ local site_name="$1"
201
+ local api_url="$2"
202
+ local username="$3"
203
+ local app_password="$4"
204
+ local server="${5:-mcp-adapter-default-server}"
205
+
206
+ cat << EOF
207
+ {
208
+ "mcpServers": {
209
+ "wordpress-$site_name": {
210
+ "command": "npx",
211
+ "args": [
212
+ "-y",
213
+ "@automattic/mcp-wordpress-remote@latest"
214
+ ],
215
+ "env": {
216
+ "WP_API_URL": "$api_url/wp-json/mcp/$server",
217
+ "LOG_FILE": "$HOME/.agent/tmp/mcp-$site_name.log",
218
+ "WP_API_USERNAME": "$username",
219
+ "WP_API_PASSWORD": "$app_password"
220
+ }
221
+ }
222
+ }
223
+ }
224
+ EOF
225
+ return 0
226
+ }
227
+
228
+ # Generate SSH MCP configuration for remote site
229
+ generate_ssh_config() {
230
+ local site_name="$1"
231
+ local ssh_host="$2"
232
+ local wp_path="$3"
233
+ local user="${4:-admin}"
234
+ local server="${5:-mcp-adapter-default-server}"
235
+ local ssh_user="${6:-}"
236
+ local ssh_password_file="${7:-}"
237
+
238
+ # Check if sshpass is needed
239
+ local ssh_command="ssh"
240
+ if [[ -n "$ssh_password_file" && -f "$ssh_password_file" ]]; then
241
+ ssh_command="sshpass -f $ssh_password_file ssh"
242
+ fi
243
+
244
+ if [[ -n "$ssh_user" ]]; then
245
+ ssh_host="${ssh_user}@${ssh_host}"
246
+ fi
247
+
248
+ cat << EOF
249
+ {
250
+ "mcpServers": {
251
+ "wordpress-$site_name": {
252
+ "command": "$ssh_command",
253
+ "args": [
254
+ "$ssh_host",
255
+ "cd $wp_path && wp mcp-adapter serve --server=$server --user=$user" || exit
256
+ ]
257
+ }
258
+ }
259
+ }
260
+ EOF
261
+ return 0
262
+ }
263
+
264
+ # Test MCP connection (STDIO)
265
+ test_stdio_connection() {
266
+ local site_name="$1"
267
+ local wp_path="$2"
268
+ local user="${3:-admin}"
269
+ local server="${4:-mcp-adapter-default-server}"
270
+
271
+ print_info "Testing STDIO MCP connection for $site_name..."
272
+
273
+ # Check if WP-CLI is available
274
+ if ! command -v wp &> /dev/null; then
275
+ print_error "WP-CLI not found. Install from: https://wp-cli.org/"
276
+ return 1
277
+ fi
278
+
279
+ # Check if path exists
280
+ if [[ ! -d "$wp_path" ]]; then
281
+ print_error "WordPress path not found: $wp_path"
282
+ return 1
283
+ fi
284
+
285
+ # Check if MCP adapter is available
286
+ local adapter_check
287
+ adapter_check=$(wp --path="$wp_path" mcp-adapter list 2>&1)
288
+
289
+ if echo "$adapter_check" | grep -q "Error\|not found\|is not a registered"; then
290
+ print_warning "MCP Adapter plugin may not be installed/activated"
291
+ print_info "Install with: composer require wordpress/abilities-api wordpress/mcp-adapter"
292
+ return 1
293
+ fi
294
+
295
+ print_success "MCP Adapter available"
296
+ echo "$adapter_check"
297
+
298
+ # Test tools list
299
+ print_info "Testing tools/list..."
300
+ local tools_test
301
+ tools_test=$(echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | wp --path="$wp_path" mcp-adapter serve --user="$user" --server="$server" 2>&1)
302
+
303
+ if echo "$tools_test" | grep -q '"tools"'; then
304
+ print_success "MCP connection successful!"
305
+ echo "$tools_test" | jq -r '.result.tools[] | " - \(.name): \(.description // "no description")"' 2>/dev/null | head -10
306
+ else
307
+ print_warning "Tools list test returned unexpected response"
308
+ echo "$tools_test" | head -5
309
+ fi
310
+
311
+ return 0
312
+ }
313
+
314
+ # Test HTTP connection
315
+ test_http_connection() {
316
+ local api_url="$1"
317
+ local username="$2"
318
+ local app_password="$3"
319
+ local server="${4:-mcp-adapter-default-server}"
320
+
321
+ print_info "Testing HTTP MCP connection..."
322
+
323
+ if ! command -v curl &> /dev/null; then
324
+ print_error "$ERROR_CURL_REQUIRED"
325
+ return 1
326
+ fi
327
+
328
+ local endpoint="$api_url/wp-json/mcp/$server"
329
+
330
+ # Test endpoint accessibility
331
+ local response
332
+ response=$(curl -s -o /dev/null -w "%{http_code}" \
333
+ -u "$username:$app_password" \
334
+ "$endpoint" 2>&1)
335
+
336
+ if [[ "$response" == "200" || "$response" == "401" ]]; then
337
+ print_success "Endpoint reachable: $endpoint (HTTP $response)"
338
+ else
339
+ print_error "Endpoint not reachable: $endpoint (HTTP $response)"
340
+ return 1
341
+ fi
342
+
343
+ return 0
344
+ }
345
+
346
+ # List available MCP servers on a site
347
+ list_mcp_servers() {
348
+ local site_name="$1"
349
+ local wp_path="$2"
350
+
351
+ print_info "Available MCP servers on $site_name:"
352
+
353
+ if [[ -z "$wp_path" ]]; then
354
+ wp_path=$(get_wp_cli_path "$site_name" "local")
355
+ fi
356
+
357
+ if [[ -z "$wp_path" || ! -d "$wp_path" ]]; then
358
+ print_error "Could not determine WordPress path"
359
+ return 1
360
+ fi
361
+
362
+ wp --path="$wp_path" mcp-adapter list 2>&1
363
+ return 0
364
+ }
365
+
366
+ # Discover abilities on a site
367
+ discover_abilities() {
368
+ local site_name="$1"
369
+ local wp_path="$2"
370
+ local user="${3:-admin}"
371
+ local server="${4:-mcp-adapter-default-server}"
372
+
373
+ print_info "Discovering WordPress abilities on $site_name..."
374
+
375
+ if [[ -z "$wp_path" ]]; then
376
+ wp_path=$(get_wp_cli_path "$site_name" "local")
377
+ fi
378
+
379
+ if [[ -z "$wp_path" || ! -d "$wp_path" ]]; then
380
+ print_error "Could not determine WordPress path"
381
+ return 1
382
+ fi
383
+
384
+ local response
385
+ response=$(echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mcp-adapter-discover-abilities","arguments":{}}}' | \
386
+ wp --path="$wp_path" mcp-adapter serve --user="$user" --server="$server" 2>&1)
387
+
388
+ echo "$response" | jq -r '.result.content[0].text // .result // .' 2>/dev/null || echo "$response"
389
+ return 0
390
+ }
391
+
392
+ # Show help
393
+ show_help() {
394
+ cat << 'EOF'
395
+ WordPress MCP Adapter Helper Script
396
+ ====================================
397
+
398
+ Usage: wordpress-mcp-helper.sh <command> [options]
399
+
400
+ Commands:
401
+ sites List all configured WordPress sites
402
+ servers <site> List MCP servers available on a site
403
+ test-stdio <site> [user] Test STDIO MCP connection
404
+ test-http <url> <user> <pass> Test HTTP MCP connection
405
+ discover <site> [user] Discover WordPress abilities via MCP
406
+
407
+ config-stdio <site> [user] Generate STDIO MCP config for Claude/OpenCode
408
+ config-http <site> <url> <user> <pass> Generate HTTP MCP config
409
+ config-ssh <site> <host> <path> [user] Generate SSH MCP config
410
+
411
+ help Show this help
412
+
413
+ Site Types:
414
+ local/localwp LocalWP sites in ~/Local Sites/
415
+ wp-env Docker-based wp-env development
416
+ remote Remote sites via SSH or HTTP
417
+
418
+ Examples:
419
+ # List all sites (LocalWP auto-detected)
420
+ ./wordpress-mcp-helper.sh sites
421
+
422
+ # Test LocalWP site connection
423
+ ./wordpress-mcp-helper.sh test-stdio mysite
424
+
425
+ # Generate config for Claude Desktop
426
+ ./wordpress-mcp-helper.sh config-stdio mysite admin
427
+
428
+ # Test remote site via HTTP
429
+ ./wordpress-mcp-helper.sh test-http https://example.com admin "xxxx xxxx xxxx xxxx"
430
+
431
+ # Generate SSH config for Hostinger
432
+ ./wordpress-mcp-helper.sh config-ssh mysite ssh.example.com /home/user/public_html
433
+
434
+ Environment Variables:
435
+ LOCAL_SITES_PATH Path to LocalWP sites (default: ~/Local Sites)
436
+
437
+ Configuration:
438
+ Sites config: configs/wordpress-sites-config.json
439
+ MCP env: ~/.config/aidevops/mcp-env.sh
440
+
441
+ Prerequisites:
442
+ - WP-CLI installed (for STDIO transport)
443
+ - WordPress MCP Adapter plugin installed on target site
444
+ - WordPress Abilities API plugin installed on target site
445
+
446
+ Installation (on WordPress site):
447
+ composer require wordpress/abilities-api wordpress/mcp-adapter
448
+
449
+ EOF
450
+ return 0
451
+ }
452
+
453
+ # Main function
454
+ main() {
455
+ local command="${1:-help}"
456
+ local arg1="$2"
457
+ local arg2="$3"
458
+ local arg3="$4"
459
+ local arg4="$5"
460
+ # arg5 removed - unused
461
+
462
+ check_dependencies || exit 1
463
+ load_mcp_env
464
+ load_config
465
+
466
+ case "$command" in
467
+ "sites"|"list")
468
+ list_sites
469
+ ;;
470
+ "servers")
471
+ list_mcp_servers "$arg1" "$arg2"
472
+ ;;
473
+ "test-stdio"|"test")
474
+ local wp_path
475
+ wp_path=$(get_wp_cli_path "$arg1" "local")
476
+ test_stdio_connection "$arg1" "$wp_path" "${arg2:-admin}"
477
+ ;;
478
+ "test-http")
479
+ test_http_connection "$arg1" "$arg2" "$arg3" "${arg4:-mcp-adapter-default-server}"
480
+ ;;
481
+ "discover"|"abilities")
482
+ local wp_path
483
+ wp_path=$(get_wp_cli_path "$arg1" "local")
484
+ discover_abilities "$arg1" "$wp_path" "${arg2:-admin}"
485
+ ;;
486
+ "config-stdio"|"stdio-config")
487
+ local wp_path
488
+ wp_path=$(get_wp_cli_path "$arg1" "local")
489
+ if [[ -n "$wp_path" ]]; then
490
+ generate_stdio_config "$arg1" "$wp_path" "${arg2:-admin}"
491
+ fi
492
+ ;;
493
+ "config-http"|"http-config")
494
+ generate_http_config "$arg1" "$arg2" "$arg3" "$arg4"
495
+ ;;
496
+ "config-ssh"|"ssh-config")
497
+ generate_ssh_config "$arg1" "$arg2" "$arg3" "${arg4:-admin}"
498
+ ;;
499
+ "help"|"-h"|"--help"|*)
500
+ show_help
501
+ ;;
502
+ esac
503
+
504
+ return 0
505
+ }
506
+
507
+ # Run main function
508
+ main "$@"