MCP server by 1baltun
dev-toolkit-mcp
All-in-one MCP server for Zed IDE — brings Windsurf/Cursor-like intelligence to Zed.
A single MCP server that gives Zed's AI agent superpowers: codebase indexing, smart file reading, persistent memory, git awareness, and web search — all without leaving the editor.
Why?
Zed is fast and beautiful, but its AI agent lacks the deep codebase awareness that Windsurf and Cursor have built-in. The built-in read_file tool struggles with large files, there's no persistent memory between sessions, and no codebase-wide search.
dev-toolkit-mcp fills these gaps with 24 tools in one lightweight MCP server.
Features
🔍 Codebase Indexer (7 tools)
Scans your entire project and builds an in-memory index of files, symbols, imports, and dependencies — like Windsurf's Indexing Engine.
| Tool | Description |
|------|-------------|
| index_project | Scan & index entire project (files, symbols, imports) |
| project_map | File tree with line counts and symbol stats |
| find_symbol | Find where a symbol is defined AND used across codebase |
| find_related | Show import/dependency graph for a file |
| search_codebase | Regex search across all indexed files |
| file_dependencies | Full dependency tree (configurable depth) |
| find_widgets | Flutter-specific: find all widgets and their state classes |
📖 Smart File Reader (4 tools)
Reads large files intelligently — never dumps 2000 lines into context.
| Tool | Description |
|------|-------------|
| file_info | File size, line count, and structure (classes/functions with line numbers) |
| read_lines | Read specific line range (max 500 per call) |
| search_in_file | Search within a file with surrounding context |
| read_function | Extract a complete function/class by name (brace-matched) |
🧠 Persistent Memory (4 tools)
Windsurf-style memory that survives across sessions. Stores project knowledge as JSON files.
| Tool | Description |
|------|-------------|
| memory_save | Save a note (tech stack, conventions, decisions, known issues) |
| memory_load | Load all memories for a project — call at session start |
| memory_delete | Delete a specific memory |
| memory_list | List all projects with saved memories |
🌿 Git Awareness (5 tools)
Full git context without leaving the agent panel.
| Tool | Description |
|------|-------------|
| git_status | Branch, staged/unstaged/untracked files, recent commits |
| git_diff | Diff: staged, unstaged, between branches, or specific file |
| git_log_file | Commit history for a specific file |
| git_blame | Who changed what — full or line range |
| git_branches | All branches with last commit info |
🌐 Web Search & Docs (3 tools)
Search documentation, fetch web pages, find packages.
| Tool | Description |
|------|-------------|
| search_web | DuckDuckGo web search (no API key needed) |
| fetch_url | Fetch & extract readable text from any URL |
| search_pubdev | Search pub.dev for Dart/Flutter packages |
Installation
Prerequisites
- Node.js >= 18.0.0
- Zed Editor
Setup
# 1. Clone or download
git clone https://github.com/YOUR_USERNAME/dev-toolkit-mcp.git
cd dev-toolkit-mcp
# 2. Install dependencies
npm install
# 3. Note the full path to index.mjs — you'll need it for Zed config
pwd
Configure Zed
Add to your Zed settings.json (Ctrl+, or Cmd+,):
{
"context_servers": {
"dev-toolkit": {
"command": {
"path": "node",
"args": ["/FULL/PATH/TO/dev-toolkit-mcp/index.mjs"],
"env": {}
}
}
}
}
Windows path example:
"args": ["C:\\Users\\yourname\\dev-toolkit-mcp\\index.mjs"]
Auto-approve tools (optional)
Add to the agent.tool_permissions.tools section in your settings:
"mcp:dev-toolkit:index_project": { "default": "allow" },
"mcp:dev-toolkit:project_map": { "default": "allow" },
"mcp:dev-toolkit:find_symbol": { "default": "allow" },
"mcp:dev-toolkit:find_related": { "default": "allow" },
"mcp:dev-toolkit:search_codebase": { "default": "allow" },
"mcp:dev-toolkit:file_dependencies": { "default": "allow" },
"mcp:dev-toolkit:find_widgets": { "default": "allow" },
"mcp:dev-toolkit:file_info": { "default": "allow" },
"mcp:dev-toolkit:read_lines": { "default": "allow" },
"mcp:dev-toolkit:search_in_file": { "default": "allow" },
"mcp:dev-toolkit:read_function": { "default": "allow" },
"mcp:dev-toolkit:memory_save": { "default": "allow" },
"mcp:dev-toolkit:memory_load": { "default": "allow" },
"mcp:dev-toolkit:memory_delete": { "default": "allow" },
"mcp:dev-toolkit:memory_list": { "default": "allow" },
"mcp:dev-toolkit:git_status": { "default": "allow" },
"mcp:dev-toolkit:git_diff": { "default": "allow" },
"mcp:dev-toolkit:git_log_file": { "default": "allow" },
"mcp:dev-toolkit:git_blame": { "default": "allow" },
"mcp:dev-toolkit:git_branches": { "default": "allow" },
"mcp:dev-toolkit:search_web": { "default": "allow" },
"mcp:dev-toolkit:fetch_url": { "default": "allow" },
"mcp:dev-toolkit:search_pubdev": { "default": "allow" }
Add Rules File (recommended)
Copy the .rules file to your project root. This teaches the AI agent how to use the tools effectively:
cp .rules /path/to/your/project/.rules
Usage
Session Start Ritual
The .rules file instructs the agent to do this automatically at the start of each session:
memory_load→ restore project context from previous sessionsindex_project→ scan the codebase (cached for 5 minutes)git_status→ see current branch and changes
Example Prompts
# Codebase exploration
"Show me the project structure"
"Find where UserModel is defined and used"
"What widgets are in the auth module?"
# Smart file reading
"Show me the build method in HomeScreen"
"Search for all TODO comments in the project"
# Git awareness
"What files changed since last commit?"
"Show me the diff for auth_service.dart"
"Who last modified the login function?"
# Memory
"Remember that this project uses Riverpod for state management"
"What do you remember about this project?"
# Web search
"Search pub.dev for a good date picker package"
"Look up the Flutter Navigator 2.0 API docs"
How It Compares
| Feature | Windsurf | Cursor | Zed (vanilla) | Zed + dev-toolkit | |---------|----------|--------|---------------|-------------------| | Codebase indexing | ✅ Built-in | ✅ Built-in | ❌ | ✅ | | Smart file reading | ✅ Built-in | ✅ Built-in | ⚠️ Struggles with large files | ✅ | | Persistent memory | ✅ Built-in | ❌ | ❌ | ✅ | | Git awareness | ✅ Built-in | ✅ Built-in | ⚠️ Basic | ✅ | | Web search | ✅ Built-in | ✅ Built-in | ❌ | ✅ | | Symbol search | ✅ Built-in | ✅ Built-in | ⚠️ LSP only | ✅ Cross-file | | Widget finder | ❌ | ❌ | ❌ | ✅ Flutter-specific | | Dependency graph | ✅ Built-in | ✅ Built-in | ❌ | ✅ | | Speed | Electron | Electron | 🚀 Native Rust | 🚀 Native Rust | | Price | $15-50/mo | $20/mo | Free | Free |
Architecture
~/.zed-memories/ # Persistent memory storage (JSON per project)
├── my-app.json
└── another-project.json
dev-toolkit-mcp/
└── index.mjs # Single-file MCP server (no build step)
Your Project/
└── .rules # Agent behavior rules
- Zero build step — single
.mjsfile, runs directly with Node.js - No external APIs — web search uses DuckDuckGo HTML (no key needed)
- No database — memory stored as plain JSON files
- Stateless between restarts — index rebuilds on demand (cached 5 min)
Language Support
While the indexer has Flutter/Dart-specific features (find_widgets), the symbol extraction works with:
Dart, TypeScript, JavaScript, Python, Go, Rust, Kotlin, Swift, Java, C/C++, Ruby, PHP, and more.
Troubleshooting
MCP not showing in Zed
- Check the indicator dot in Agent Panel settings — green = active
- Verify the path in
settings.jsonis correct (use absolute paths) - Check Zed logs:
Ctrl+Shift+P→zed: open log
Tools not being called
- Ensure profile is set to "Write" (not "Ask" or "Minimal")
- Mention the tool by name: "Use file_info to check the size of..."
- Some models via OpenRouter have inconsistent tool calling
Windows encoding issues
If you see Unicode errors, wrap the command:
"args": ["C:\\path\\to\\wrapper.bat"]
Where wrapper.bat contains:
@echo off
set PYTHONIOENCODING=utf-8
node "C:\path\to\index.mjs"
Contributing
PRs welcome! Some ideas:
- [ ] Vector search with embeddings for semantic code search
- [ ] Auto-indexing on file save (file watcher)
- [ ] Database MCP tools (SQLite, PostgreSQL)
- [ ] Test runner integration
- [ ] Dockerfile / docker-compose awareness
- [ ] pub.dev package version checker for
pubspec.yaml
License
MIT