Files
dss/scripts/enable-mcp-clients.sh
DSS ec09a0a662
Some checks failed
DSS Project Analysis / dss-context-update (push) Has been cancelled
Unify MCP across clients; remove legacy plugin server
2025-12-12 14:33:18 -03:00

95 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
# Enable DSS MCP for supported AI clients (Claude Code, Codex CLI, Gemini CLI).
#
# This is safe to run multiple times.
#
# Usage:
# ./scripts/enable-mcp-clients.sh [--force] [--api-url <url>] [--skip-codex] [--skip-gemini] [--skip-claude]
#
# Notes:
# - Claude Code MCP config is project-local: `.claude/mcp.json`
# - Codex/Gemini are configured via their CLI (`codex mcp add`, `gemini mcp add`)
DSS_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
MCP_CMD="$DSS_ROOT/scripts/dss-mcp"
FORCE=false
SKIP_CLAUDE=false
SKIP_CODEX=false
SKIP_GEMINI=false
API_URL=""
while [[ $# -gt 0 ]]; do
case "$1" in
--force)
FORCE=true
shift
;;
--skip-claude)
SKIP_CLAUDE=true
shift
;;
--skip-codex)
SKIP_CODEX=true
shift
;;
--skip-gemini)
SKIP_GEMINI=true
shift
;;
--api-url)
API_URL="${2:-}"
if [[ -z "$API_URL" ]]; then
echo "Error: --api-url requires a value" >&2
exit 1
fi
shift 2
;;
*)
echo "Unknown argument: $1" >&2
echo "Usage: ./scripts/enable-mcp-clients.sh [--force] [--api-url <url>] [--skip-codex] [--skip-gemini] [--skip-claude]" >&2
exit 1
;;
esac
done
echo "[dss] Enabling MCP clients in: $DSS_ROOT"
if [[ "$SKIP_CLAUDE" != "true" ]]; then
echo "[dss] Claude Code: generating .claude/mcp.json"
if [[ -n "$API_URL" ]]; then
"$DSS_ROOT/scripts/setup-mcp.sh" --api-url "$API_URL"
else
"$DSS_ROOT/scripts/setup-mcp.sh"
fi
fi
if [[ "$SKIP_CODEX" != "true" ]]; then
if command -v codex >/dev/null 2>&1; then
echo "[dss] Codex CLI: configuring MCP server 'dss'"
if $FORCE; then
codex mcp remove dss >/dev/null 2>&1 || true
fi
codex mcp get dss >/dev/null 2>&1 || codex mcp add dss -- "$MCP_CMD"
else
echo "[dss] Codex CLI: not found (skip)" >&2
fi
fi
if [[ "$SKIP_GEMINI" != "true" ]]; then
if command -v gemini >/dev/null 2>&1; then
echo "[dss] Gemini CLI: configuring MCP server 'dss'"
if $FORCE; then
gemini mcp remove dss >/dev/null 2>&1 || true
fi
gemini mcp list 2>/dev/null | grep -qE '^dss\\b' || gemini mcp add dss "$MCP_CMD"
else
echo "[dss] Gemini CLI: not found (skip)" >&2
fi
fi
echo "[dss] Done."
echo "[dss] Restart Claude Code/Codex/Gemini sessions to load the updated MCP toolset."