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.
- package/.agent/AGENTS.md +614 -0
- package/.agent/accounts.md +65 -0
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
- package/.agent/aidevops/api-integrations.md +335 -0
- package/.agent/aidevops/architecture.md +510 -0
- package/.agent/aidevops/configs.md +274 -0
- package/.agent/aidevops/docs.md +244 -0
- package/.agent/aidevops/extension.md +311 -0
- package/.agent/aidevops/mcp-integrations.md +340 -0
- package/.agent/aidevops/mcp-troubleshooting.md +162 -0
- package/.agent/aidevops/memory-patterns.md +172 -0
- package/.agent/aidevops/providers.md +217 -0
- package/.agent/aidevops/recommendations.md +321 -0
- package/.agent/aidevops/requirements.md +301 -0
- package/.agent/aidevops/resources.md +214 -0
- package/.agent/aidevops/security-requirements.md +174 -0
- package/.agent/aidevops/security.md +350 -0
- package/.agent/aidevops/service-links.md +400 -0
- package/.agent/aidevops/services.md +357 -0
- package/.agent/aidevops/setup.md +153 -0
- package/.agent/aidevops/troubleshooting.md +389 -0
- package/.agent/aidevops.md +124 -0
- package/.agent/build-plus.md +244 -0
- package/.agent/content/guidelines.md +109 -0
- package/.agent/content.md +87 -0
- package/.agent/health.md +59 -0
- package/.agent/legal.md +59 -0
- package/.agent/loop-state/full-loop.local.md +16 -0
- package/.agent/loop-state/ralph-loop.local.md +10 -0
- package/.agent/marketing.md +440 -0
- package/.agent/memory/README.md +260 -0
- package/.agent/onboarding.md +796 -0
- package/.agent/plan-plus.md +245 -0
- package/.agent/research.md +100 -0
- package/.agent/sales.md +333 -0
- package/.agent/scripts/101domains-helper.sh +701 -0
- package/.agent/scripts/add-missing-returns.sh +140 -0
- package/.agent/scripts/agent-browser-helper.sh +311 -0
- package/.agent/scripts/agno-setup.sh +712 -0
- package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
- package/.agent/scripts/aidevops-update-check.sh +71 -0
- package/.agent/scripts/ampcode-cli.sh +522 -0
- package/.agent/scripts/auto-version-bump.sh +156 -0
- package/.agent/scripts/autogen-helper.sh +512 -0
- package/.agent/scripts/beads-sync-helper.sh +596 -0
- package/.agent/scripts/closte-helper.sh +5 -0
- package/.agent/scripts/cloudron-helper.sh +321 -0
- package/.agent/scripts/codacy-cli-chunked.sh +581 -0
- package/.agent/scripts/codacy-cli.sh +442 -0
- package/.agent/scripts/code-audit-helper.sh +5 -0
- package/.agent/scripts/coderabbit-cli.sh +417 -0
- package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
- package/.agent/scripts/commands/code-simplifier.md +86 -0
- package/.agent/scripts/commands/full-loop.md +246 -0
- package/.agent/scripts/commands/postflight-loop.md +103 -0
- package/.agent/scripts/commands/recall.md +182 -0
- package/.agent/scripts/commands/remember.md +132 -0
- package/.agent/scripts/commands/save-todo.md +175 -0
- package/.agent/scripts/commands/session-review.md +154 -0
- package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
- package/.agent/scripts/context-builder-helper.sh +522 -0
- package/.agent/scripts/coolify-cli-helper.sh +674 -0
- package/.agent/scripts/coolify-helper.sh +380 -0
- package/.agent/scripts/crawl4ai-examples.sh +401 -0
- package/.agent/scripts/crawl4ai-helper.sh +1078 -0
- package/.agent/scripts/crewai-helper.sh +681 -0
- package/.agent/scripts/dev-browser-helper.sh +513 -0
- package/.agent/scripts/dns-helper.sh +396 -0
- package/.agent/scripts/domain-research-helper.sh +917 -0
- package/.agent/scripts/dspy-helper.sh +285 -0
- package/.agent/scripts/dspyground-helper.sh +291 -0
- package/.agent/scripts/eeat-score-helper.sh +1242 -0
- package/.agent/scripts/efficient-return-fix.sh +92 -0
- package/.agent/scripts/extract-opencode-prompts.sh +128 -0
- package/.agent/scripts/find-missing-returns.sh +113 -0
- package/.agent/scripts/fix-auth-headers.sh +104 -0
- package/.agent/scripts/fix-common-strings.sh +254 -0
- package/.agent/scripts/fix-content-type.sh +100 -0
- package/.agent/scripts/fix-error-messages.sh +130 -0
- package/.agent/scripts/fix-misplaced-returns.sh +74 -0
- package/.agent/scripts/fix-remaining-literals.sh +152 -0
- package/.agent/scripts/fix-return-statements.sh +41 -0
- package/.agent/scripts/fix-s131-default-cases.sh +249 -0
- package/.agent/scripts/fix-sc2155-simple.sh +102 -0
- package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
- package/.agent/scripts/fix-string-literals.sh +273 -0
- package/.agent/scripts/full-loop-helper.sh +773 -0
- package/.agent/scripts/generate-opencode-agents.sh +497 -0
- package/.agent/scripts/generate-opencode-commands.sh +1629 -0
- package/.agent/scripts/generate-skills.sh +366 -0
- package/.agent/scripts/git-platforms-helper.sh +640 -0
- package/.agent/scripts/gitea-cli-helper.sh +743 -0
- package/.agent/scripts/github-cli-helper.sh +702 -0
- package/.agent/scripts/gitlab-cli-helper.sh +682 -0
- package/.agent/scripts/gsc-add-user-helper.sh +325 -0
- package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
- package/.agent/scripts/hetzner-helper.sh +485 -0
- package/.agent/scripts/hostinger-helper.sh +229 -0
- package/.agent/scripts/keyword-research-helper.sh +1815 -0
- package/.agent/scripts/langflow-helper.sh +544 -0
- package/.agent/scripts/linkedin-automation.py +241 -0
- package/.agent/scripts/linter-manager.sh +599 -0
- package/.agent/scripts/linters-local.sh +434 -0
- package/.agent/scripts/list-keys-helper.sh +488 -0
- package/.agent/scripts/local-browser-automation.py +339 -0
- package/.agent/scripts/localhost-helper.sh +744 -0
- package/.agent/scripts/loop-common.sh +806 -0
- package/.agent/scripts/mainwp-helper.sh +728 -0
- package/.agent/scripts/markdown-formatter.sh +338 -0
- package/.agent/scripts/markdown-lint-fix.sh +311 -0
- package/.agent/scripts/mass-fix-returns.sh +58 -0
- package/.agent/scripts/mcp-diagnose.sh +167 -0
- package/.agent/scripts/mcp-inspector-helper.sh +449 -0
- package/.agent/scripts/memory-helper.sh +650 -0
- package/.agent/scripts/monitor-code-review.sh +255 -0
- package/.agent/scripts/onboarding-helper.sh +706 -0
- package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
- package/.agent/scripts/opencode-test-helper.sh +213 -0
- package/.agent/scripts/pagespeed-helper.sh +464 -0
- package/.agent/scripts/pandoc-helper.sh +362 -0
- package/.agent/scripts/postflight-check.sh +555 -0
- package/.agent/scripts/pre-commit-hook.sh +259 -0
- package/.agent/scripts/pre-edit-check.sh +169 -0
- package/.agent/scripts/qlty-cli.sh +356 -0
- package/.agent/scripts/quality-cli-manager.sh +525 -0
- package/.agent/scripts/quality-feedback-helper.sh +462 -0
- package/.agent/scripts/quality-fix.sh +263 -0
- package/.agent/scripts/quality-loop-helper.sh +1108 -0
- package/.agent/scripts/ralph-loop-helper.sh +836 -0
- package/.agent/scripts/ralph-upstream-check.sh +341 -0
- package/.agent/scripts/secretlint-helper.sh +847 -0
- package/.agent/scripts/servers-helper.sh +241 -0
- package/.agent/scripts/ses-helper.sh +619 -0
- package/.agent/scripts/session-review-helper.sh +404 -0
- package/.agent/scripts/setup-linters-wizard.sh +379 -0
- package/.agent/scripts/setup-local-api-keys.sh +330 -0
- package/.agent/scripts/setup-mcp-integrations.sh +472 -0
- package/.agent/scripts/shared-constants.sh +246 -0
- package/.agent/scripts/site-crawler-helper.sh +1487 -0
- package/.agent/scripts/snyk-helper.sh +940 -0
- package/.agent/scripts/sonarcloud-autofix.sh +193 -0
- package/.agent/scripts/sonarcloud-cli.sh +191 -0
- package/.agent/scripts/sonarscanner-cli.sh +455 -0
- package/.agent/scripts/spaceship-helper.sh +747 -0
- package/.agent/scripts/stagehand-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-setup.sh +441 -0
- package/.agent/scripts/stagehand-setup.sh +439 -0
- package/.agent/scripts/system-cleanup.sh +340 -0
- package/.agent/scripts/terminal-title-helper.sh +388 -0
- package/.agent/scripts/terminal-title-setup.sh +549 -0
- package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
- package/.agent/scripts/test-stagehand-integration.sh +309 -0
- package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
- package/.agent/scripts/todo-ready.sh +263 -0
- package/.agent/scripts/tool-version-check.sh +362 -0
- package/.agent/scripts/toon-helper.sh +469 -0
- package/.agent/scripts/twilio-helper.sh +917 -0
- package/.agent/scripts/updown-helper.sh +279 -0
- package/.agent/scripts/validate-mcp-integrations.sh +250 -0
- package/.agent/scripts/validate-version-consistency.sh +131 -0
- package/.agent/scripts/vaultwarden-helper.sh +597 -0
- package/.agent/scripts/vercel-cli-helper.sh +816 -0
- package/.agent/scripts/verify-mirrors.sh +169 -0
- package/.agent/scripts/version-manager.sh +831 -0
- package/.agent/scripts/webhosting-helper.sh +471 -0
- package/.agent/scripts/webhosting-verify.sh +238 -0
- package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
- package/.agent/scripts/worktree-helper.sh +595 -0
- package/.agent/scripts/worktree-sessions.sh +577 -0
- package/.agent/seo/dataforseo.md +215 -0
- package/.agent/seo/domain-research.md +532 -0
- package/.agent/seo/eeat-score.md +659 -0
- package/.agent/seo/google-search-console.md +366 -0
- package/.agent/seo/gsc-sitemaps.md +282 -0
- package/.agent/seo/keyword-research.md +521 -0
- package/.agent/seo/serper.md +278 -0
- package/.agent/seo/site-crawler.md +387 -0
- package/.agent/seo.md +236 -0
- package/.agent/services/accounting/quickfile.md +159 -0
- package/.agent/services/communications/telfon.md +470 -0
- package/.agent/services/communications/twilio.md +569 -0
- package/.agent/services/crm/fluentcrm.md +449 -0
- package/.agent/services/email/ses.md +399 -0
- package/.agent/services/hosting/101domains.md +378 -0
- package/.agent/services/hosting/closte.md +177 -0
- package/.agent/services/hosting/cloudflare.md +251 -0
- package/.agent/services/hosting/cloudron.md +478 -0
- package/.agent/services/hosting/dns-providers.md +335 -0
- package/.agent/services/hosting/domain-purchasing.md +344 -0
- package/.agent/services/hosting/hetzner.md +327 -0
- package/.agent/services/hosting/hostinger.md +287 -0
- package/.agent/services/hosting/localhost.md +419 -0
- package/.agent/services/hosting/spaceship.md +353 -0
- package/.agent/services/hosting/webhosting.md +330 -0
- package/.agent/social-media.md +69 -0
- package/.agent/templates/plans-template.md +114 -0
- package/.agent/templates/prd-template.md +129 -0
- package/.agent/templates/tasks-template.md +108 -0
- package/.agent/templates/todo-template.md +89 -0
- package/.agent/tools/ai-assistants/agno.md +471 -0
- package/.agent/tools/ai-assistants/capsolver.md +326 -0
- package/.agent/tools/ai-assistants/configuration.md +221 -0
- package/.agent/tools/ai-assistants/overview.md +209 -0
- package/.agent/tools/ai-assistants/status.md +171 -0
- package/.agent/tools/ai-assistants/windsurf.md +193 -0
- package/.agent/tools/ai-orchestration/autogen.md +406 -0
- package/.agent/tools/ai-orchestration/crewai.md +445 -0
- package/.agent/tools/ai-orchestration/langflow.md +405 -0
- package/.agent/tools/ai-orchestration/openprose.md +487 -0
- package/.agent/tools/ai-orchestration/overview.md +362 -0
- package/.agent/tools/ai-orchestration/packaging.md +647 -0
- package/.agent/tools/browser/agent-browser.md +464 -0
- package/.agent/tools/browser/browser-automation.md +400 -0
- package/.agent/tools/browser/chrome-devtools.md +282 -0
- package/.agent/tools/browser/crawl4ai-integration.md +422 -0
- package/.agent/tools/browser/crawl4ai-resources.md +277 -0
- package/.agent/tools/browser/crawl4ai-usage.md +416 -0
- package/.agent/tools/browser/crawl4ai.md +585 -0
- package/.agent/tools/browser/dev-browser.md +341 -0
- package/.agent/tools/browser/pagespeed.md +260 -0
- package/.agent/tools/browser/playwright.md +266 -0
- package/.agent/tools/browser/playwriter.md +310 -0
- package/.agent/tools/browser/stagehand-examples.md +456 -0
- package/.agent/tools/browser/stagehand-python.md +483 -0
- package/.agent/tools/browser/stagehand.md +421 -0
- package/.agent/tools/build-agent/agent-review.md +224 -0
- package/.agent/tools/build-agent/build-agent.md +784 -0
- package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
- package/.agent/tools/build-mcp/api-wrapper.md +445 -0
- package/.agent/tools/build-mcp/build-mcp.md +240 -0
- package/.agent/tools/build-mcp/deployment.md +401 -0
- package/.agent/tools/build-mcp/server-patterns.md +632 -0
- package/.agent/tools/build-mcp/transports.md +366 -0
- package/.agent/tools/code-review/auditing.md +383 -0
- package/.agent/tools/code-review/automation.md +219 -0
- package/.agent/tools/code-review/best-practices.md +203 -0
- package/.agent/tools/code-review/codacy.md +151 -0
- package/.agent/tools/code-review/code-simplifier.md +174 -0
- package/.agent/tools/code-review/code-standards.md +309 -0
- package/.agent/tools/code-review/coderabbit.md +101 -0
- package/.agent/tools/code-review/management.md +155 -0
- package/.agent/tools/code-review/qlty.md +248 -0
- package/.agent/tools/code-review/secretlint.md +565 -0
- package/.agent/tools/code-review/setup.md +250 -0
- package/.agent/tools/code-review/snyk.md +563 -0
- package/.agent/tools/code-review/tools.md +230 -0
- package/.agent/tools/content/summarize.md +353 -0
- package/.agent/tools/context/augment-context-engine.md +468 -0
- package/.agent/tools/context/context-builder-agent.md +76 -0
- package/.agent/tools/context/context-builder.md +375 -0
- package/.agent/tools/context/context7.md +371 -0
- package/.agent/tools/context/dspy.md +302 -0
- package/.agent/tools/context/dspyground.md +374 -0
- package/.agent/tools/context/llm-tldr.md +219 -0
- package/.agent/tools/context/osgrep.md +488 -0
- package/.agent/tools/context/prompt-optimization.md +338 -0
- package/.agent/tools/context/toon.md +292 -0
- package/.agent/tools/conversion/pandoc.md +304 -0
- package/.agent/tools/credentials/api-key-management.md +154 -0
- package/.agent/tools/credentials/api-key-setup.md +224 -0
- package/.agent/tools/credentials/environment-variables.md +180 -0
- package/.agent/tools/credentials/vaultwarden.md +382 -0
- package/.agent/tools/data-extraction/outscraper.md +974 -0
- package/.agent/tools/deployment/coolify-cli.md +388 -0
- package/.agent/tools/deployment/coolify-setup.md +353 -0
- package/.agent/tools/deployment/coolify.md +345 -0
- package/.agent/tools/deployment/vercel.md +390 -0
- package/.agent/tools/git/authentication.md +132 -0
- package/.agent/tools/git/gitea-cli.md +193 -0
- package/.agent/tools/git/github-actions.md +207 -0
- package/.agent/tools/git/github-cli.md +223 -0
- package/.agent/tools/git/gitlab-cli.md +190 -0
- package/.agent/tools/git/opencode-github-security.md +350 -0
- package/.agent/tools/git/opencode-github.md +328 -0
- package/.agent/tools/git/opencode-gitlab.md +252 -0
- package/.agent/tools/git/security.md +196 -0
- package/.agent/tools/git.md +207 -0
- package/.agent/tools/opencode/oh-my-opencode.md +375 -0
- package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
- package/.agent/tools/opencode/opencode.md +651 -0
- package/.agent/tools/social-media/bird.md +437 -0
- package/.agent/tools/task-management/beads.md +336 -0
- package/.agent/tools/terminal/terminal-title.md +251 -0
- package/.agent/tools/ui/shadcn.md +196 -0
- package/.agent/tools/ui/ui-skills.md +115 -0
- package/.agent/tools/wordpress/localwp.md +311 -0
- package/.agent/tools/wordpress/mainwp.md +391 -0
- package/.agent/tools/wordpress/scf.md +527 -0
- package/.agent/tools/wordpress/wp-admin.md +729 -0
- package/.agent/tools/wordpress/wp-dev.md +940 -0
- package/.agent/tools/wordpress/wp-preferred.md +398 -0
- package/.agent/tools/wordpress.md +95 -0
- package/.agent/workflows/branch/bugfix.md +63 -0
- package/.agent/workflows/branch/chore.md +95 -0
- package/.agent/workflows/branch/experiment.md +115 -0
- package/.agent/workflows/branch/feature.md +59 -0
- package/.agent/workflows/branch/hotfix.md +98 -0
- package/.agent/workflows/branch/refactor.md +92 -0
- package/.agent/workflows/branch/release.md +96 -0
- package/.agent/workflows/branch.md +347 -0
- package/.agent/workflows/bug-fixing.md +267 -0
- package/.agent/workflows/changelog.md +129 -0
- package/.agent/workflows/code-audit-remote.md +279 -0
- package/.agent/workflows/conversation-starter.md +69 -0
- package/.agent/workflows/error-feedback.md +578 -0
- package/.agent/workflows/feature-development.md +355 -0
- package/.agent/workflows/git-workflow.md +702 -0
- package/.agent/workflows/multi-repo-workspace.md +268 -0
- package/.agent/workflows/plans.md +709 -0
- package/.agent/workflows/postflight.md +604 -0
- package/.agent/workflows/pr.md +571 -0
- package/.agent/workflows/preflight.md +278 -0
- package/.agent/workflows/ralph-loop.md +773 -0
- package/.agent/workflows/release.md +498 -0
- package/.agent/workflows/session-manager.md +254 -0
- package/.agent/workflows/session-review.md +311 -0
- package/.agent/workflows/sql-migrations.md +631 -0
- package/.agent/workflows/version-bump.md +283 -0
- package/.agent/workflows/wiki-update.md +333 -0
- package/.agent/workflows/worktree.md +477 -0
- package/LICENSE +21 -0
- package/README.md +1446 -0
- package/VERSION +1 -0
- package/aidevops.sh +1746 -0
- package/bin/aidevops +21 -0
- package/package.json +75 -0
- package/scripts/npm-postinstall.js +60 -0
- 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 "$@"
|