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.
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
- 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
pipx install sourcegraph-mcpThis installs the sourcegraph-mcp command globally and handles all dependencies automatically.
which sourcegraph-mcp
# Should show: /Users/yourusername/.local/bin/sourcegraph-mcpIMPORTANT: Replace the URL and token with your actual SourceGraph instance details.
export SOURCEGRAPH_URL=http://localhost:3370
export SOURCEGRAPH_TOKEN=sgp_your_token_hereCreate config.json:
{
"sourcegraph_url": "http://localhost:3370",
"access_token": "sgp_your_token_here",
"timeout": 30
}sourcegraph-mcp --url http://localhost:3370 --token sgp_your_token_hereEdit ~/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"
}
}
}
}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.
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.
Most MCP clients use similar configuration. The general pattern is:
- Install:
pipx install sourcegraph-mcp - 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.
Once configured, your AI assistant can leverage SourceGraph's indexed search:
"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"
"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"
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.)
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
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
Search using regular expressions for complex pattern matching.
View current configuration (useful for debugging).
- ✅ <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
- 400 tokens per search vs 50k+ tokens loading files
- Instant results vs waiting for file loads
- Pinpoint accuracy vs reading through entire files
- Navigate to your SourceGraph instance
- Go to Settings → Access tokens
- Click "Generate new token"
- Copy the token (starts with
sgp_)
# 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- 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-mcpshould show the installed path - If not in PATH, use full path in config:
/Users/yourusername/.local/bin/sourcegraph-mcp
- Make sure you installed with
pipx install sourcegraph-mcp - Check if
~/.local/binis in your PATH:echo $PATH | grep .local/bin - Try using the full path in your config instead of just
sourcegraph-mcp
- 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
# Test connection and both search types
python test_connection.pyUser: "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`
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`
...
MIT
PRs welcome! Please open an issue first to discuss significant changes.
- 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