Skip to main content
Glama
Nicolas-Gong

Redis CRUD MCP Server

by Nicolas-Gong
test.js3.73 kB
import { spawn } from 'child_process'; import { createClient } from 'redis'; // 设置测试环境变量 process.env.REDIS_HOST = '127.0.0.1'; process.env.REDIS_PORT = '6379'; process.env.REDIS_PASSWORD = '123456'; // 模拟 MCP 客户端测试 async function testRedisTools() { console.log('开始全面测试 Redis MCP 工具...'); // 首先直接测试 Redis 连接和各种数据类型 const redisClient = createClient({ url: 'redis://:123456@127.0.0.1:6379' }); try { await redisClient.connect(); console.log('✓ Redis 连接成功'); // 测试字符串操作 console.log('测试字符串操作...'); await redisClient.set('string_key', 'string_value'); const stringValue = await redisClient.get('string_key'); console.log('✓ 字符串操作测试通过'); // 测试列表操作 console.log('测试列表操作...'); await redisClient.lPush('list_key', ['item1', 'item2', 'item3']); const listLength = await redisClient.lLen('list_key'); const listRange = await redisClient.lRange('list_key', 0, -1); const poppedItem = await redisClient.lPop('list_key'); console.log('✓ 列表操作测试通过'); // 测试集合操作 console.log('测试集合操作...'); await redisClient.sAdd('set_key', ['member1', 'member2', 'member3']); const setMembers = await redisClient.sMembers('set_key'); const isMember = await redisClient.sIsMember('set_key', 'member1'); await redisClient.sRem('set_key', ['member2']); console.log('✓ 集合操作测试通过'); // 测试哈希操作 console.log('测试哈希操作...'); await redisClient.hSet('hash_key', 'field1', 'value1'); await redisClient.hSet('hash_key', 'field2', 'value2'); const hashValue = await redisClient.hGet('hash_key', 'field1'); const hashAll = await redisClient.hGetAll('hash_key'); await redisClient.hDel('hash_key', ['field1']); console.log('✓ 哈希操作测试通过'); // 测试有序集合操作 console.log('测试有序集合操作...'); await redisClient.zAdd('zset_key', { score: 1, value: 'member1' }); await redisClient.zAdd('zset_key', { score: 2, value: 'member2' }); await redisClient.zAdd('zset_key', { score: 3, value: 'member3' }); const zsetRange = await redisClient.zRange('zset_key', 0, -1); await redisClient.zRem('zset_key', ['member2']); console.log('✓ 有序集合操作测试通过'); // 清理测试数据 const keys = ['string_key', 'list_key', 'set_key', 'hash_key', 'zset_key']; for (const key of keys) { await redisClient.del(key); } await redisClient.disconnect(); console.log('✓ 所有 Redis 数据类型测试通过'); } catch (error) { console.error('Redis 测试失败:', error); return; } // 测试 MCP 服务器启动 console.log('测试 MCP 服务器启动...'); const serverProcess = spawn('node', ['build/index.js'], { cwd: process.cwd(), stdio: ['pipe', 'pipe', 'pipe'] }); let serverReady = false; serverProcess.stdout.on('data', (data) => { const output = data.toString(); console.log('服务器输出:', output); }); serverProcess.stderr.on('data', (data) => { const output = data.toString(); console.log('服务器日志:', output); if (output.includes('Redis CRUD MCP 服务器正在 stdio 上运行')) { serverReady = true; console.log('✓ MCP 服务器启动成功'); serverProcess.kill(); } }); // 等待服务器启动或超时 setTimeout(() => { if (!serverReady) { console.error('✗ MCP 服务器启动超时'); serverProcess.kill(); } }, 5000); } testRedisTools().catch(console.error);

Latest Blog Posts

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/Nicolas-Gong/redis-crud-mcp-server'

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