Skip to main content
Glama

marm-mcp

docs.js2.38 kB
// docs.js - Documentation loading and search functionality for MARM system import { MARM_KEYWORDS } from './constants.js'; let docsCache = null; export const docSnippets = {}; const DOC_NAMES = ['marmreadme', 'description', 'faq', 'handbook', 'roadmap']; const DOC_BASE_PATH = './data/'; export async function loadDocs() { if (docsCache && Object.keys(docsCache).length) return docsCache; const newDocsCache = {}; const newDocSnippets = {}; await Promise.all( DOC_NAMES.map(async name => { try { const res = await fetch(`${DOC_BASE_PATH}${name}.md`); if (!res.ok) throw new Error(`${name}.md not found (status ${res.status})`); const text = await res.text(); newDocsCache[name] = text; newDocSnippets[name] = text .split(/[.!?]/) .map(s => s.trim()) .filter(s => s.length > 20 && !s.startsWith('#')); } catch (err) { console.error(`[MARM] Error loading ${name}.md →`, err.message); newDocsCache[name] = ''; newDocSnippets[name] = []; } }) ); docsCache = newDocsCache; Object.assign(docSnippets, newDocSnippets); return docsCache; } // --- Documentation Search Logic --- export function searchDocs(query) { if (!docsCache) return ''; const q = query.toLowerCase(); const isMarmQuery = MARM_KEYWORDS.some(keyword => q.includes(keyword)); if (isMarmQuery) { const results = []; for (const key in docsCache) { const lines = docsCache[key].split('\n'); const relevantLines = lines.filter(l => MARM_KEYWORDS.some(kw => l.toLowerCase().includes(kw)) ); if (relevantLines.length > 0) { results.push(...relevantLines.slice(0, 3).map(l => `[${key}] ${l.trim()}`)); } } if (results.length > 0) { return `MARM Documentation:\n${results.slice(0, 5).join('\n')}`; } } for (const key in docsCache) { const line = docsCache[key].split('\n').find(l => l.toLowerCase().includes(q)); if (line) return `Found in ${key}.md → ${line.trim()}`; } return ''; } export function shouldAutoSearch(userInput) { const q = userInput.toLowerCase(); if (MARM_KEYWORDS.some(kw => q.includes(kw))) return true; const keyword = /(what|who|how|when|why)\b.*\?/i.test(userInput) || /^\s*(define|describe|explain|give me|tell me about)\b/i.test(q); return keyword; }

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/Lyellr88/marm-mcp'

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