Skip to main content
Glama

browse_community

Explore community persona collections shared on GitHub across categories like Programming, Creative, Business, Education, and Design to find expert personas for your tasks.

Instructions

커뮤니티 페르소나 컬렉션을 탐색합니다 (GitHub에서 공유된 무료 페르소나)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
categoryNo필터링할 카테고리 (선택사항): Programming, Creative, Business, Education, Design 등

Implementation Reference

  • Handler for the browse_community tool. Parses input, lists community personas, filters by optional category, groups by category, and returns formatted markdown output listing available personas with metadata and install instructions.
    case 'browse_community': { const validated = browseCommunitySchema.parse(args); const personas = await listCommunityPersonas(); if (personas.length === 0) { return { content: [ { type: 'text', text: '📦 커뮤니티 페르소나가 아직 없습니다.\n\nCONTRIBUTING.md를 참조하여 첫 번째 기여자가 되어보세요!', }, ], }; } // 카테고리 필터링 let filtered = personas; if (validated.category) { filtered = personas.filter(p => p.category && p.category.toLowerCase().includes(validated.category!.toLowerCase()) ); } // 카테고리별로 그룹화 const byCategory: Record<string, CommunityPersona[]> = {}; filtered.forEach(p => { const cat = p.category || 'Other'; if (!byCategory[cat]) { byCategory[cat] = []; } byCategory[cat].push(p); }); let output = '🌟 Community Persona Collection\n\n'; output += `Found ${filtered.length} persona(s)${validated.category ? ` in category "${validated.category}"` : ''}\n\n`; for (const [category, list] of Object.entries(byCategory)) { output += `## ${category}\n\n`; list.forEach(p => { output += `### ${p.name}\n`; if (p.author) output += `👤 Author: ${p.author}\n`; if (p.difficulty) output += `📊 Difficulty: ${p.difficulty}\n`; if (p.persona) output += `📝 Description: ${p.persona}\n`; if (p['use']) output += `💡 Use Cases: ${p['use']}\n`; output += `\n📥 Install: \`install_community_persona\` with name "${p.name}"\n\n`; }); } output += '\n---\n\n'; output += '💡 **Tip**: After installing, use @persona:name to activate\n'; output += '📚 **More info**: See CONTRIBUTING.md to add your own persona\n'; output += '🎯 **Vision**: Check VISION.md for the Persona Marketplace roadmap'; return { content: [ { type: 'text', text: output, }, ], }; }
  • src/index.ts:423-434 (registration)
    Registration of the browse_community tool in the MCP ListTools response, including name, description, and input schema.
    name: 'browse_community', description: '커뮤니티 페르소나 컬렉션을 탐색합니다 (GitHub에서 공유된 무료 페르소나)', inputSchema: { type: 'object', properties: { category: { type: 'string', description: '필터링할 카테고리 (선택사항): Programming, Creative, Business, Education, Design 등', }, }, }, },
  • Zod schema for validating browse_community tool input arguments (optional category string).
    export const browseCommunitySchema = z.object({ category: z.string().optional(), });
  • Helper function that lists all community persona files from the community directory, extracts metadata from file headers, and returns an array of CommunityPersona objects used by the browse_community handler.
    async function listCommunityPersonas(): Promise<CommunityPersona[]> { try { const files = await fs.readdir(COMMUNITY_DIR); const personas: CommunityPersona[] = []; for (const file of files.filter(f => f.endsWith('.txt'))) { const name = file.replace('.txt', ''); const filePath = path.join(COMMUNITY_DIR, file); const content = await fs.readFile(filePath, 'utf-8'); // 메타데이터 추출 const lines = content.split('\n'); const metadata: Record<string, string> = {}; for (const line of lines) { if (line.startsWith('# ')) { const match = line.match(/^# (\w+):\s*(.+)$/); if (match) { metadata[match[1].toLowerCase()] = match[2]; } } else if (!line.startsWith('#')) { break; // 메타데이터 섹션 끝 } } personas.push({ name, ...metadata, file }); } return personas; } catch (error) { console.error('Failed to list community personas:', error); return []; } }

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/seanshin0214/persona-mcp'

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