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ỉ…
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):
- Users → Profile (hoặc Users → All Users → vinhnx)
- mục Application Passwords
- Name:
openclaw-teddy-live - 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": true và tool_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ữ
vinhnxnhưng allowlist hẹp). - Không commit
.env/.env.live/ password trongopenclaw.jsonlê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.zip → Plugins → 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#
- mcp-server/README.md
- mcp-bridge overview
- OpenClaw MCP CLI: https://docs.openclaw.ai/cli/mcp