Skip to main content
Glama

Spline MCP Server

by aydinfer
test-package.js2.99 kB
#!/usr/bin/env node /** * This script tests the package without actually publishing it to npm. * It verifies that all required files are correctly configured. */ import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; import { execSync } from 'child_process'; // Get the directory name in ESM const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); console.log('Testing package configuration for npx installation...'); // Check package.json const packageJsonPath = path.join(__dirname, 'package.json'); if (!fs.existsSync(packageJsonPath)) { console.error('Error: package.json not found!'); process.exit(1); } // Parse package.json const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); // Verify required fields const requiredFields = ['name', 'version', 'main', 'bin']; for (const field of requiredFields) { if (!packageJson[field]) { console.error(`Error: Missing required field '${field}' in package.json`); process.exit(1); } } // Verify bin entry if (!packageJson.bin || !packageJson.bin['spline-mcp']) { console.error('Error: Missing or incorrect bin entry in package.json'); process.exit(1); } // Check that the binary file exists const binPath = path.join(__dirname, packageJson.bin['spline-mcp']); if (!fs.existsSync(binPath)) { console.error(`Error: Binary file not found at ${binPath}`); process.exit(1); } // Check file permissions try { const stats = fs.statSync(binPath); const isExecutable = !!(stats.mode & 0o111); if (!isExecutable) { console.warn('Warning: Binary file is not executable. Adding executable permission...'); fs.chmodSync(binPath, '755'); } } catch (error) { console.error('Error checking file permissions:', error); process.exit(1); } // Verify that environment variables are handled correctly console.log('\nChecking environment variable handling...'); try { // Test CLI with test API key process.env.SPLINE_API_KEY = 'test_api_key_for_verification'; // Try to execute the binary (will be interrupted) const result = execSync(`node ${binPath} --transport=stdio --test-mode`, { timeout: 2000, env: { ...process.env, SPLINE_API_KEY: 'test_api_key_for_verification' } }).toString(); if (result.includes('SPLINE_API_KEY is not set')) { console.error('Error: Environment variable SPLINE_API_KEY is not being correctly read'); process.exit(1); } } catch (error) { // This is expected as the server will start and not exit if (error.stdout && error.stdout.toString().includes('Spline.design MCP Server')) { console.log('Server started successfully with environment variables'); } else { console.error('Error executing binary:', error); process.exit(1); } } console.log('\nAll checks passed! The package is correctly configured for npx installation.'); console.log('\nTo publish the package to npm, run:'); console.log(' npm login'); console.log(' npm publish');

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/aydinfer/spline-mcp-server'

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