Skip to main content
Glama
test-mcp.sh5.08 kB
#!/bin/bash # MCP 服务器测试脚本 echo "======================================" echo "MCP YApi Server 诊断工具" echo "======================================" echo "" # 颜色定义 GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 1. 检查 Node.js 版本 echo -e "${BLUE}[1/7] 检查 Node.js 版本...${NC}" NODE_VERSION=$(node --version) echo "Node.js 版本: $NODE_VERSION" # 提取主版本号 MAJOR_VERSION=$(echo $NODE_VERSION | cut -d'.' -f1 | sed 's/v//') if [ "$MAJOR_VERSION" -lt 18 ]; then echo -e "${RED}✗ Node.js 版本过低 (需要 >= 18)${NC}" echo " 请升级 Node.js: nvm install 18 && nvm use 18" exit 1 else echo -e "${GREEN}✓ Node.js 版本满足要求${NC}" fi echo "" # 2. 检查文件是否存在 echo -e "${BLUE}[2/7] 检查项目文件...${NC}" if [ -f "dist/index.js" ]; then echo -e "${GREEN}✓ dist/index.js 存在${NC}" ls -lh dist/index.js else echo -e "${RED}✗ dist/index.js 不存在${NC}" echo " 请运行: npm run build" exit 1 fi echo "" # 3. 检查依赖 echo -e "${BLUE}[3/7] 检查依赖...${NC}" if [ -d "node_modules/@modelcontextprotocol/sdk" ]; then echo -e "${GREEN}✓ MCP SDK 已安装${NC}" else echo -e "${RED}✗ MCP SDK 未安装${NC}" echo " 请运行: npm install" exit 1 fi echo "" # 4. 检查环境变量 echo -e "${BLUE}[4/7] 检查环境变量...${NC}" if [ -z "$YAPI_BASE_URL" ]; then echo -e "${YELLOW}⚠ YAPI_BASE_URL 未设置${NC}" echo " 将使用默认值: https://yapi.example.com" export YAPI_BASE_URL="https://yapi.example.com" else echo -e "${GREEN}✓ YAPI_BASE_URL: $YAPI_BASE_URL${NC}" fi if [ -z "$YAPI_TOKEN" ]; then echo -e "${YELLOW}⚠ YAPI_TOKEN 未设置 (如果是公开项目可以忽略)${NC}" else echo -e "${GREEN}✓ YAPI_TOKEN: ${YAPI_TOKEN:0:10}...${NC}" fi echo "" # 5. 测试服务器启动 echo -e "${BLUE}[5/7] 测试服务器启动...${NC}" echo "启动服务器 (5秒后自动退出)..." # 启动服务器并在后台运行 timeout 5s node dist/index.js 2>&1 & SERVER_PID=$! sleep 2 # 检查进程是否还在运行 if ps -p $SERVER_PID > /dev/null 2>&1; then echo -e "${GREEN}✓ 服务器成功启动 (PID: $SERVER_PID)${NC}" kill $SERVER_PID 2>/dev/null wait $SERVER_PID 2>/dev/null else echo -e "${RED}✗ 服务器启动失败或立即退出${NC}" echo " 请查看上方的错误信息" fi echo "" # 6. 测试 JSON-RPC 初始化 echo -e "${BLUE}[6/7] 测试 JSON-RPC 初始化...${NC}" echo "发送初始化请求..." # 创建临时测试脚本 cat > /tmp/test-mcp-init.js << 'EOJS' const { spawn } = require('child_process'); const path = require('path'); const serverPath = path.join(process.cwd(), 'dist/index.js'); const server = spawn('node', [serverPath], { env: { ...process.env, YAPI_BASE_URL: process.env.YAPI_BASE_URL || 'https://yapi.example.com' } }); let output = ''; let errorOutput = ''; server.stdout.on('data', (data) => { output += data.toString(); }); server.stderr.on('data', (data) => { errorOutput += data.toString(); }); // 发送初始化请求 const initRequest = { jsonrpc: '2.0', id: 1, method: 'initialize', params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'test-client', version: '1.0.0' } } }; setTimeout(() => { server.stdin.write(JSON.stringify(initRequest) + '\n'); }, 500); setTimeout(() => { server.kill(); console.log('=== stdout ==='); console.log(output || '(empty)'); console.log('\n=== stderr ==='); console.log(errorOutput || '(empty)'); if (output.includes('"result"')) { console.log('\n✓ 服务器正确响应了初始化请求'); process.exit(0); } else { console.log('\n✗ 服务器没有正确响应'); process.exit(1); } }, 3000); EOJS # 运行测试 node /tmp/test-mcp-init.js TEST_RESULT=$? if [ $TEST_RESULT -eq 0 ]; then echo -e "${GREEN}✓ JSON-RPC 初始化成功${NC}" else echo -e "${RED}✗ JSON-RPC 初始化失败${NC}" fi rm /tmp/test-mcp-init.js echo "" # 7. 生成 Cursor 配置 echo -e "${BLUE}[7/7] 生成 Cursor 配置...${NC}" CURRENT_DIR=$(pwd) cat > /tmp/cursor-mcp-config.json << EOF { "mcpServers": { "yapi": { "command": "node", "args": [ "$CURRENT_DIR/dist/index.js" ], "env": { "YAPI_BASE_URL": "${YAPI_BASE_URL:-https://yapi.example.com}", "YAPI_TOKEN": "${YAPI_TOKEN:-}" } } } } EOF echo -e "${GREEN}✓ 配置已生成${NC}" echo "" echo "请将以下配置复制到 Cursor 的 MCP 设置中:" echo "" cat /tmp/cursor-mcp-config.json echo "" # 总结 echo "======================================" echo "诊断完成" echo "======================================" echo "" echo "如果所有检查都通过,请:" echo "1. 复制上面的配置到 Cursor" echo "2. 重启 Cursor" echo "3. 在聊天中尝试: '列出项目 100 的所有接口'" echo "" echo "如果遇到问题,请查看: TROUBLESHOOTING.md" echo ""

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/TStoneLee/mcp-yapi-server'

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