Skip to main content
Glama
sourcegraph-mcp

sourcegraph-mcp

by dalebrubaker

sourcegraph-mcp

Model Context Protocol server for searching code via SourceGraph's GraphQL API. Leverages SourceGraph's indexed symbol search for fast, precise code navigation. Works with both local and cloud SourceGraph instances.

Why Use This?

Search your entire codebase instantly using SourceGraph's indexed search:

  • Lightning Fast: Symbol lookups in <100ms using indexed search

  • Precise: Find exact definitions vs references/usages separately

  • Cost-effective: ~400 tokens per search vs 50k+ tokens loading files

  • Comprehensive: Search across all repos, branches, and languages

Related MCP server: @codesift/mcp

Key Features

🎯 Symbol Search (Indexed)

  • Find Definitions: Locate where functions, classes, methods are declared

  • Find References: See all places where a symbol is used

  • Fast Lookups: Uses SourceGraph's pre-built symbol index

  • Returns: Exact file path, line number, and column position

  • Text Search: Find any text pattern across your codebase

  • Regex Search: Complex pattern matching with full regex support

  • Filters: By repository, file path, language, and more

Installation

pipx install sourcegraph-mcp

This installs the sourcegraph-mcp command globally and handles all dependencies automatically.

Verify Installation

which sourcegraph-mcp
# Should show: /Users/yourusername/.local/bin/sourcegraph-mcp

Configuration

IMPORTANT: Replace the URL and token with your actual SourceGraph instance details.

export SOURCEGRAPH_URL=http://localhost:3370
export SOURCEGRAPH_TOKEN=sgp_your_token_here

Option 2: Config File

Create config.json:

{
  "sourcegraph_url": "http://localhost:3370",
  "access_token": "sgp_your_token_here",
  "timeout": 30
}

Option 3: CLI Arguments

sourcegraph-mcp --url http://localhost:3370 --token sgp_your_token_here

Setup with MCP Clients

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

IMPORTANT: Replace the URL and token with your actual SourceGraph instance details.

{
  "mcpServers": {
    "sourcegraph": {
      "command": "sourcegraph-mcp",
      "env": {
        "SOURCEGRAPH_URL": "http://localhost:3370",
        "SOURCEGRAPH_TOKEN": "sgp_your_token_here"
      }
    }
  }
}

Claude Code

Important: First install with pipx install sourcegraph-mcp, then configure.

IMPORTANT: Replace the URL and token with your actual SourceGraph instance details.

Add to ~/.claude.json:

{
  "mcpServers": {
    "sourcegraph": {
      "command": "sourcegraph-mcp",
      "env": {
        "SOURCEGRAPH_URL": "http://localhost:3370",
        "SOURCEGRAPH_TOKEN": "sgp_your_token_here"
      }
    }
  },
  "permissions": {
    "allow": [
      "mcp__sourcegraph__*"
    ]
  }
}

Note: If sourcegraph-mcp is not in your PATH, use the full path:

"command": "/Users/yourusername/.local/bin/sourcegraph-mcp"

Restart Claude Code and verify with /mcp command.

Option 2: Project-Specific

Create .mcp.json in your project root:

{
  "mcpServers": {
    "sourcegraph": {
      "command": "sourcegraph-mcp",
      "env": {
        "SOURCEGRAPH_URL": "http://localhost:3370",
        "SOURCEGRAPH_TOKEN": "sgp_your_token_here"
      }
    }
  }
}

Then add permissions to .claude/settings.local.json:

{
  "permissions": {
    "allow": [
      "mcp__sourcegraph__find_symbol_definition",
      "mcp__sourcegraph__find_symbol_references",
      "mcp__sourcegraph__search_sourcegraph",
      "mcp__sourcegraph__search_sourcegraph_regex",
      "mcp__sourcegraph__get_sourcegraph_config"
    ]
  },
  "enableAllProjectMcpServers": true,
  "enabledMcpjsonServers": ["sourcegraph"]
}

Important: Permission format must use mcp__servername__toolname with double underscores, not colons.

Note: The permissions section above is specific to Claude Code. Other MCP clients may not require explicit permissions or may use different permission systems.

Other MCP Clients (Cursor, Windsurf, Zed, Cline, etc.)

Most MCP clients use similar configuration. The general pattern is:

  1. Install: pipx install sourcegraph-mcp

  2. Add to your client's MCP config file:

{
  "mcpServers": {
    "sourcegraph": {
      "command": "sourcegraph-mcp",  // or full path: ~/.local/bin/sourcegraph-mcp
      "env": {
        "SOURCEGRAPH_URL": "http://localhost:3370",
        "SOURCEGRAPH_TOKEN": "sgp_your_token_here"
      }
    }
  }
}

