Skip to main content
Glama
by alphago2580
test-cors.sh5.35 kB
#!/bin/bash # Naramarket MCP Server - CORS Testing Script # Smithery.ai 배포를 위한 CORS 설정 테스트 echo "🌐 CORS Configuration Test for Smithery.ai" echo "==========================================" # Color codes GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' # Check if server is running echo -e "${BLUE}🔍 서버 상태 확인${NC}" echo "==================" if ! curl -s --max-time 3 http://localhost:8000/sse >/dev/null 2>&1; then echo -e "${RED}❌ 서버가 실행되지 않았습니다${NC}" echo "다음 명령으로 서버를 먼저 시작하세요:" echo " docker run -d -p 8000:8000 -e NARAMARKET_SERVICE_KEY=your_key naramarket-mcp:prod" exit 1 fi echo -e "${GREEN}✅ 서버가 실행 중입니다${NC}" # Test 1: OPTIONS preflight request echo "" echo -e "${BLUE}🧪 테스트 1: OPTIONS 사전 요청 (Preflight)${NC}" echo "==========================================" echo -e "${YELLOW}요청: OPTIONS /sse${NC}" options_response=$(curl -s -i -X OPTIONS http://localhost:8000/sse \ -H "Origin: https://smithery.ai" \ -H "Access-Control-Request-Method: POST" \ -H "Access-Control-Request-Headers: Content-Type, Authorization") echo "응답 헤더:" echo "$options_response" | head -20 # Check specific CORS headers echo "" echo -e "${BLUE}📋 CORS 헤더 검증${NC}" echo "==================" # Access-Control-Allow-Origin if echo "$options_response" | grep -qi "Access-Control-Allow-Origin.*\*"; then echo -e "${GREEN}✅ Access-Control-Allow-Origin: * 확인됨${NC}" else echo -e "${RED}❌ Access-Control-Allow-Origin: * 누락${NC}" fi # Access-Control-Allow-Credentials if echo "$options_response" | grep -qi "Access-Control-Allow-Credentials.*true"; then echo -e "${GREEN}✅ Access-Control-Allow-Credentials: true 확인됨${NC}" else echo -e "${RED}❌ Access-Control-Allow-Credentials: true 누락${NC}" fi # Access-Control-Allow-Methods if echo "$options_response" | grep -qi "Access-Control-Allow-Methods"; then echo -e "${GREEN}✅ Access-Control-Allow-Methods 헤더 확인됨${NC}" echo "$options_response" | grep -i "Access-Control-Allow-Methods" | head -1 else echo -e "${RED}❌ Access-Control-Allow-Methods 헤더 누락${NC}" fi # Access-Control-Allow-Headers if echo "$options_response" | grep -qi "Access-Control-Allow-Headers"; then echo -e "${GREEN}✅ Access-Control-Allow-Headers 헤더 확인됨${NC}" echo "$options_response" | grep -i "Access-Control-Allow-Headers" | head -1 else echo -e "${RED}❌ Access-Control-Allow-Headers 헤더 누락${NC}" fi # Access-Control-Expose-Headers (MCP specific) if echo "$options_response" | grep -qi "Access-Control-Expose-Headers"; then echo -e "${GREEN}✅ Access-Control-Expose-Headers 헤더 확인됨${NC}" echo "$options_response" | grep -i "Access-Control-Expose-Headers" | head -1 # Check for MCP-specific headers if echo "$options_response" | grep -qi "mcp-session-id\|mcp-protocol-version"; then echo -e "${GREEN}✅ MCP 프로토콜 헤더 노출 설정 확인됨${NC}" else echo -e "${YELLOW}⚠️ MCP 프로토콜 헤더가 명시적으로 노출되지 않음${NC}" fi else echo -e "${RED}❌ Access-Control-Expose-Headers 헤더 누락${NC}" fi # Test 2: Cross-origin GET request echo "" echo -e "${BLUE}🧪 테스트 2: 크로스 오리진 GET 요청${NC}" echo "=============================" echo -e "${YELLOW}요청: GET /sse (Origin: https://smithery.ai)${NC}" get_response=$(curl -s -i -X GET http://localhost:8000/sse \ -H "Origin: https://smithery.ai" \ --max-time 3 | head -15) echo "응답 헤더 (처음 15줄):" echo "$get_response" if echo "$get_response" | grep -qi "Access-Control-Allow-Origin"; then echo -e "${GREEN}✅ GET 요청에 CORS 헤더 포함됨${NC}" else echo -e "${RED}❌ GET 요청에 CORS 헤더 누락${NC}" fi # Test 3: JavaScript fetch simulation echo "" echo -e "${BLUE}🧪 테스트 3: JavaScript Fetch 시뮬레이션${NC}" echo "======================================" echo -e "${YELLOW}시뮬레이션: fetch() API 호출${NC}" fetch_response=$(curl -s -i -X POST http://localhost:8000/sse \ -H "Origin: https://app.smithery.ai" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer test-token" \ -d '{"test": "cors"}' \ --max-time 3 | head -10) echo "응답 헤더 (처음 10줄):" echo "$fetch_response" # Summary echo "" echo -e "${BLUE}📊 CORS 테스트 요약${NC}" echo "==================" echo -e "${GREEN}✅ 구현된 CORS 헤더:${NC}" echo " - Access-Control-Allow-Origin: *" echo " - Access-Control-Allow-Credentials: true" echo " - Access-Control-Allow-Methods: GET, POST, OPTIONS" echo " - Access-Control-Allow-Headers: *, Content-Type, Authorization" echo " - Access-Control-Expose-Headers: mcp-session-id, mcp-protocol-version" echo "" echo -e "${BLUE}🎯 Smithery.ai 호환성${NC}" echo "===================" echo "✅ 모든 오리진 허용 (*)" echo "✅ 자격증명 허용 (credentials: true)" echo "✅ 필수 HTTP 메서드 지원" echo "✅ 모든 헤더 허용" echo "✅ MCP 프로토콜 헤더 노출" echo "✅ OPTIONS 사전 요청 처리" echo "" echo -e "${GREEN}🎉 CORS 설정이 Smithery.ai 배포에 최적화되었습니다!${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/alphago2580/naramarketmcp'

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