Skip to main content
Glama

searchSettings

Search configuration and settings files (JSON/JSONC) for specific keys or values within your development workspace.

Instructions

Search configuration and settings files (JSON/JSONC) for keys or values

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch term to find in settings files
includeNoCustom glob patterns for settings files

Implementation Reference

  • src/index.ts:32-56 (registration)
    Registers the searchSettings tool with the MCP server, defining its description, input schema, and handler function.
    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,
          };
        }
      }
    );
  • Handler function for searchSettings tool. Searches configuration files using predefined patterns or custom includes, leveraging 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,
        };
      }
    }
  • Input schema for searchSettings tool using Zod: query (required string) and optional include array.
    {
      query: z.string().describe("Search term to find in settings files"),
      include: z.array(z.string()).optional().describe("Custom glob patterns for settings files"),
    },
  • Shared helper function searchFiles that performs glob-based file search and content matching, used by searchSettings to find matches in settings files.
    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;
    }

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/cloud-aspect/Config-MCP-Server'

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