Refer to your client's documentation for the config file location.

Community contributions welcome! If you've successfully set this up with another client, please submit a PR with instructions.

Usage

Once configured, your AI assistant can leverage SourceGraph's indexed search:

Symbol Definitions (Fast Lookups)

"Find where the ProcessOrder function is defined"
"Where is the CustomerService class declared?"
"Show me the definition of HandleRequest method"
"Locate the API_KEY constant definition"

Symbol References (Find Usages)

"Find all calls to ProcessOrder"
"Where is CustomerService used?"
"Show me all references to API_KEY"
"Find everywhere HandleRequest is called"
"Search for authentication code"
"Find TODO comments in C# files"
"Show error handling patterns in the api directory"

Available Tools

1. find_symbol_definition

Find where symbols are defined (declarations). Returns exact file path and line number.

Best for:

  • "Where is X defined?"

  • "Go to definition of Y"

  • "Show me the declaration of Z"

Returns:

  • File path

  • Line number

  • Column position

  • Symbol kind (function, class, method, etc.)

2. find_symbol_references

Find where symbols are used (references/calls). Returns all usage locations.

Best for:

  • "Where is X called?"

  • "Find all uses of Y"

  • "Show me references to Z"

Returns:

  • File paths and line numbers for each usage

  • Code context around each reference

3. search_sourcegraph

General text-based code search with full query syntax.

Query syntax:

  • repo:owner/name - Filter by repository

  • file:pattern - Filter by file path

  • lang:language - Filter by programming language

  • case:yes - Case-sensitive search

4. search_sourcegraph_regex

Search using regular expressions for complex pattern matching.

5. get_sourcegraph_config

View current configuration (useful for debugging).

Performance Advantages

Symbol Search (Indexed)

  • ✅ <100ms: Instant lookups using pre-built index

  • ✅ Precise: Distinguishes definitions from references

  • ✅ Scalable: Works across millions of lines of code

  • ✅ Fast: Leverages SourceGraph's Zoekt indexing

  • ✅ Flexible: Full regex and filter support

  • ✅ Comprehensive: Searches across all content

vs Loading Files into Context

  • 400 tokens per search vs 50k+ tokens loading files

  • Instant results vs waiting for file loads

  • Pinpoint accuracy vs reading through entire files

Getting a SourceGraph Token

  1. Navigate to your SourceGraph instance

  2. Go to Settings → Access tokens

  3. Click "Generate new token"

  4. Copy the token (starts with sgp_)

Local Development

# Clone and install
git clone https://github.com/dalebrubaker/sourcegraph-mcp
cd sourcegraph-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

# Test configuration
python test_connection.py

# Run with config file
python server.py

# Run with CLI args
python server.py --url http://localhost:3370 --token sgp_your_token_here

Troubleshooting

