searchSettings
Search configuration and settings files (JSON/JSONC) for specific keys or values to locate and analyze workspace settings.
Instructions
Search configuration and settings files (JSON/JSONC) for keys or values
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term to find in settings files | |
| include | No | Custom glob patterns for settings files |
Implementation Reference
- src/index.ts:39-55 (handler)The handler function that executes the logic for the 'searchSettings' tool. It defines settings-specific glob patterns and calls the shared searchFiles helper.async ({ query, include }: { query: string; include?: string[] }) => { try { const patterns = include ?? [ "**/.vscode/settings.json", "**/settings.json", "**/*.json", "**/*.jsonc", ]; const results = await searchFiles(query, patterns, { maxResults: 50 }); return { content: results }; } catch (error) { return { content: [{ type: "text", text: `Error searching settings: ${error}` }], isError: true, }; } }
- src/index.ts:35-38 (schema)Input schema for the searchSettings tool using Zod, defining 'query' and optional 'include' parameters.{ query: z.string().describe("Search term to find in settings files"), include: z.array(z.string()).optional().describe("Custom glob patterns for settings files"), },
- src/index.ts:32-56 (registration)Registration of the 'searchSettings' tool on the MCP server using mcp.tool(), including name, description, schema, and handler.mcp.tool( "searchSettings", "Search configuration and settings files (JSON/JSONC) for keys or values", { query: z.string().describe("Search term to find in settings files"), include: z.array(z.string()).optional().describe("Custom glob patterns for settings files"), }, async ({ query, include }: { query: string; include?: string[] }) => { try { const patterns = include ?? [ "**/.vscode/settings.json", "**/settings.json", "**/*.json", "**/*.jsonc", ]; const results = await searchFiles(query, patterns, { maxResults: 50 }); return { content: results }; } catch (error) { return { content: [{ type: "text", text: `Error searching settings: ${error}` }], isError: true, }; } } );
- src/lib/search.ts:15-46 (helper)Shared helper function searchFiles used by searchSettings (and searchDocs) to glob files and search content.export async function searchFiles( query: string, include: string[], options: SearchOptions = {} ): Promise<SearchResultItem[]> { const { maxResults = 100, listOnly = false } = options; const files = await fg(include, { dot: false, ignore: ["**/node_modules/**", "**/.git/**", "**/dist/**"], unique: true, }); const results: SearchResultItem[] = []; for (const file of files) { if (listOnly) { results.push({ type: "text", text: file }); if (results.length >= maxResults) break; continue; } try { const content = await fs.readFile(file, "utf8"); if (!query || content.toLowerCase().includes(query.toLowerCase())) { const preview = content.slice(0, 2000); results.push({ type: "text", text: `# ${file}\n\n${preview}` }); } if (results.length >= maxResults) break; } catch { // ignore unreadable files } } return results; }