feat: rename to ddev-claude-cli, drop Codex CLI, add opt-in headless browser
This commit is contained in:
1 parent
b6d88ce4dc
commit
d8076fa5a0
8 files changed
+322
-64
No files matched your search
Executable
+46
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
#ddev-generated
|
||||
# Keeps Claude Code's MCP config in step with the opt-in headless browser.
|
||||
#
|
||||
# Enabled (.ddev/docker-compose.claude-browser.yaml exists): registers the
|
||||
# "playwright" MCP server at user scope, and refreshes an add-on-managed compose
|
||||
# copy from the template after an add-on upgrade. Disabled: removes the
|
||||
# registration, but only if it is still the one this script created.
|
||||
#
|
||||
# Called by install.sh with HOME already pointing at the persisted profile. Never
|
||||
# fatal: a browser problem must not fail "ddev start" or "ddev claude".
|
||||
set -uo pipefail
|
||||
|
||||
DDEV_DIR="${DDEV_APPROOT}/.ddev"
|
||||
TEMPLATE="${DDEV_DIR}/claude-code/browser/docker-compose.claude-browser.yaml"
|
||||
ENABLED="${DDEV_DIR}/docker-compose.claude-browser.yaml"
|
||||
NAME="playwright"
|
||||
URL="http://claude-browser:8931/mcp"
|
||||
CLAUDE_JSON="${HOME}/.claude.json"
|
||||
|
||||
if ! command -v jq >/dev/null 2>&1; then
|
||||
[ -f "${ENABLED}" ] && echo "claude-browser: jq missing, skipping MCP registration" >&2
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Read ~/.claude.json directly: "claude mcp get" would try to connect.
|
||||
registered=0
|
||||
jq -e --arg n "${NAME}" '.mcpServers[$n]' "${CLAUDE_JSON}" >/dev/null 2>&1 && registered=1
|
||||
current_url="$(jq -r --arg n "${NAME}" '.mcpServers[$n].url // empty' "${CLAUDE_JSON}" 2>/dev/null)"
|
||||
|
||||
if [ -f "${ENABLED}" ]; then
|
||||
if [ -f "${TEMPLATE}" ] && grep -q '#ddev-generated' "${ENABLED}" && ! cmp -s "${TEMPLATE}" "${ENABLED}"; then
|
||||
cat "${TEMPLATE}" >"${ENABLED}"
|
||||
echo "claude-browser: refreshed .ddev/docker-compose.claude-browser.yaml from the add-on; run 'ddev restart' to apply" >&2
|
||||
fi
|
||||
if [ "${registered}" -eq 0 ]; then
|
||||
claude mcp add --transport http --scope user "${NAME}" "${URL}" >/dev/null \
|
||||
&& echo "claude-browser: registered MCP server '${NAME}' (${URL})"
|
||||
elif [ "${current_url}" != "${URL}" ]; then
|
||||
echo "claude-browser: an MCP server named '${NAME}' already exists and is not the add-on's; leaving it alone" >&2
|
||||
fi
|
||||
elif [ "${registered}" -eq 1 ] && [ "${current_url}" = "${URL}" ]; then
|
||||
claude mcp remove "${NAME}" -s user >/dev/null \
|
||||
&& echo "claude-browser: unregistered MCP server '${NAME}'"
|
||||
fi
|
||||
exit 0
|
||||
Reference in new issue
Block a user