forked from 1b-agent/opencadstudio-upstream
66 lines
2.0 KiB
Bash
Executable File
66 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
ROOT=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
SERVER=${OCS_MCP_COMMAND:-"$ROOT/OpenCADStudio"}
|
|
NAME=opencadstudio
|
|
|
|
require_server() {
|
|
[ -x "$SERVER" ] || {
|
|
printf 'OpenCADStudio MCP executable not found: %s\n' "$SERVER" >&2
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
connect_codex() {
|
|
SKILLS=${CODEX_HOME:-"$HOME/.codex"}/skills
|
|
SOURCE="$ROOT/integrations/codex/opencadstudio-control"
|
|
if [ -f "$SOURCE/SKILL.md" ]; then
|
|
mkdir -p "$SKILLS/opencadstudio-control/agents"
|
|
cp "$SOURCE/SKILL.md" "$SKILLS/opencadstudio-control/SKILL.md"
|
|
cp "$SOURCE/agents/openai.yaml" "$SKILLS/opencadstudio-control/agents/openai.yaml"
|
|
fi
|
|
codex mcp remove "$NAME" >/dev/null 2>&1 || true
|
|
codex mcp add "$NAME" -- "$SERVER" --mcp
|
|
printf 'Connected Codex to OpenCADStudio.\n'
|
|
}
|
|
|
|
connect_claude_code() {
|
|
claude mcp remove "$NAME" >/dev/null 2>&1 || true
|
|
claude mcp add --transport stdio --scope user "$NAME" -- "$SERVER" --mcp
|
|
printf 'Connected Claude Code to OpenCADStudio.\n'
|
|
}
|
|
|
|
print_config() {
|
|
ESCAPED=$(printf '%s' "$SERVER" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
|
printf '{"mcpServers":{"%s":{"command":"%s","args":["--mcp"]}}}\n' "$NAME" "$ESCAPED"
|
|
}
|
|
|
|
require_server
|
|
case ${1:-all} in
|
|
all)
|
|
FOUND=false
|
|
if command -v codex >/dev/null 2>&1; then connect_codex; FOUND=true; fi
|
|
if command -v claude >/dev/null 2>&1; then connect_claude_code; FOUND=true; fi
|
|
if [ "$FOUND" = false ]; then
|
|
printf 'No supported AI CLI was found. Use this configuration in any MCP client:\n'
|
|
print_config
|
|
fi
|
|
;;
|
|
codex)
|
|
command -v codex >/dev/null 2>&1 || { printf 'Codex CLI is not installed.\n' >&2; exit 1; }
|
|
connect_codex
|
|
;;
|
|
claude-code|claude)
|
|
command -v claude >/dev/null 2>&1 || { printf 'Claude Code is not installed.\n' >&2; exit 1; }
|
|
connect_claude_code
|
|
;;
|
|
config)
|
|
print_config
|
|
;;
|
|
*)
|
|
printf 'Usage: %s [all|codex|claude-code|config]\n' "$0" >&2
|
|
exit 2
|
|
;;
|
|
esac
|