sourcegraph-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sourcegraph-mcp find definitions of function parseJSON"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
🔍 Code Search
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
Quick Start (with pipx - Recommended)
pipx install sourcegraph-mcpThis installs the sourcegraph-mcp command globally and handles all dependencies automatically.
Verify Installation
which sourcegraph-mcp
# Should show: /Users/yourusername/.local/bin/sourcegraph-mcpConfiguration
IMPORTANT: Replace the URL and token with your actual SourceGraph instance details.
Option 1: Environment Variables (Recommended)
export SOURCEGRAPH_URL=http://localhost:3370
export SOURCEGRAPH_TOKEN=sgp_your_token_hereOption 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_hereSetup 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.
Option 1: User-Wide (Recommended - No Permission Prompts)
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:
Install:
pipx install sourcegraph-mcpAdd 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"General Code Search
"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 repositoryfile:pattern- Filter by file pathlang:language- Filter by programming languagecase: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
Text Search
✅ 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
Navigate to your SourceGraph instance
Go to Settings → Access tokens
Click "Generate new token"
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_hereTroubleshooting
"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/graphqlVerify installation:
which sourcegraph-mcpshould show the installed pathIf 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-mcpCheck if
~/.local/binis in your PATH:echo $PATH | grep .local/binTry 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.pyExample 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 toolsfind_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 repositoryfile:pattern- Filter by file pathlang:language- Filter by programming languagecase:yes- Case-sensitive searchRegular 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
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Repository knowledge graph MCP server for codebase understanding and debugging.
MCP server for siGit (sigit.si): browse repos, search code, manage PRs/issues, web search.
An MCP server for search and retrieval over a local LanceDB database
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn 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.23MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for local-first lexical code search, providing tools for searching code, finding symbols, and reading chunks from indexed repositories.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server exposing Sourcegraph's AI-enhanced code search capabilities to coding agents, enabling advanced code search, repository discovery, and content fetching.MIT
- AlicenseAqualityBmaintenanceMCP server for semantic code search with AST-aware chunking, hybrid vectors, and query syntax.121Apache 2.0