Skip to main content
Glama

search_docs

Search documentation by query to find relevant information, with options to filter by document category and control result quantity.

Instructions

Search documentation

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query
max_resultsNoMaximum number of results
doc_nameNoFilter by document category
offsetNoNumber of results to skip

Implementation Reference

  • MCP tool handler for 'search_docs': extracts query parameters, calls SearchEngine.search(), and formats results as text content blocks.
    case "search_docs": { const query = String(request.params.arguments?.query); const maxResults = Number(request.params.arguments?.max_results) || 3; const docName = request.params.arguments?.doc_name ? String(request.params.arguments.doc_name) : undefined; const offset = Number(request.params.arguments?.offset) || 0; const results = await searchEngine.search(query, maxResults, docName, 0.2, offset); return { content: results.map(result => ({ type: "text", text: `[${result.score.toFixed(2)}] ${result.title}\n${result.excerpt}\n---` })) }; }
  • src/index.ts:461-488 (registration)
    Registers the 'search_docs' tool in ListToolsRequestSchema response, including name, description, and input schema definition.
    { name: "search_docs", description: "Search documentation", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query" }, max_results: { type: "number", description: "Maximum number of results", default: 3 }, doc_name: { type: "string", description: "Filter by document category" }, offset: { type: "number", description: "Number of results to skip", default: 0 } }, required: ["query"] } },
  • SearchEngine.search(): Performs full-text search using Lunr index, applies filters for docName and minimum score, paginates results, and generates highlighted excerpts.
    async search(query: string, maxResults = 3, docName?: string, minScore = 0.2, offset = 0) { if (!this.index) { throw new Error('Index not initialized'); } let results = this.index.search(query); // 按文档分类筛选 if (docName) { results = results.filter(result => { const doc = this.docStore[result.ref]; return doc.title.startsWith(`${docName}/`); }); } // 按分数筛选 results = results.filter(result => result.score >= minScore); return results.slice(offset, offset + maxResults).map(result => { const doc = this.docStore[result.ref]; return { path: doc.path, score: result.score, title: doc.title, excerpt: this.createExcerpt(doc.content, query) }; }); }

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/askme765cs/open-docs-mcp'

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