Skip to main content
Glama

DollhouseMCP

by DollhouseMCP
sonar-check.shโ€ข4.09 kB
#!/bin/bash # On-demand SonarCloud status checker # Uses SONAR_TOKEN environment variable or prompts for it # Usage: ./scripts/sonar-check.sh [pr-number] set -e PROJECT_KEY="DollhouseMCP_mcp-server" ORG="dollhousemcp" SONAR_URL="https://sonarcloud.io" # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Check for token if [ -z "$SONAR_TOKEN" ]; then echo -e "${YELLOW}โš ๏ธ SONAR_TOKEN not set in environment${NC}" echo "Set it with: export SONAR_TOKEN=your-token" exit 1 fi # Function to make API calls sonar_api() { local endpoint=$1 curl -s -u "$SONAR_TOKEN:" "$SONAR_URL/api/$endpoint" } # Check if PR number provided PR_NUMBER=$1 echo -e "${BLUE}๐Ÿ” SonarCloud Status Check${NC}" echo "Project: $PROJECT_KEY" echo "---" if [ -n "$PR_NUMBER" ]; then # Check PR-specific quality gate echo -e "${BLUE}Checking PR #$PR_NUMBER...${NC}" QG_RESPONSE=$(sonar_api "qualitygates/project_status?projectKey=$PROJECT_KEY&pullRequest=$PR_NUMBER") STATUS=$(echo "$QG_RESPONSE" | jq -r '.projectStatus.status') if [ "$STATUS" = "OK" ] || [ "$STATUS" = "PASSED" ]; then echo -e "${GREEN}โœ… Quality Gate: PASSED${NC}" elif [ "$STATUS" = "ERROR" ] || [ "$STATUS" = "FAILED" ]; then echo -e "${RED}โŒ Quality Gate: FAILED${NC}" echo "" echo "Failed conditions:" echo "$QG_RESPONSE" | jq -r '.projectStatus.conditions[] | select(.status=="ERROR") | " - \(.metricKey): \(.actualValue) (threshold: \(.errorThreshold))"' else echo -e "${YELLOW}โณ Quality Gate: $STATUS${NC}" fi # Get issue counts echo "" echo -e "${BLUE}Issues in PR:${NC}" ISSUES=$(sonar_api "issues/search?componentKeys=$PROJECT_KEY&pullRequest=$PR_NUMBER&resolved=false") BUGS=$(echo "$ISSUES" | jq '[.issues[] | select(.type=="BUG")] | length') VULNERABILITIES=$(echo "$ISSUES" | jq '[.issues[] | select(.type=="VULNERABILITY")] | length') CODE_SMELLS=$(echo "$ISSUES" | jq '[.issues[] | select(.type=="CODE_SMELL")] | length') echo " ๐Ÿ› Bugs: $BUGS" echo " ๐Ÿ”’ Vulnerabilities: $VULNERABILITIES" echo " ๐Ÿ’ก Code Smells: $CODE_SMELLS" # Show top issues if [ "$BUGS" -gt 0 ] || [ "$VULNERABILITIES" -gt 0 ]; then echo "" echo -e "${YELLOW}Top Issues:${NC}" echo "$ISSUES" | jq -r '.issues[:5] | .[] | " [\(.severity)] \(.message) - \(.component)"' fi echo "" echo -e "${BLUE}๐Ÿ”— View on SonarCloud:${NC}" echo " $SONAR_URL/project/pull_requests_list?id=$PROJECT_KEY" else # Check main branch quality gate echo -e "${BLUE}Checking main branch...${NC}" QG_RESPONSE=$(sonar_api "qualitygates/project_status?projectKey=$PROJECT_KEY") STATUS=$(echo "$QG_RESPONSE" | jq -r '.projectStatus.status') if [ "$STATUS" = "OK" ] || [ "$STATUS" = "PASSED" ]; then echo -e "${GREEN}โœ… Quality Gate: PASSED${NC}" elif [ "$STATUS" = "ERROR" ] || [ "$STATUS" = "FAILED" ]; then echo -e "${RED}โŒ Quality Gate: FAILED${NC}" else echo -e "${YELLOW}โณ Quality Gate: $STATUS${NC}" fi # Get project measures echo "" echo -e "${BLUE}Project Metrics:${NC}" MEASURES=$(sonar_api "measures/component?component=$PROJECT_KEY&metricKeys=bugs,vulnerabilities,code_smells,coverage,duplicated_lines_density,ncloc") echo "$MEASURES" | jq -r '.component.measures[] | " \(.metric): \(.value)"' | while read line; do case $line in *bugs:*) echo -e " ๐Ÿ› $line" ;; *vulnerabilities:*) echo -e " ๐Ÿ”’ $line" ;; *code_smells:*) echo -e " ๐Ÿ’ก $line" ;; *coverage:*) echo -e " ๐Ÿ“Š $line%" ;; *duplicated_lines_density:*) echo -e " ๐Ÿ“‹ $line% duplicated" ;; *ncloc:*) echo -e " ๐Ÿ“ $line lines of code" ;; *) echo " $line" ;; esac done echo "" echo -e "${BLUE}๐Ÿ”— View on SonarCloud:${NC}" echo " $SONAR_URL/dashboard?id=$PROJECT_KEY" fi echo "" echo -e "${GREEN}โœ“ Done${NC}"

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DollhouseMCP/DollhouseMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server