Skip to main content
Glama
aserper

RTFD (Read The F*****g Docs)

by aserper

github_code_search

Search GitHub for code examples, function definitions, and usage patterns across repositories or within specific projects to find implementation references.

Instructions

        Search for code snippets across GitHub or within a specific repository.

        USE THIS WHEN: You need to find code examples, function definitions, or usage patterns.

        RETURNS: File paths and locations where code was found - NOT the actual file contents.
        To read the files, use get_file_content() with the returned paths.

        NOTE: Requires authentication - rate limited without GITHUB_TOKEN.

        Args:
            query: Code search query (e.g., "def parse_args", "class HTTPClient")
            repo: Optional repository filter in "owner/repo" format
            limit: Maximum number of results (default 5)

        Example: github_code_search("async def fetch", repo="psf/requests")
        

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes
repoNo
limitNo

Implementation Reference

  • The main handler function for the 'github_code_search' tool. It defines the tool interface, parameters, documentation, and delegates to the internal _search_code helper method before serializing the response.
    async def github_code_search(
        query: str, repo: str | None = None, limit: int = 5
    ) -> CallToolResult:
        """
        Search for code snippets across GitHub or within a specific repository.
    
        USE THIS WHEN: You need to find code examples, function definitions, or usage patterns.
    
        RETURNS: File paths and locations where code was found - NOT the actual file contents.
        To read the files, use get_file_content() with the returned paths.
    
        NOTE: Requires authentication - rate limited without GITHUB_TOKEN.
    
        Args:
            query: Code search query (e.g., "def parse_args", "class HTTPClient")
            repo: Optional repository filter in "owner/repo" format
            limit: Maximum number of results (default 5)
    
        Example: github_code_search("async def fetch", repo="psf/requests")
        """
        result = await self._search_code(query, repo=repo, limit=limit)
        return serialize_response_with_meta(result)
  • The tools dictionary in get_tools() method where 'github_code_search' is registered and returned for MCP tool exposure.
    tools = {
        "github_repo_search": github_repo_search,
        "github_code_search": github_code_search,
        "list_github_packages": list_github_packages,
        "get_package_versions": get_package_versions,
    }
    if is_fetch_enabled():
        tools["fetch_github_readme"] = fetch_github_readme
        tools["list_repo_contents"] = list_repo_contents
        tools["get_file_content"] = get_file_content
        tools["get_repo_tree"] = get_repo_tree
        tools["get_commit_diff"] = get_commit_diff
    
    return tools
  • Internal helper method that executes the GitHub code search API request, processes the response, and returns formatted search results.
    async def _search_code(
        self, query: str, repo: str | None = None, limit: int = 5
    ) -> list[dict[str, Any]]:
        """Search code on GitHub; optionally scoping to a repository."""
        headers = self._get_headers()
    
        search_query = query
        if repo:
            search_query = f"{query} repo:{repo}"
    
        params = {"q": search_query, "per_page": str(limit)}
        async with await self._http_client() as client:
            resp = await client.get(
                "https://api.github.com/search/code",
                params=params,
                headers=headers,
            )
            resp.raise_for_status()
            payload = resp.json()
    
        code_hits: list[dict[str, Any]] = []
        for item in payload.get("items", []):
            code_hits.append(
                {
                    "name": item.get("name"),
                    "path": item.get("path"),
                    "repository": item.get("repository", {}).get("full_name"),
                    "url": item.get("html_url"),
                }
            )
            if len(code_hits) >= limit:
                break
        return code_hits
  • Tool name registration in the provider metadata, listing 'github_code_search' among available tools.
    tool_names = ["github_repo_search", "github_code_search"]

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/aserper/RTFD'

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