Skip to main content
Glama
test-all-prd-tools.js8 kB
import WorkflowMCPServer from './src/index.js'; // 직접 서버 인스턴스를 생성하고 메서드 테스트 async function testAllPRDTools() { const server = new WorkflowMCPServer(); console.log('🔧 PRD 문서 MCP 도구 전체 테스트 시작...\n'); try { // 테스트 대상 PRD ID const testPRDId = 'f43ce9e2-3fe5-4bad-8cc3-cf744d143f7b'; // 1. create_prd_document 테스트 console.log('1️⃣ create_prd_document 테스트'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); const createArgs = { prd_id: testPRDId, title: 'MCP Hub 상세 기술 명세서 - MCP 테스트', content: `# MCP Hub 상세 명세서 ## 비즈니스 목표 개발자 중심 MCP 패키지 공유 커뮤니티 구축. 무료 6개월 운영 후 광고+구독 수익 모델로 지속가능한 비즈니스 모델 달성. ## 타겟 사용자 - MCP 패키지 개발자 - 클로드 사용자 - AI 애플리케이션 개발자 ## 성공 기준 - 6개월간 완전 무료 운영 달성 - 3개월 내 월 $100+ 수익 전환 - 10,000 MAU 달성 - 수익 대비 인프라 비용 20% 이하 유지 ## 기술 제약사항 - 스택: SvelteKit + Vercel + Supabase - 대역폭 한계: Supabase 2GB 제한 - 무료 플랜 최대 활용 ## 핵심 기능 ### 인증 시스템 - Google OAuth 소셜 로그인 - Supabase Auth 활용 ### 패키지 관리 - GitHub API 연동 자동 수집 - 패키지 메타데이터 관리 ### 수익 모델 - Google AdSense 광고 - 프리미엄 구독 ($5/월)`, doc_type: 'specification', summary: 'MCP Hub 플랫폼의 완전한 기술 명세서', tags: ['mcp', 'package-hub', 'specification', 'mcp-test'] }; const createResult = await server.createPRDDocument(createArgs); console.log('✅ create_prd_document 성공:', createResult.message); console.log(` 📄 문서 ID: ${createResult.document.id}`); console.log(` 📋 제목: ${createResult.document.title}`); console.log(` 🔗 PRD: ${createResult.prd_title}\n`); const documentId = createResult.document.id; // 2. get_prd_documents 테스트 console.log('2️⃣ get_prd_documents 테스트'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); const getResult = await server.getPRDDocuments(testPRDId); console.log('✅ get_prd_documents 성공:', getResult.message); console.log(` 📊 총 문서 수: ${getResult.total}개`); getResult.documents.forEach(doc => { console.log(` - [${doc.id}] ${doc.title}`); console.log(` 📄 ${doc.doc_type} | 🔗 ${doc.link_type} | 📊 ${doc.status}`); }); console.log(''); // 3. search_prd_documents 테스트 console.log('3️⃣ search_prd_documents 테스트'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); const searchResult = await server.searchPRDDocuments(testPRDId, '수익', 5); console.log('✅ search_prd_documents 성공:', searchResult.message); console.log(` 🔍 검색어: "${searchResult.query}"`); console.log(` 📊 결과: ${searchResult.total}건`); searchResult.documents.forEach(doc => { console.log(` - [${doc.id}] ${doc.title}`); console.log(` 📄 스니펫: ${doc.content_snippet}`); }); console.log(''); // 4. update_prd_document 테스트 console.log('4️⃣ update_prd_document 테스트'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); const updateArgs = { title: 'MCP Hub 상세 기술 명세서 - 업데이트됨', summary: 'MCP Hub 플랫폼의 완전한 기술 명세서 - 업데이트 및 검증 완료', status: 'approved' }; const updateResult = await server.updatePRDDocument(documentId, updateArgs); console.log('✅ update_prd_document 성공:', updateResult.message); console.log(` 📄 문서: [${updateResult.document.id}] ${updateResult.document.title}`); console.log(` 📊 상태: ${updateResult.document.status}`); console.log(` 📝 요약: ${updateResult.document.summary}\n`); // 5. 별도 문서 생성 후 link_document_to_prd 테스트 console.log('5️⃣ link_document_to_prd 테스트'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); // 먼저 일반 문서 생성 (직접 SQL 사용) const sqlite3 = (await import('sqlite3')).default; const { open } = await import('sqlite'); const separateDb = await open({ filename: './data/workflow.db', driver: sqlite3.Database }); const separateDocResult = await separateDb.run(` INSERT INTO documents (title, content, doc_type, category, tags, summary, created_by) VALUES (?, ?, ?, ?, ?, ?, 'mcp-user') `, [ 'MCP Hub 추가 분석 문서', `# MCP Hub 시장 분석 ## 경쟁사 분석 - GitHub Package Registry - npm 레지스트리 - Docker Hub ## 차별화 포인트 - MCP 전용 플랫폼 - AI 통합 기능 - 커뮤니티 기반 평가 ## 마케팅 전략 - 개발자 커뮤니티 참여 - 오픈소스 기여 - 콘텐츠 마케팅`, 'analysis', 'market-research', JSON.stringify(['market-analysis', 'competition', 'strategy']), 'MCP Hub의 시장 분석 및 차별화 전략' ]); let separateDocId = separateDocResult.lastInsertRowid; if (!separateDocId) { const lastDoc = await separateDb.get('SELECT last_insert_rowid() as id'); separateDocId = lastDoc.id; } await separateDb.close(); console.log(`📄 별도 문서 생성: [${separateDocId}] MCP Hub 추가 분석 문서`); // 이제 PRD에 연결 const linkResult = await server.linkDocumentToPRD(separateDocId, testPRDId, 'analysis'); console.log('✅ link_document_to_prd 성공:', linkResult.message); console.log(` 📄 문서: ${linkResult.document_title}`); console.log(` 🔗 PRD: ${linkResult.prd_title}`); console.log(` 📊 링크 유형: ${linkResult.link_type}\n`); // 최종 검증 - 다시 PRD 문서들 조회 console.log('6️⃣ 최종 검증 - 전체 PRD 문서 확인'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); const finalCheck = await server.getPRDDocuments(testPRDId); console.log(`✅ 최종 확인: PRD "${finalCheck.prd_title}"에 연결된 문서 ${finalCheck.total}개`); finalCheck.documents.forEach((doc, index) => { console.log(` ${index + 1}. [${doc.id}] ${doc.title}`); console.log(` 📄 유형: ${doc.doc_type} | 🔗 링크: ${doc.link_type} | 📊 상태: ${doc.status}`); console.log(` 📝 요약: ${doc.summary || '없음'}`); console.log(` 📅 생성: ${new Date(doc.created_at).toLocaleString('ko-KR')}`); }); console.log('\n🎉 모든 PRD 문서 MCP 도구 테스트 완료!'); console.log('\n📊 테스트 결과 요약:'); console.log(' ✅ create_prd_document - PRD 상세 문서 생성'); console.log(' ✅ get_prd_documents - PRD 연결 문서 조회'); console.log(' ✅ search_prd_documents - PRD 문서 전문 검색'); console.log(' ✅ update_prd_document - PRD 문서 내용 수정'); console.log(' ✅ link_document_to_prd - 기존 문서를 PRD에 연결'); console.log('\n🚀 PRD 문서 시스템이 완전히 작동합니다!'); } catch (error) { console.error('❌ 테스트 실패:', error.message); console.error(error.stack); } } testAllPRDTools();

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/foswmine/workflow-mcp'

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