All images and scripts

Opencode setup

sh

What it runs

The whole script, exactly as it will execute in your workspace. Nothing is hidden — read it before you run it.

#!/usr/bin/env sh
# Set up the context7 MCP server for OpenCode (no API key).
# Merges into ~/.config/opencode/opencode.json, preserving existing config.

set -eu

# Install jq if missing
if ! command -v jq >/dev/null 2>&1; then
    if command -v apt-get >/dev/null 2>&1; then
        sudo apt-get update
        sudo apt-get install -y jq
    elif command -v dnf >/dev/null 2>&1; then
        sudo dnf install -y jq
    elif command -v yum >/dev/null 2>&1; then
        sudo yum install -y jq
    elif command -v pacman >/dev/null 2>&1; then
        sudo pacman -Sy --noconfirm jq
    elif command -v zypper >/dev/null 2>&1; then
        sudo zypper install -y jq
    elif command -v brew >/dev/null 2>&1; then
        brew install jq
    else
        echo "Error: could not find a supported package manager to install jq."
        exit 1
    fi
fi

CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/opencode"
CONFIG_FILE="$CONFIG_DIR/opencode.json"

mkdir -p "$CONFIG_DIR"

# The context7 server entry we want to ensure exists.
CONTEXT7='{
  "type": "remote",
  "url": "https://mcp.context7.com/mcp",
  "enabled": true
}'

if [ -f "$CONFIG_FILE" ]; then
  echo "Found existing config: $CONFIG_FILE"
  cp "$CONFIG_FILE" "$CONFIG_FILE.bak"
  echo "Backed up to $CONFIG_FILE.bak"
else
  echo "No config found; creating $CONFIG_FILE"
  printf '%s\n' '{ "$schema": "https://opencode.ai/config.json" }' > "$CONFIG_FILE"
fi

if command -v jq >/dev/null 2>&1; then
  tmp="$(mktemp)"
  jq --argjson srv "$CONTEXT7" \
    '.["$schema"] //= "https://opencode.ai/config.json"
     | .mcp //= {}
     | .mcp.context7 = $srv' \
    "$CONFIG_FILE" > "$tmp"
  mv "$tmp" "$CONFIG_FILE"
  echo "context7 added via jq."
else
  # No jq: only safe to write if the file is empty/new. Otherwise bail.
  if [ -s "$CONFIG_FILE" ] && grep -q '"mcp"' "$CONFIG_FILE" 2>/dev/null; then
    echo "jq not installed and an 'mcp' block already exists." >&2
    echo "Install jq, or add this to 'mcp' in $CONFIG_FILE manually:" >&2
    echo "  \"context7\": $CONTEXT7" >&2
    exit 1
  fi
  cat > "$CONFIG_FILE" <<'EOF'
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "enabled": true
    }
  }
}
EOF
  echo "context7 written (jq not found, used full template)."
fi

echo
echo "Done. Current config:"
cat "$CONFIG_FILE"
echo
echo "Restart OpenCode (or start a new session) to load context7."

How to get it

Open your DevGrail workspace, go to Scripts → Official scripts, and choose Download. It is copied into your own library, where you can edit it, run it, or set it as a workspace default — the copy is yours, and later changes here do not touch it.