Skip to main content
Glama

GenAIScript

Official
by microsoft
MIT License
43
2,820
  • Linux
  • Apple
system.md_find_files.genai.mts4.03 kB
system({ title: "Tools to help with documentation tasks", }) export default function (ctx: ChatGenerationContext) { const { defTool } = ctx defTool( "md_find_files", "Get the file structure of the documentation markdown/MDX files. Retursn filename, title, description for each match. Use pattern to specify a regular expression to search for in the file content.", { type: "object", properties: { path: { type: "string", description: "root path to search for markdown/MDX files", }, pattern: { type: "string", description: "regular expression pattern to search for in the file content.", }, question: { type: "string", description: "Question to ask when computing the summary", }, }, }, async (args) => { const { path, pattern, context, question } = args context.log( `docs: ls ${path} ${pattern ? `| grep ${pattern}` : ""} --frontmatter ${question ? `--ask ${question}` : ""}` ) const matches = pattern ? (await workspace.grep(pattern, { path, readText: true })) .files : await workspace.findFiles(path + "/**/*.{md,mdx}", { readText: true, }) if (!matches?.length) return "No files found." const q = await host.promiseQueue(5) const files = await q.mapAll( matches, async ({ filename, content }) => { const file: WorkspaceFile & { title?: string description?: string summary?: string } = { filename, } try { const fm = await parsers.frontmatter(content) if (fm) { file.title = fm.title file.description = fm.description } const { text: summary } = await runPrompt( (_) => { _.def("CONTENT", content, { language: "markdown", }) _.$`As a professional summarizer, create a concise and comprehensive summary of the provided text, be it an article, post, conversation, or passage, while adhering to these guidelines: ${question ? `* ${question}` : ""} * The summary is intended for an LLM, not a human. * Craft a summary that is detailed, thorough, in-depth, and complex, while maintaining clarity and conciseness. * Incorporate main ideas and essential information, eliminating extraneous language and focusing on critical aspects. * Rely strictly on the provided text, without including external information. * Format the summary in one single paragraph form for easy understanding. Keep it short. * Generate a list of keywords that are relevant to the text.` }, { label: `summarize ${filename}`, cache: "md_find_files_summary", model: "summarize", } ) file.summary = summary } catch (e) {} return file } ) const res = YAML.stringify(files) return res }, { maxTokens: 20000 } ) }

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/microsoft/genaiscript'

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