payload-cms-mcp
Version:
Payload CMS 3.0 MCP Server - A specialized Model Context Protocol server for Payload CMS
67 lines (53 loc) • 2.12 kB
JavaScript
const { createClient } = require('redis');
const dotenv = require('dotenv');
// Load environment variables
dotenv.config();
// Clean the Redis URL if it contains variable name or quotes
const cleanRedisUrl = (url) => {
if (!url) return undefined;
// If the URL contains KV_URL= or REDIS_URL=, extract just the URL part
if (url.includes('KV_URL=') || url.includes('REDIS_URL=')) {
const match = url.match(/(?:KV_URL=|REDIS_URL=)["']?(rediss?:\/\/[^"']+)["']?/);
return match ? match[1] : url;
}
// Remove any surrounding quotes
return url.replace(/^["'](.+)["']$/, '$1');
};
const redisUrl = cleanRedisUrl(process.env.REDIS_URL) || cleanRedisUrl(process.env.KV_URL);
if (!redisUrl) {
console.error('\x1b[31m%s\x1b[0m', 'Error: REDIS_URL or KV_URL environment variable is not set');
console.log('\x1b[33m%s\x1b[0m', 'Please set up your environment variables:');
console.log('1. Copy .env.example to .env: cp .env.example .env');
console.log('2. Edit .env file with your Redis connection details');
process.exit(1);
}
async function checkRedisConnection() {
console.log(`Checking Redis connection at ${redisUrl}...`);
const client = createClient({
url: redisUrl,
socket: {
connectTimeout: 5000,
}
});
client.on('error', (err) => {
console.error('\x1b[31m%s\x1b[0m', 'Redis connection error:', err.message);
if (err.message.includes('ECONNREFUSED')) {
console.log('\x1b[33m%s\x1b[0m', '\nRedis server is not running. You can:');
console.log('1. Start Redis with Docker: docker run -p 6379:6379 redis:alpine');
console.log('2. Use docker-compose: npm run docker:up');
console.log('3. Install and run Redis locally: https://redis.io/download');
}
process.exit(1);
});
try {
await client.connect();
console.log('\x1b[32m%s\x1b[0m', 'Successfully connected to Redis!');
await client.quit();
process.exit(0);
} catch (err) {
console.error('\x1b[31m%s\x1b[0m', 'Failed to connect to Redis:', err.message);
process.exit(1);
}
}
checkRedisConnection();