@sourcebot/mcp
v1.0.15
Published
[](https://sourcebot.dev) [](https://github.com/sourcebot-dev/sourcebot) [ 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 theSOURCEBOT_HOSTurl. 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.
Install
@sourcebot/mcpinto your MCP client:Go to:
Settings->Cursor Settings->MCP->Add new global MCP serverPaste the following into your
~/.cursor/mcp.jsonfile. 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" } } } }Go to:
Windsurf Settings->Cascade->Add Server->Add Custom ServerPaste the following into your
mcp_config.jsonfile:{ "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" } } } }Add the following to your .vscode/mcp.json file:
{ "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" } } } }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@latestAdd 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
- Tell your LLM to
use sourcebotwhen prompting.
For a more detailed guide, checkout the docs.
Available Tools
search_code
Searches for code that matches the provided search query as a substring by default, or as a regular expression if useRegex is true.
| Name | Required | Description |
|:----------------------|:---------|:----------------------------------------------------------------------------------------------------------------------------------|
| query | yes | The search pattern to match against code contents. Do not escape quotes in your query. |
| useRegex | no | Whether to use regular expression matching. When false, substring matching is used (default: false). |
| filterByRepos | no | Scope the search to specific repositories. |
| filterByLanguages | no | Scope the search to specific languages. |
| filterByFilepaths | no | Scope the search to specific filepaths. |
| caseSensitive | no | Whether the search should be case sensitive (default: false). |
| includeCodeSnippets | no | Whether to include code snippets in the response (default: false). |
| ref | no | Commit SHA, branch or tag name to search on. If not provided, defaults to the default branch. |
| maxTokens | no | The maximum number of tokens to return (default: 10000). Higher values provide more context but consume more tokens. |
list_repos
Lists repositories indexed by Sourcebot with optional filtering and pagination.
| Name | Required | Description |
|:------------|:---------|:--------------------------------------------------------------------------------|
| query | no | Filter repositories by name (case-insensitive). |
| page | no | Page number for pagination (min 1, default: 1). |
| perPage | no | Results per page for pagination (min 1, max 100, default: 30). |
| sort | no | Sort repositories by 'name' or 'pushed' (most recent commit). Default: 'name'. |
| direction | no | Sort direction: 'asc' or 'desc' (default: 'asc'). |
read_file
Reads the source code for a given file.
| Name | Required | Description |
|:-------|:---------|:---------------------------------------------------------------------------------------------------------------|
| repo | yes | The repository name. |
| path | yes | The path to the file. |
| ref | no | Commit SHA, branch or tag name to fetch the source code for. If not provided, uses the default branch. |
list_commits
Get a list of commits for a given repository.
| Name | Required | Description |
|:----------|:---------|:--------------------------------------------------------------------------------------------------------------------------------------|
| repo | yes | The name of the repository to list commits for. |
| query | no | Search query to filter commits by message content (case-insensitive). |
| since | no | Show commits more recent than this date. Supports ISO 8601 (e.g., '2024-01-01') or relative formats (e.g., '30 days ago'). |
| until | no | Show commits older than this date. Supports ISO 8601 (e.g., '2024-12-31') or relative formats (e.g., 'yesterday'). |
| author | no | Filter commits by author name or email (case-insensitive). |
| ref | no | Commit SHA, branch or tag name to list commits of. If not provided, uses the default branch. |
| page | no | Page number for pagination (min 1, default: 1). |
| perPage | no | Results per page for pagination (min 1, max 100, default: 50). |
list_language_models
Lists the available language models configured on the Sourcebot instance. Use this to discover which models can be specified when calling ask_codebase.
This tool takes no parameters.
ask_codebase
Ask a natural language question about the codebase. This tool uses an AI agent to autonomously search code, read files, and find symbol references/definitions to answer your question. Returns a detailed answer in markdown format with code references, plus a link to view the full research session in the Sourcebot web UI.
| Name | Required | Description |
|:----------------|:---------|:-----------------------------------------------------------------------------------------------------------------------------------------------|
| query | yes | The query to ask about the codebase. |
| repos | no | The repositories that are accessible to the agent during the chat. If not provided, all repositories are accessible. |
| languageModel | no | The language model to use for answering the question. Object with provider and model. If not provided, defaults to the first model in the config. Use list_language_models to see available options. |
Supported Code Hosts
Sourcebot supports the following code hosts:
| Don't see your code host? Open a feature request.
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
