scope-mcp
A tool that gives your AI coding assistant superpowers. Instead of guessing what your code does, it gets real answers straight from the same engines VS Code uses — so it actually understands functions, classes, types, and where things connect.
No setup. No indexing. Just works.
What's the problem?
When you ask an AI to "find where get_lsp is called," most tools do a text search — like Ctrl+Shift+F. That returns everything named get_lsp: the definition, comments, imports, false positives. You have to dig through the noise.
┌─ grep (text search) ─────────────────────┐
│ project.py:75 def get_lsp(self, lang) │ ← definition (not a call)
│ project.py:110 return await get_lsp(lang)│ ← actual call
│ project.py:117 lsp = await get_lsp(lang) │ ← actual call
│ project.py:81 cfg = LSP_REGISTRY... │ ← noise
│ project.py:109 async def get_lsp_for... │ ← noise
│ 5 results · 3 are noise │
└───────────────────────────────────────────┘
┌─ scope (smart search) ────────────────────┐
│ [call site] project.py:110 │
│ [call site] project.py:117 │
│ 2 results · 0 noise │
└───────────────────────────────────────────┘
Scope asks the compiler instead. You get only what you actually asked for.
→ See the benchmarks — up to 25x fewer tokens, 0% false positives.
What you can do with it
| Instead of digging through files... | Just ask scope... | You get |
|---|---|---|
| Grepping for a function name and filtering out junk | find_references("get_lsp") |
Only the places where it's actually called — no noise |
| Reading a whole file to figure out what's in it | explain_file("server.py") |
A clean summary: language, line count, every function and class |
| Hunting through 50 files to find where an interface is used | implementations("IEventHandler") |
One answer with all the implementations |
| Tracing who calls what by hand | call_hierarchy("validate_token") |
A tree of callers and callees, 3 levels deep |
| Scanning a big diff to see what changed | changed_since("HEAD~3") |
Just the changed files and affected symbols |
How it works
- Scope looks at your project — it spots what languages you're using (Python, TypeScript, Rust, Go, C++) from files like
package.jsonorCargo.toml. - It sets up the brain — launches the same language engine your editor uses (pyright, tsserver, rust-analyzer, gopls). If missing, it installs one automatically.
- Your AI asks, scope answers — every question hits that engine live. No stale data, no sync jobs, no waiting.
AI Assistant (Claude, Codex, etc.) ←→ scope ←→ Language Engine
(pyright, tsserver, etc.)
Setup
Choose the path that fits your workflow:
🚀 Auto-install (recommended)
If you have uv installed, uvx will auto-install scope on first run — no pip install needed.
Claude Desktop
File: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"scope": {
"command": "uvx",
"args": ["scope-mcp", "--project", "."]
}
}
}
Cursor
Settings → Cursor Settings → MCP → Add new MCP server
Name: scope
Type: command
Command: uvx scope-mcp --project .
Windsurf
File: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"scope": {
"command": "uvx",
"args": ["scope-mcp", "--project", "."]
}
}
}
VS Code (GitHub Copilot)
File: .vscode/mcp.json (project-level) or ~/AppData/Roaming/Code/User/globalStorage/github.copilot-chat/mcp.json
{
"servers": {
"scope": {
"command": "uvx",
"args": ["scope-mcp", "--project", "."]
}
}
}
📦 Manual install
pip install scope-mcp
Then use scope instead of uvx scope-mcp in your config:
command: scope
args: ["--project", "."]
🔧 From source
git clone https://github.com/deviprasadshetty-dev/scope.git
cd scope
pip install -e .
Optional extras: rg (ripgrep) for text searches, git for change tracking.
🤖 One-click agent setup
Copy-paste this to your AI coding agent and it will set up scope for you automatically:
Install and configure scope-mcp for this project.
- Check if
uvis installed — if yes, useuvx scope-mcp --project .in the MCP config (it auto-installs on first run). If not,pip install scope-mcpfirst and usescope --project ..- Find my editor's MCP config and add the scope server entry:
- Claude Desktop:
claude_desktop_config.json- Cursor: Cursor Settings → MCP
- Windsurf:
mcp_config.json- VS Code Copilot:
.vscode/mcp.json- Verify — use the
scope_statustool to confirm it's running.Actually do it — don't just show me the config, edit the file.
Languages scope understands
| Language | Detected when it sees... | Scope handles setup |
|---|---|---|
| Python | pyproject.toml · setup.py · requirements.txt |
✅ Installs pyright automatically |
| TypeScript / JavaScript | tsconfig.json · package.json |
✅ Installs tsserver automatically |
| Rust | Cargo.toml |
✅ Installs rust-analyzer automatically |
| Go | go.mod |
✅ Installs gopls automatically |
| C / C++ | CMakeLists.txt · compile_commands.json |
⚠️ You install clangd manually |
Project layout
scope/
├── __init__.py
├── __main__.py # Where scope starts — just runs `scope --project .`
├── server.py # All the commands (tools) your AI can call
├── project.py # Figures out your project and starts language engines
├── lsp_client.py # Talks to language engines behind the scenes
└── lsp_registry.py # Knows which engine to use for each language
Requirements
- Python 3.11 or newer
- ripgrep (optional, for text search)
- git (optional, for change tracking)
License
MIT
Metadata
Release files for scope-mcp 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| scope_mcp-0.1.4.tar.gz | 17.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scope_mcp-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.3 kB
Release files / scope_mcp-0.1.4.tar.gz
| Download URL | scope_mcp-0.1.4.tar.gz |
|---|---|
| Size | 17.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
139a01f86976cae978a778dd1c600c2600143cbaf1aec1eb14aa4c95f3baad31
|
|
BLAKE2b-256 checksum How to use checksums |
a5b1812d9604b7e4dbf1925c581405f49feaa3bebaa7e8e5dc59bbc9a57fd876
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / scope_mcp-0.1.4-py3-none-any.whl
| Download URL | scope_mcp-0.1.4-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9cbd16583e449a885036000bf7c3b92053b9bdba663fa428a61068a019584a87
|
|
BLAKE2b-256 checksum How to use checksums |
6c82a5e331f6dd972992f9faae4862810f4b99763b8b80d1713b9a865557d1bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for scope-mcp 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.