Skip to main content
Glama

search-code

Search code across repositories using specific queries and file patterns, returning relevant results for efficient code analysis and discovery.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filePatternNoOptional file pattern to limit search (e.g., '*.ts')
maxResultsNoMaximum number of results to return
queryYesSearch query to find code in the repository

Implementation Reference

  • Handler function for the 'search-code' tool. Executes grep command on the 'src/' directory to search for the query string, optionally filters by file pattern, limits results with maxResults, parses the output into structured matches (file, lineNum, content), and returns a formatted JSON response using createSuccessResponse or error response.
    async ({ query, filePattern, maxResults }) => { try { const searchPattern = filePattern ? `--include="${filePattern}"` : ""; const command = `grep -n ${searchPattern} -r "${query}" src --color=never | head -n ${maxResults}`; let results; try { results = execSync(command, { encoding: "utf-8" }); } catch (error) { // grep returns non-zero exit code when no results found results = ""; } const matches = results .split("\n") .filter((line) => line.trim().length > 0) .map((line) => { const [file, lineNum, ...contentParts] = line.split(":"); const content = contentParts.join(":").trim(); return { file, lineNum: parseInt(lineNum, 10), content }; }); const result = createSuccessResponse( { query, filePattern: filePattern || "all files", resultsCount: matches.length, matches, }, "search-code" ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: JSON.stringify( createErrorResponse( error instanceof Error ? error.message : String(error), "search-code" ), null, 2 ), }, ], isError: true, }; } }
  • Zod input schema for the 'search-code' tool defining parameters: query (required string), filePattern (optional string), maxResults (number with default 10).
    query: z.string().describe("Search query to find code in the repository"), filePattern: z .string() .optional() .describe("Optional file pattern to limit search (e.g., '*.ts')"), maxResults: z .number() .default(10) .describe("Maximum number of results to return"), },
  • Registration of the 'search-code' tool on the MCP server instance using server.tool(), including inline schema and handler function. Part of the registerDevTools function.
    server.tool( "search-code", { query: z.string().describe("Search query to find code in the repository"), filePattern: z .string() .optional() .describe("Optional file pattern to limit search (e.g., '*.ts')"), maxResults: z .number() .default(10) .describe("Maximum number of results to return"), }, async ({ query, filePattern, maxResults }) => { try { const searchPattern = filePattern ? `--include="${filePattern}"` : ""; const command = `grep -n ${searchPattern} -r "${query}" src --color=never | head -n ${maxResults}`; let results; try { results = execSync(command, { encoding: "utf-8" }); } catch (error) { // grep returns non-zero exit code when no results found results = ""; } const matches = results .split("\n") .filter((line) => line.trim().length > 0) .map((line) => { const [file, lineNum, ...contentParts] = line.split(":"); const content = contentParts.join(":").trim(); return { file, lineNum: parseInt(lineNum, 10), content }; }); const result = createSuccessResponse( { query, filePattern: filePattern || "all files", resultsCount: matches.length, matches, }, "search-code" ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { return { content: [ { type: "text", text: JSON.stringify( createErrorResponse( error instanceof Error ? error.message : String(error), "search-code" ), null, 2 ), }, ], isError: true, }; } } );

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/0xjcf/MCP_CodeAnalysis'

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