1+ #! /bin/bash
2+ # filepath: scripts/validate-mcp.sh
3+ set -e
4+
5+ echo " 🔍 Validating MCP server configuration..."
6+
7+ # Check if Python is available
8+ if ! command -v python3 & > /dev/null && ! command -v python & > /dev/null; then
9+ echo " ⚠️ Python not found. MCP server requires Python >=3.8"
10+ else
11+ echo " ✅ Python found"
12+ fi
13+
14+ # Check if pip is available
15+ if ! command -v pip3 & > /dev/null && ! command -v pip & > /dev/null; then
16+ echo " ⚠️ pip not found. Required for installing Sling package"
17+ else
18+ echo " ✅ pip found"
19+ fi
20+
21+ # Check if ajv-cli is installed for schema validation
22+ if ! command -v ajv & > /dev/null; then
23+ echo " Installing ajv-cli for JSON schema validation..."
24+ if command -v npm & > /dev/null; then
25+ npm install -g ajv-cli
26+ else
27+ echo " ⚠️ npm not found. Skipping schema validation."
28+ echo " Install Node.js and npm to validate server.json schema"
29+ exit 0
30+ fi
31+ fi
32+
33+ # Download the MCP server schema
34+ echo " 📥 Downloading MCP server schema..."
35+ curl -s -o /tmp/server-schema.json https://static.modelcontextprotocol.io/schemas/2025-09-16/server.schema.json
36+
37+ # Validate the server.json file
38+ echo " ✅ Validating server.json against schema..."
39+ if ajv validate -s /tmp/server-schema.json -d server.json; then
40+ echo " ✅ server.json is valid!"
41+ else
42+ echo " ❌ server.json validation failed!"
43+ exit 1
44+ fi
45+
46+ # Test Sling installation and MCP command
47+ echo " 🧪 Testing Sling installation..."
48+ if command -v sling & > /dev/null; then
49+ echo " ✅ Sling CLI found"
50+
51+ # Test MCP command
52+ echo " 🧪 Testing MCP command..."
53+ if timeout 3s sling mcp --help & > /dev/null; then
54+ echo " ✅ Sling MCP command works!"
55+ else
56+ echo " ⚠️ Could not test 'sling mcp' command (this is normal if no help flag exists)"
57+ fi
58+ else
59+ echo " ⚠️ Sling CLI not found. Testing pip installation..."
60+
61+ # Try to install sling temporarily for testing
62+ if command -v pip3 & > /dev/null; then
63+ echo " 🧪 Testing pip installation of sling package..."
64+ pip3 show sling & > /dev/null && echo " ✅ Sling package is already installed" || echo " ℹ️ Sling package not installed (users will install via: pip install sling)"
65+ fi
66+ fi
67+
68+ echo " "
69+ echo " 🎉 Validation complete!"
70+ echo " "
71+ echo " 📋 Installation instructions for users:"
72+ echo " pip install sling"
73+ echo " # Then the MCP server can be started with: sling mcp"
0 commit comments