#!/bin/bash # Check status of MCP integrations # Usage: ./mcp-status.sh [--json] set -euo pipefail CLAUDE_DIR="${HOME}/.claude" MCP_DIR="${CLAUDE_DIR}/mcp" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' JSON_OUTPUT=false [[ "${1:-}" == "--json" ]] && JSON_OUTPUT=true check_gmail() { local status="unknown" local details="" # Check venv exists local venv_dir="${MCP_DIR}/gmail/venv" if [[ -d "$venv_dir" ]]; then # Check python in venv if [[ -x "${venv_dir}/bin/python" ]]; then # Check if gmail-mcp is installed if "${venv_dir}/bin/python" -c "import gmail_mcp" 2>/dev/null; then # Check credentials local creds_file="${HOME}/.gmail-mcp/credentials.json" local token_file="${HOME}/.gmail-mcp/token.json" if [[ -f "$creds_file" ]]; then if [[ -f "$token_file" ]]; then status="ready" details="Credentials and token present" else status="needs_auth" details="Credentials present, needs OAuth flow" fi else status="needs_setup" details="Missing credentials.json" fi else status="incomplete" details="gmail-mcp not installed in venv" fi else status="broken" details="Venv python not found" fi else status="not_installed" details="No venv at ${venv_dir}" fi if $JSON_OUTPUT; then echo " \"gmail\": {\"status\": \"$status\", \"details\": \"$details\"}" else case "$status" in ready) echo -e "${GREEN}✓${NC} Gmail: $details" ;; needs_auth) echo -e "${YELLOW}○${NC} Gmail: $details" ;; *) echo -e "${RED}✗${NC} Gmail: $details" ;; esac fi } check_gcal() { local status="unknown" local details="" # GCal uses same credentials as Gmail local creds_file="${HOME}/.gmail-mcp/credentials.json" local token_file="${HOME}/.gmail-mcp/token.json" # Check if google-api-python-client is available if python3 -c "import googleapiclient.discovery" 2>/dev/null; then if [[ -f "$creds_file" ]]; then if [[ -f "$token_file" ]]; then status="ready" details="Credentials and token present" else status="needs_auth" details="Credentials present, needs OAuth flow" fi else status="needs_setup" details="Missing credentials.json" fi else status="missing_deps" details="google-api-python-client not installed" fi if $JSON_OUTPUT; then echo " \"gcal\": {\"status\": \"$status\", \"details\": \"$details\"}" else case "$status" in ready) echo -e "${GREEN}✓${NC} Calendar: $details" ;; needs_auth|missing_deps) echo -e "${YELLOW}○${NC} Calendar: $details" ;; *) echo -e "${RED}✗${NC} Calendar: $details" ;; esac fi } check_delegation() { local status="ready" local gmail_helper="${MCP_DIR}/delegation/gmail_delegate.py" local gcal_helper="${MCP_DIR}/delegation/gcal_delegate.py" local details="Delegation helpers" if [[ -f "$gmail_helper" ]] && [[ -f "$gcal_helper" ]]; then status="ready" details="Both helpers present" elif [[ -f "$gmail_helper" ]] || [[ -f "$gcal_helper" ]]; then status="partial" details="Some helpers missing" else status="not_installed" details="No delegation helpers found" fi if $JSON_OUTPUT; then echo " \"delegation\": {\"status\": \"$status\", \"details\": \"$details\"}" else case "$status" in ready) echo -e "${GREEN}✓${NC} Delegation: $details" ;; partial) echo -e "${YELLOW}○${NC} Delegation: $details" ;; *) echo -e "${RED}✗${NC} Delegation: $details" ;; esac fi } check_mcp_servers() { # Check for .mcp.json or mcp server configurations local mcp_config="${CLAUDE_DIR}/.mcp.json" local status="none" local count=0 if [[ -f "$mcp_config" ]]; then # Count servers count=$(python3 -c "import json; data = json.load(open('$mcp_config')); print(len(data.get('mcpServers', {})))" 2>/dev/null || echo "0") if [[ "$count" -gt 0 ]]; then status="configured" else status="empty" fi fi if $JSON_OUTPUT; then echo " \"mcp_servers\": {\"status\": \"$status\", \"count\": $count}" else if [[ "$status" == "configured" ]]; then echo -e "${GREEN}✓${NC} MCP Servers: $count configured" elif [[ "$status" == "empty" ]]; then echo -e "${YELLOW}○${NC} MCP Servers: Config exists but empty" else echo -e "${BLUE}ℹ${NC} MCP Servers: No .mcp.json found (using direct API)" fi fi } # Main output if $JSON_OUTPUT; then echo "{" echo " \"timestamp\": \"$(date -Iseconds)\"," echo " \"integrations\": {" check_gmail echo "," check_gcal echo "," check_delegation echo "," check_mcp_servers echo " }" echo "}" else echo "" echo "🔌 MCP Integration Status" echo "" check_gmail check_gcal check_delegation check_mcp_servers echo "" fi