blackwell-systems/agent-lsp
AI Agents & AssistantsStateful MCP server over real language servers. 50 tools, 30 CI-verified languages, 20 agent workflows. Persistent sessions keep the index warm across files and projects. Speculative execution simulates edits in memory before writing to disk.
Features
- Stateful runtime over real language servers with single‑step indexing
- Skill layer encoding correct multi‑step operations for refactoring and impact analysis
- Speculative execution tools to preview edits without writing to disk
Recent releases
View all 24 releases →- `get_change_impact` renamed to `blast_radius`.
- Inspector `/lsp-inspect` batch mode (`--top N`) and comparison mode (`--diff`).
- Concurrency analysis adds four new checks across 25 languages.
- Agent DX improvements: unified symbol exploration, safe edit preview/auto‑apply, indexed flags.
Full changelog
Breaking
get_change_impactrenamed toblast_radius. Same handler, same parameters, new name.
Added
Inspector evolution (8 improvements to /lsp-inspect):
- Batch mode (
--top N): directory-level inspection with ranked output - Comparison mode (
--diff): branch-only issue detection - Fix suggestions: exact fix text for every finding
- Confidence tiers: verified/suspected/advisory
- Blast-radius severity calibration using caller counts
- Results persisted to
.agent-lsp/last-inspection.json - MCP resource
inspect://lastfor programmatic access - Inspector now has 12 check types (was 8)
Concurrency analysis (language-agnostic, 25 languages):
- 4 new inspector checks:
unrecovered_concurrent_entry,unchecked_shared_state,channel_never_closed,shared_field_without_sync blast_radius:sync_guardedmetadata on mutex-protected typesfind_callers:cross_concurrentflag traces through goroutine/thread boundaries/lsp-concurrency-auditskill (24th skill): field-level safety report
Agent DX improvements:
explore_symbol: type info + source + callers + refs in one callsafe_apply_edit: preview + auto-apply when net_delta == 0- Auto-diagnostics:
errors_after/warnings_afterin symbol edit responses - Indexed indicator:
indexed: true/falsein blast_radius/find_references/find_symbol - Proactive diagnostic regression notifications via DiagChangeTracker
- Intent aliases:
callers,explore,safe_edit
Other:
blast_radius:scope: "all"for unexported dead code detectionblast_radius:filter: "untested"for coverage gap queries
Summary
24 skills. 65 tools. 12 inspector check types. 30 CI-verified languages.
- Update mcp‑assert fixtures and any hardcoded tool name references to the new intent‑based names.
- When using symbol editing tools, ensure code references are resolved via ResolveSymbolByNamePath for dot‑notation support.
- Renamed tools: get_info_on_location → inspect_symbol
- Renamed tools: get_document_symbols → list_symbols
- Renamed tools: get_workspace_symbols → find_symbol
- Symbol‑level editing via replace_symbol_body, insert_after_symbol, insert_before_symbol, safe_delete_symbol (dot‑notation resolver)
- Proactive server notifications for diagnostics, workspace readiness, process health, and stale references
- Passive mode to connect to an existing language server over TCP
Full changelog
v0.9.0: Symbol Editing, Proactive Notifications, Intent-Based Naming
60 tools. 30 languages. 22 skills. This release reshapes how agents interact with agent-lsp: tools are named for what you want to do, not what LSP calls it; edits happen at the symbol level, not the line level; and the server pushes state changes instead of waiting to be asked.
Breaking: 7 tools renamed
Tool names now match agent intent instead of LSP protocol jargon:
| Old name | New name |
|----------|----------|
| get_info_on_location | inspect_symbol |
| get_document_symbols | list_symbols |
| get_workspace_symbols | find_symbol |
| get_code_actions | suggest_fixes |
| get_references | find_references |
| call_hierarchy | find_callers |
| simulate_edit_atomic | preview_edit |
Go function signatures unchanged. Only the MCP tool name strings are affected. Update your mcp-assert fixtures and any hardcoded tool references.
Symbol-level editing (4 new tools)
Edit code by symbol name instead of line numbers:
replace_symbol_body: "replace function X with this implementation" without knowing coordinatesinsert_after_symbol/insert_before_symbol: add code adjacent to a named symbolsafe_delete_symbol: delete only if zero references (checksfind_referencesfirst, refuses if callers exist)
All four use the shared ResolveSymbolByNamePath resolver that supports dot-notation (MyStruct.Method) and overload indexing (Method[0]). Skills updated: /lsp-edit-symbol now uses replace_symbol_body as the primary path; /lsp-dead-code offers cleanup via safe_delete_symbol.
Proactive server notifications
Four channels push state changes to agents without requiring a tool call:
- Diagnostic changes (2s debounce): "file X now has 3 errors"
- Workspace ready (one-shot): "language server indexing complete"
- Process health (crash/recovery): "language server exited unexpectedly"
- Stale references (3s debounce): "source files changed, cached references may be outdated"
All channels wired automatically on start_lsp. Best-effort delivery; clients that ignore notifications are unaffected.
Passive mode
Connect to an already-running language server via TCP instead of spawning a new process:
{ "tool": "start_lsp", "args": { "root_dir": "/project", "connect": "localhost:9999" } }
Reuses the IDE's warm index with zero duplicate memory. Supported by gopls (gopls -listen=:9999), clangd, and other servers with TCP listen mode.
Provider-agnostic skill awareness
Four-layer reinforcement architecture ensures agents know about the 22 skills regardless of provider:
- Instructions field: every MCP client receives a task-to-tool mapping on connect
- Per-response hints: every tool response suggests the logical next action
- On-demand workflows:
prompts/get("lsp-refactor")loads full instructions - Phase enforcement: errors include recovery guidance when agents skip steps
agent-lsp init now writes provider-specific rules files alongside the MCP config: CLAUDE.md for Claude Code (with "use this, not that" table), .cursor/rules/ for Cursor, .clinerules for Cline, .windsurfrules for Windsurf, GEMINI.md for Gemini CLI.
Also
group_by=symbolonget_diagnostics: group errors by owning function/type- Cross-referencing in tool descriptions: tools suggest related tools
- Confidence assertions: "net_delta 0 means safe to apply without verification"
- Go test path auto-fix: bare
internal/notifynow works (auto-prefixes./) CleanupStaleDaemonswired into daemon startup (found by/lsp-dead-code)- Nil sender crash fixed in notification channels (found by
/lsp-inspect) interface{}toanyacross 85 files- 814 lines of new tests
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.