← MCP servers · sourcebot-dev

Sourcebot

BLOCKgrade F · trust 42/100

Sourcebot is a self-hosted tool that helps humans and agents understand your codebase.

code intelligencecode searchfair sourcesourcebot

Overview

From the repository's own README, as read at the audited commit.

<div align="center"><picture>  <source media="(prefers-color-scheme: dark)" srcset=".github/images/logo_dark.png">  <img height="150" src=".github/images/logo_light.png"></picture></div><div align="center">   <div>      <h3>         <a href="https://docs.sourcebot.dev">            <strong>Self Host</strong>         </a> ·          <a href="https://app.sourcebot.dev">            <strong>Public Demo</strong>         </a>      </h3>   </div>   <div>      <a href="https://docs.sourcebot.dev/"><strong>Docs</strong></a> ·      <a href="https://github.com/sourcebot-dev/sourcebot/issues/459"><strong>Roadmap</strong></a> ·      <a href="https://github.com/sourcebot-dev/sourcebot/issues/new?template=bug_report.yml"><strong>Report Bug</strong></a> ·      <a href="https://github.com/sourcebot-dev/sourcebot/issues/new?template=feature_request.md"><strong>Feature Request</strong></a> ·      <a href="https://www.sourcebot.dev/changelog"><strong>Changelog</strong></a>   </div>   <br/>   <div>   </div></div><p align="center">  <a href="mailto:[email protected]"><img src="https://img.shields.io/badge/Email%20Us-brightgreen" /></a>  <a href="https://github.com/sourcebot-dev/sourcebot/actions/workflows/release-prod.yml"><img src="https://img.shields.io/github/actions/workflow/status/sourcebot-dev/sourcebot/release-prod.yml"/><a>  <a href="https://github.com/sourcebot-dev/sourcebot/stargazers"><img src="https://img.shields.io/github/stars/sourcebot-dev/sourcebot" /></a></p><p align="center"></p>Sourcebot is a self-hosted tool that helps you understand your codebase. - **Ask Sourcebot:** Ask questions about your codebase and have Sourcebot provide detailed answers grounded with inline citations.- **Code search:** Search and navigate across all your repos and branches, no matter where they’re hosted.Try it out in our [public demo](https://app.sourcebot.dev)!https://github.com/user-attachments/assets/ed66a622-e38f-4947-a531-86df1e1e0218# Features![Sourcebot Features](https://github.com/us

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add web --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env AUTH_SECRET=${AUTH_SECRET} --env AUTH_URL=${AUTH_URL} --env EXPERIMENT_DISABLE_API_KEY_CREATION_FOR_NON_ADMIN_USERS=${EXPERIMENT_DISABLE_API_KEY_CREATION_FOR_NON_ADMIN_USERS} -- npx -y @sourcebot/[email protected]
claude-desktop
{
  "mcpServers": {
    "web": {
      "command": "npx",
      "args": [
        "-y",
        "@sourcebot/[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "AUTH_SECRET": "${AUTH_SECRET}",
        "AUTH_URL": "${AUTH_URL}",
        "EXPERIMENT_DISABLE_API_KEY_CREATION_FOR_NON_ADMIN_USERS": "${EXPERIMENT_DISABLE_API_KEY_CREATION_FOR_NON_ADMIN_USERS}"
      }
    }
  }
}

Exposed tools (58) 48 read · 9 write · 1 destructive

Blast radius: 1 tool can delete or overwrite. An agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
AuditreadAudit
BitbucketreadBitbucket Cloud or Bitbucket Data Center
ConnectionsreadCode host connection metadata.
Deploywrite
DisabledreadPersonal review.
EverythingreadIndex every project visible to the token on this self-hosted instance
FilesreadInclude a file in the agent\
ForeignreadShared audit.
GitreadGit history, diff, and file content endpoints.
GitHubreadgithub.com, GitHub Enterprise Server, or GitHub Enterprise Cloud
GitLabreadgitlab.com, GitLab Self Managed, or GitLab Dedicated
GiteareadGitea Cloud or Gitea self-hosted
GroupsreadIndex every project each chosen group owns
ManualreadEdited description
OpenAI-compatiblereadself-hosted / custom endpoint
OrganizationsreadIndex every repo each chosen org owns
ProjectsreadIndex every repo in each chosen project
RenamedreadEdited description
RepositoriesreadRepository listing and metadata endpoints.
ReviewreadReview risky changes.
SkillreadDescription.
Summarizeread
SyncedreadPersonal review.
SystemreadSystem health and version endpoints.
TranslatereadTranslate text
UserreadUser Account
UsersreadIndex every repo each chosen user owns
WorkspacesreadIndex every repo each chosen workspace owns
X-Sourcebot-Api-KeyreadHeader of the form
ask_codebaseread
cached_toolreadCached tool
catalog.query-catalog-entitiesreadQuery catalog entities
create_issuewriteCreate issue
delete_issuedestructiveDelete an issue
fake_toolreadA fake tool.
foo-barreadHyphenated tool
foo_barreadUnderscored tool
list_issuesreadList issues
list_language_modelsread
live_toolreadLive tool
lookupreadFind alert(1) issues quickly
mcp_github__list_reposreadList GitHub repositories
mcp_github__search_reposreadSearch repositories on GitHub
mcp_jira__create_ticketwriteCreate a new Jira ticket
mcp_linear__create_issuewriteCreate a new issue
mcp_linear__list_issuesreadList issues
mcp_linear__save_commentwriteSave a comment on a Linear issue
mcp_linear__save_issuewriteSave an issue
mcp_linear__update_issuewriteUpdate an existing issue
mcp_pg__run_querywriteRun a database query
mcp_slack__send_messagewriteSend a message to a Slack channel
new_toolreadNewly discovered
searchreadFind issues
search_reposreadSearch repos
toolreadx
tool1readTool 1
tool2readTool 2
xAIreadGrok

Details

Source
sourcebot-dev/sourcebot
npm
@sourcebot/web@0.1.0
Transports
streamable-http
Credentials it reads
ANTHROPIC_API_KEYAUTH_SECRETAUTH_URLEXPERIMENT_DISABLE_API_KEY_CREATION_FOR_NON_ADMIN_USERSSCIM_TOKENSENTRY_AUTH_TOKENSETUP_TEST_CREDENTIAL_DIRSETUP_TEST_DEV_TOKENSOURCEBOT_API_KEY
License
NOASSERTION
Stars
3,937 · pushed 0d ago

Trust audit

Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (11 observation(s))
Network
declared (7 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.devcontainer/docker-compose.yml:16
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/postgres
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.env.development:3
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/postgres"
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
Coastfile:25
install = ["cd /workspace && (test -f node_modules/.yarn-state.yml || DATABASE_URL=postgresql://postgres:[email protected]:5432/postgres make yarn)", "cd /workspace && test -f config.json 
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/backend/src/ee/tokenRefresh.ts:162
logger.debug(`Refreshing OAuth token for account ${account.id} (${account.providerId})...`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/backend/src/ee/tokenRefresh.ts:170
logger.error(`OAuth token refresh failed for account ${account.id} (${account.providerId}): ${message}`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/backend/src/ee/tokenRefresh.ts:194
logger.debug(`Successfully refreshed OAuth token for account ${account.id} (${account.providerId}).`);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/web/src/actions.ts:347
logger.warn(`Failed to get token for connection ${connection.id}:`, error);
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
packages/web/src/ee/features/chat/mcp/mcpClientFactory.ts:82
logger.warn(`Access token for MCP server ${serverName} is expired and has no refresh token. User ${userId} needs to re-authorize.`);
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/actions/check-prisma-migrations/action.yml:76
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/sourcebot
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/actions/check-prisma-migrations/action.yml:84
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/sourcebot
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/backend/src/ee/tokenRefresh.test.ts:303
token: 'not-an-oauth-token-response',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/backend/src/utils.test.ts:75
token: 'azure-devops-test-token',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/backend/src/utils.test.ts:78
password: 'azure-devops-test-token',
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_issue
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.env.development
.env.development
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.trivyignore
.trivyignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.yarnrc.yml
.yarnrc.yml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/db/tools/scripts/inject-audit-data.ts:2
import { PrismaClient } from "../../dist";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/db/tools/scripts/inject-chat-data.ts:2
import { PrismaClient } from "../../dist";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/db/tools/scripts/inject-repo-data.ts:2
import { PrismaClient } from "../../dist";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/db/tools/scripts/inject-user-data.ts:2
import { PrismaClient } from "../../dist";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/db/tools/scripts/migrate-duplicate-connections.ts:2
import { PrismaClient } from "../../dist";
LOWNetwork egress · net.env_exfil · CWE-200, CWE-319
packages/setupWizard/tests/e2e/liveDeployment.mjs:157
'.env' ... fetch(
Why it matters. reads secrets in the same file that sends data out
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/backend/src/git.test.ts:61
const requestUrl = new URL(request.url ?? '/', 'http://127.0.0.1');

Gates applied: no_behavioural_pass.

Audited 2026-09-15 · audit v0.4.0 · source sha 21920dda1711 · full audit: observations/trust-audit/mcp-server/sourcebot-dev__sourcebot.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-1521920dda1711BLOCKF42first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the Sourcebot MCP server?

Sourcebot is a self-hosted tool that helps humans and agents understand your codebase.

What tools does Sourcebot expose?

58 in total: 48 read-only, 9 that write, and 1 that can delete or overwrite (delete_issue). Every one is listed on this page with its risk.

Is Sourcebot safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (42/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does Sourcebot need?

It reads ANTHROPIC_API_KEY, AUTH_SECRET, AUTH_URL, EXPERIMENT_DISABLE_API_KEY_CREATION_FOR_NON_ADMIN_USERS, SCIM_TOKEN, SENTRY_AUTH_TOKEN, SETUP_TEST_CREDENTIAL_DIR, SETUP_TEST_DEV_TOKEN and SOURCEBOT_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Sourcebot run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as @sourcebot/web at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (21920dda1711), read on 2026-09-15. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-15 · job trust-audit-2026-09-15