Deploy Teddy MCP → blackbean.io.vn (OpenClaw)

Deploy Teddy MCP → blackbean.io.vn (OpenClaw) Hướng dẫn gắn OpenClaw với site live https://blackbean.io.vn qua MCP bridge (mcp-server/). Bridge chạy trên máy OpenClaw (stdio), không chạy trong PHP trên server. WordPress chỉ…

v2 deploy-blackbean-io-vn.md Download markdown Updated July 18, 2026

Deploy Teddy MCP → blackbean.io.vn (OpenClaw)#

Hướng dẫn gắn OpenClaw với site live https://blackbean.io.vn qua MCP bridge (mcp-server/).

Bridge chạy trên máy OpenClaw (stdio), không chạy trong PHP trên server. WordPress chỉ cần Teddy REST domain-tools + Application Password.

OpenClaw ──stdio──▶ teddy-mcp (máy local)
                         │
                         │ HTTPS + Basic (App Password)
                         ▼
              https://blackbean.io.vn/wp-json/teddy/v1
                 GET  /domain-tools
                 POST /tools/{name}/execute

Checklist nhanh#

# Việc Ai làm
1 Teddy active + Agent Pipeline bật Admin WP
2 Tạo Application Password cho vinhnx Admin WP
3 npm install trong mcp-server/ (máy OpenClaw) Dev
4 Cấu hình env live + npm run probe Dev
5 openclaw mcp add teddy-live … + doctor --probe Dev
6 Upload zip Teddy mới (có mcp-server/ + docs) Admin WP

1. WordPress (blackbean.io.vn)#

1.1 Bật Agent Pipeline#

Teddy → Settings → bật Agent Pipeline (use_agent_pipeline).

Không bật thì GET /wp-json/teddy/v1/domain-tools sẽ không đăng ký route.

1.2 Application Password#

Đăng nhập user vinhnx (administrator hoặc đủ capability tool cần):

  1. Users → Profile (hoặc Users → All Users → vinhnx)
  2. mục Application Passwords
  3. Name: openclaw-teddy-live
  4. Add New Application Password → copy chuỗi (chỉ hiện 1 lần)

Giữ password offline; không commit vào git.

1.3 Kiểm tra REST (tuỳ chọn)#

Không auth phải trả 401 (route tồn tại):

curl -sS -o /dev/null -w "%{http_code}\n" \
  https://blackbean.io.vn/wp-json/teddy/v1/domain-tools
# kỳ vọng: 401

Có auth (thay USER / APP_PASS):

curl -sS -u 'vinhnx:APP_PASS_NO_SPACES' \
  https://blackbean.io.vn/wp-json/teddy/v1/domain-tools | head
# kỳ vọng: JSON array các tool

2. Máy chạy OpenClaw#

Bridge dùng code trong repo Teddy (hoặc zip đã giải nén):

cd /path/to/teddy/mcp-server
npm install

2.1 File .env live (local, gitignored)#

cp .env.example .env.live

Nội dung gợi ý:

TEDDY_BASE_URL=https://blackbean.io.vn
TEDDY_AUTH=application_password
TEDDY_USERNAME=vinhnx
TEDDY_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx

# Cert Let's Encrypt hợp lệ → để false
TEDDY_INSECURE_TLS=false

TEDDY_AUTO_APPROVE_DANGEROUS=false
TEDDY_TIMEOUT_MS=60000

# Manager allowlist (read + careful writes)
TEDDY_TOOL_ALLOWLIST=site.briefing,content.gaps,content.scheduled,comment.list,comment.set_status,post.list,post.create,post.update,site.statistics,docs.search,seo.meta.generate,media.find_missing_alt,ops.recent_changes,ai.usage.summary,knowledge.status,system.ping,system.clear_cache,wc.product.low_stock,wc.order.list,wc.report.revenue
TEDDY_TOOL_DENYLIST=system.wp_cli,system.optimize_db,system.backup.run,system.send_email

Approvals over Zalo: approvals-zalo.md. Playbooks: docs/playbooks/.

