Skip to main content
Glama

search-code

Search for code patterns within repositories using queries and file filters to locate specific implementations or functions.

Input Schema

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

Implementation Reference

  • The handler function for the 'search-code' tool. It constructs a grep command to search the 'src' directory for the query (optionally filtered by file pattern), limits results, parses the output into file, line number, and content matches, formats a success response, and returns it as text content. Handles no-results and errors gracefully.
    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 schema defining the input parameters for the 'search-code' tool: query (required string), optional filePattern (string glob), and maxResults (number, 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"), },
  • The server.tool call that registers the 'search-code' tool, including its name, input schema, and handler 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