Sourcebot

Sourcebot

4.2

If you are the rightful owner of Sourcebot and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcpreview.com.

The Sourcebot MCP server allows LLM agents to fetch code context from various repositories hosted on platforms like GitHub, GitLab, and Bitbucket, enhancing the capabilities of LLMs in code-related tasks.

Sourcebot MCP - Fetch code context from GitHub, GitLab, Bitbucket, and more

The Sourcebot MCP server gives your LLM agents the ability to fetch code context across thousands of repos hosted on GitHub, GitLab, BitBucket and more. Ask your LLM a question, and the Sourcebot MCP server will fetch relevant context from its index and inject it into your chat session. Some use cases this unlocks include:

  • Enriching responses to user requests:

    • "What repositories are using internal library X?"
    • "Provide usage examples of the CodeMirror component"
    • "Where is the useCodeMirrorTheme hook defined?"
    • "Find all usages of deprecatedApi across all repos"
  • Improving reasoning ability for existing horizontal agents like AI code review, docs generation, etc.

    • "Find the definitions for all functions in this diff"
    • "Document what systems depend on this class"
  • Building custom LLM horizontal agents like like compliance auditing agents, migration agents, etc.

    • "Find all instances of hardcoded credentials"
    • "Identify repositories that depend on this depreacted api"

Getting Started

  1. Install Node.JS >= v18.0.0.

  2. (optional) Spin up a Sourcebot instance by following this guide. The host url of your instance (e.g., http://localhost:3000) is passed to the MCP server via the SOURCEBOT_HOST url. This allows you to control which repos Sourcebot MCP fetches context from (including private repos).

    If a host is not provided, then the server will fallback to using the demo instance hosted at https://demo.sourcebot.dev. You can see the list of repositories indexed here. Add additional repositories by opening a PR.

  3. Install @sourcebot/mcp into your MCP client:

    Cursor

    Cursor MCP docs

    Go to: Settings -> Cursor Settings -> MCP -> Add new global MCP server

    Paste the following into your ~/.cursor/mcp.json file. This will install Sourcebot globally within Cursor:

    {
        "mcpServers": {
            "sourcebot": {
                "command": "npx",
                "args": ["-y", "@sourcebot/mcp@latest" ],
                // Optional - if not specified, https://demo.sourcebot.dev is used
                "env": {
                    "SOURCEBOT_HOST": "http://localhost:3000"
                }
            }
        }
    }
    
    Windsurf

    Windsurf MCP docs

    Go to: Windsurf Settings -> Cascade -> Add Server -> Add Custom Server

    Paste the following into your mcp_config.json file:

    {
        "mcpServers": {
            "sourcebot": {
                "command": "npx",
                "args": ["-y", "@sourcebot/mcp@latest" ],
                // Optional - if not specified, https://demo.sourcebot.dev is used
                "env": {
                    "SOURCEBOT_HOST": "http://localhost:3000"
                }
            }
        }
    }
    
    VS Code

    VS Code MCP docs

    Add the following to your settings.json:

    {
        "mcp": {
            "servers": {
                "sourcebot": {
                    "type": "stdio",
                    "command": "npx",
                    "args": ["-y", "@sourcebot/mcp@latest"],
                    // Optional - if not specified, https://demo.sourcebot.dev is used
                    "env": {
                        "SOURCEBOT_HOST": "http://localhost:3000"
                    }
                }
            }
        }
    }
    
    Claude Code

    Claude Code MCP docs

    Run the following command:

    # SOURCEBOT_HOST env var is optional - if not specified,
    # https://demo.sourcebot.dev is used.
    claude mcp add sourcebot -e SOURCEBOT_HOST=http://localhost:3000 -- npx -y @sourcebot/mcp@latest
    
    Claude Desktop

    Claude Desktop MCP docs

    Add the following to your claude_desktop_config.json:

    {
        "mcpServers": {
            "sourcebot": {
                "command": "npx",
                "args": ["-y", "@sourcebot/mcp@latest"],
                // Optional - if not specified, https://demo.sourcebot.dev is used
                "env": {
                    "SOURCEBOT_HOST": "http://localhost:3000"
                }
            }
        }
    }
    

    Alternatively, you can install using via Smithery. For example:

    npx -y @smithery/cli install @sourcebot-dev/sourcebot --client claude
    

  1. Tell your LLM to use sourcebot when prompting.

For a more detailed guide, checkout the docs.

Available Tools

search_code

Fetches code that matches the provided regex pattern in query.

Parameters
NameRequiredDescription
queryyesRegex pattern to search for. Escape special characters and spaces with a single backslash (e.g., 'console.log', 'console\ log').
filterByRepoIdsnoRestrict search to specific repository IDs (from 'list_repos'). Leave empty to search all.
filterByLanguagesnoRestrict search to specific languages (GitHub linguist format, e.g., Python, JavaScript).
caseSensitivenoCase sensitive search (default: false).
includeCodeSnippetsnoInclude code snippets in results (default: false).
maxTokensnoMax tokens to return (default: env.DEFAULT_MINIMUM_TOKENS).

list_repos

Lists all repositories indexed by Sourcebot.

get_file_source

Fetches the source code for a given file.

Parameters
NameRequiredDescription
fileNameyesThe file to fetch the source code for.
repoIdyesThe Sourcebot repository ID.

Supported Code Hosts

Sourcebot supports the following code hosts:

| Don't see your code host? Open a GitHub discussion.

Future Work

Semantic Search

Currently, Sourcebot only supports regex-based code search (powered by zoekt under the hood). It is great for scenarios when the agent is searching for is something that is super precise and well-represented in the source code (e.g., a specific function name, a error string, etc.). It is not-so-great for fuzzy searches where the objective is to find some loosely defined category or concept in the code (e.g., find code that verifies JWT tokens). The LLM can approximate this by crafting regex searches that attempt to capture a concept (e.g., it might try a query like "jwt|token|(verify|validate).*(jwt|token)"), but often yields sub-optimal search results that aren't related. Tools like Cursor solve this with embedding models to capture the semantic meaning of code, allowing for LLMs to search using natural language. We would like to extend Sourcebot to support semantic search and expose this capability over MCP as a tool (e.g., semantic_search_code tool). GitHub Discussion

Code Navigation

Another idea is to allow LLMs to traverse abstract syntax trees (ASTs) of a codebase to enable reliable code navigation. This could be packaged as tools like goto_definition, find_all_references, etc., which could be useful for LLMs to get additional code context. GitHub Discussion

Got an idea?

Open up a GitHub discussion!