Probe:

set -a && source .env.live && set +a
npm run probe

Kỳ vọng "ok": truetool_count > 0.

2.2 Đăng ký OpenClaw (teddy-live)#

Giữ server teddy trỏ local blackbean.test; thêm server riêng cho live:

MCP=/path/to/teddy/mcp-server
set -a && source "$MCP/.env.live" && set +a

openclaw mcp add teddy-live \
  --command node \
  --arg "$MCP/src/index.js" \
  --cwd "$MCP" \
  --env "TEDDY_BASE_URL=$TEDDY_BASE_URL" \
  --env "TEDDY_AUTH=$TEDDY_AUTH" \
  --env "TEDDY_USERNAME=$TEDDY_USERNAME" \
  --env "TEDDY_APP_PASSWORD=$TEDDY_APP_PASSWORD" \
  --env "TEDDY_INSECURE_TLS=$TEDDY_INSECURE_TLS" \
  --env "TEDDY_AUTO_APPROVE_DANGEROUS=$TEDDY_AUTO_APPROVE_DANGEROUS" \
  --env "TEDDY_TIMEOUT_MS=$TEDDY_TIMEOUT_MS" \
  --env "TEDDY_TOOL_ALLOWLIST=$TEDDY_TOOL_ALLOWLIST" \
  --env "TEDDY_TOOL_DENYLIST=$TEDDY_TOOL_DENYLIST"

openclaw mcp doctor teddy-live --probe
openclaw mcp probe teddy-live --json

Thử trong session: teddy-live__teddy_ping hoặc teddy-live__teddy_site_briefing.

2.3 Morning briefing (cron + Zalo)#

Prefer cron for a fixed time (after zalouser pairing):

openclaw cron add \
  --name teddy-daily-briefing \
  --cron "0 8 * * *" \
  --tz Asia/Ho_Chi_Minh \
  --session isolated \
  --announce \
  --channel zalouser \
  --message "Run teddy-live site.briefing. If needs_attention, summarize actionable for me. Else reply HEARTBEAT_OK."

Heartbeat alternative: fill ~/.openclaw/workspace/HEARTBEAT.md (already ships a Teddy checklist).

2.4 Dangerous tools#

Mặc định: preview → gọi lại với approved: true + approval_token.

Chỉ bật TEDDY_AUTO_APPROVE_DANGEROUS=true nếu agent được tin cậy hoàn toàn trên live.


3. Bảo mật live#

  • Dùng Application Password riêng; revoke ngay nếu lộ.
  • Prefer user dedicated (hoặc giữ vinhnx nhưng allowlist hẹp).
  • Không commit .env / .env.live / password trong openclaw.json lên git công khai.
  • OpenClaw có thể cảnh báo “literal sensitive value” — chấp nhận được trên máy local; hoặc inject env từ shell trước khi start gateway.
  • Deny: system.wp_cli, system.optimize_db, backup/email trừ khi thật sự cần.

4. Update plugin zip trên live#

Sau khi MCP live probe OK, build từ máy dev:

cd wp-content/plugins/teddy
npm run release          # cần build/ sẵn
# hoặc
npm run release:full     # build JS/CSS rồi zip

Output: release/teddy.zipPlugins → Add New → Upload trên blackbean.io.vn.

Zip gồm mcp-server/ (không gồm node_modules / .env). Trên server WP, folder này chủ yếu để tài liệu/ops; OpenClaw vẫn chạy bridge từ máy local (hoặc host riêng).


5. Troubleshooting#

Triệu chứng Kiểm tra
Unexpected /domain-tools / 404 Agent Pipeline off; plugin cũ; permalink
401 sau khi có password Sai user/pass; khoảng trắng password; App Passwords bị plugin bảo mật chặn
403 User thiếu capability (edit_posts / tool-specific)
TLS error Cert hết hạn; tạm TEDDY_INSECURE_TLS=true chỉ để debug
0 tools Allowlist quá chặt; pipeline off
OpenClaw không thấy server openclaw mcp list / restart gateway

Liên quan#