"Could not connect to MCP server"

  • Verify SourceGraph is running and accessible

  • Check URL format (include http:// or https://)

  • Test token: curl -H "Authorization: token sgp_..." http://your-url/.api/graphql

  • Verify installation: which sourcegraph-mcp should show the installed path

  • If not in PATH, use full path in config: /Users/yourusername/.local/bin/sourcegraph-mcp

"Command not found"

  • Make sure you installed with pipx install sourcegraph-mcp

  • Check if ~/.local/bin is in your PATH: echo $PATH | grep .local/bin

  • Try using the full path in your config instead of just sourcegraph-mcp

"No symbols found"

  • Symbol search requires SourceGraph's symbol indexing to be enabled

  • Check if your repositories have been indexed: Settings → Repositories → Indexing

  • Symbol indexing may take time for large repos

  • Try general code search as a fallback

Testing Your Setup

# Test connection and both search types
python test_connection.py

Example Queries

Finding Definitions

User: "Find where the LowerBound method is defined with file name and line number"

MCP Response:
## 1. `LowerBound` (method)
**File:** `src/Collections/SortedList.cs`
**Line:** 142
**Position:** Line 142, Column 8
**Repository:** `myorg/core-lib`

Finding References

User: "Show me all places where ProcessOrder is called"

MCP Response:
## 1. `OrderController.cs`
**Repository:** `myorg/api-service`
**URL:** https://sourcegraph.local/...

**Matches:**
- **Line 45:** `var result = await ProcessOrder(orderId);`
- **Line 87:** `return ProcessOrder(order);`

## 2. `OrderProcessor.cs`
...

License

MIT

Contributing

PRs welcome! Please open an issue first to discuss significant changes.

Roadmap

  • Support for batch symbol lookups

  • Cached symbol results for faster repeated queries

  • Structural search support

  • Commit and diff search tools

  • Multi-repo symbol search optimization

Available Tools

5 tools
find_symbol_definitionA

Find where a symbol (function, class, method, variable, constant) is DEFINED in the codebase. Returns the exact file path and line number where the symbol is declared.

This uses SourceGraph's indexed symbol search for fast lookups. Perfect for 'go to definition' or 'where is X defined?' queries.

Returns: File path, line number, and column position of the definition.

Examples:

  • Find where the ProcessOrder function is defined

  • Locate the definition of class CustomerService

  • Find where variable API_KEY is declared

  • Show me where the HandleRequest method is defined

Tips:

  • Use symbol_kind filter to narrow results (function, class, method, variable)

  • Use repo_filter to search specific repositories (e.g., 'repo:myorg/myrepo')

  • Searches are case-sensitive by default

Note: To find where a symbol is USED (not defined), use find_symbol_references instead.

Inputs: symbol_name (required), symbol_kind, repo_filter, max_results.

find_symbol_referencesA

Find all places where a symbol is USED/REFERENCED in the codebase. Returns file paths and line numbers for each usage.

This searches for actual code references, not the definition. Use this to see where a function is called, a class is instantiated, a method is invoked, or a variable is accessed.

Returns: File paths and line numbers showing code context for each reference.

Examples:

  • Find all calls to the ProcessOrder function

  • See where CustomerService class is instantiated

  • Find all references to API_KEY variable

  • Show me everywhere HandleRequest is called

Tips:

  • Use repo_filter to search specific repositories

  • Use file_filter to narrow down to specific files or directories

  • Add lang:csharp (or other language) to filter by programming language

Note: To find where a symbol is DEFINED, use find_symbol_definition instead.

Inputs: symbol_name (required), repo_filter, file_filter, lang_filter, +1 more.

get_sourcegraph_configA

Get current SourceGraph MCP server configuration. Shows the configured URL and whether an access token is set. Useful for debugging connection issues.

Inputs: no named parameters.

search_sourcegraphA

General code search across your SourceGraph instance. Use this for text-based searches, finding patterns, or when you need to search for more than just symbol definitions.

Supports full SourceGraph query syntax including:

  • repo:owner/name - Filter by repository

  • file:pattern - Filter by file path

  • lang:language - Filter by programming language

  • case:yes - Case-sensitive search

  • Regular expressions and literals

Examples:

  • 'PlaceOrder lang:csharp' - Find PlaceOrder in C# files

  • 'repo:myorg/myrepo TODO' - Find TODOs in a specific repo

  • 'file:.py$ import pandas' - Find pandas imports in Python files

  • 'error handling lang:java' - Search for error handling in Java

Note: For finding symbol definitions or references specifically, use find_symbol_definition or find_symbol_references for faster, more accurate results.

Inputs: query (required), max_results.

search_sourcegraph_regexA

Search code using regular expressions. Automatically sets patternType to 'regexp' for regex queries. Use this for complex pattern matching.

Examples:

  • 'class \w+Service' - Find all service classes

  • 'def (get|set)_\w+' - Find getter/setter methods

  • 'TODO|FIXME|HACK' - Find code comments

  • 'function \w+(.*) {' - Find function declarations

Tips:

  • Use filters parameter for additional constraints

  • Combine with repo:, file:, and lang: filters

  • Remember to escape backslashes in regex patterns

Inputs: pattern (required), filters, max_results.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool targets a distinct operation: symbol definition, symbol references, general text search, regex search, and server configuration. Even the two search tools are clearly differentiated by pattern type, minimizing ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with underscores (e.g., find_symbol_definition, search_sourcegraph). The naming is descriptive and predictable across the set.

    Tool Count5/5

    With 5 tools, the set is compact yet covers the core functionalities of code search: definition lookup, reference lookup, general search, regex search, and configuration. No redundancy or bloat.

    Completeness5/5

    The tool surface comprehensively covers the primary use cases for a code search server: locating symbol definitions, finding usages, performing text/regex searches, and retrieving config. No obvious missing operations for the intended domain.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that provides code search capabilities for AI tools and LLMs using Zoekt, allowing for searching across codebases with advanced query syntax and content fetching.
      23
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server exposing Sourcegraph's AI-enhanced code search capabilities to coding agents, enabling advanced code search, repository discovery, and content fetching.
      MIT