- Introduced a new test script for the CodexLens LSP tool to validate core functionalities including symbol search, find definition, find references, and get hover. - Created comprehensive documentation for the MCP endpoint design, detailing the architecture, features, and integration with the CCW MCP Manager. - Developed a detailed implementation plan for transitioning to a real LSP server, outlining phases, architecture, and acceptance criteria.
9.1 KiB
CodexLens Real LSP Implementation - Summary
Date: 2026-01-19
Status: Planning Complete, Implementation Ready
Focus: Real LSP Server + VSCode Bridge Integration
✅ Completed Work
1. Planning Documents
a. Main Implementation Plan
File: docs/REAL_LSP_SERVER_PLAN.md
Content:
- Complete architecture design for real LSP server
- 5-phase implementation plan
- Multi-language support strategy (TypeScript, Python, Go, Rust, Java, C/C++)
- Language server multiplexer design
- Position tolerance feature (cclsp-like)
- MCP integration layer
Key Decisions:
- Use
pyglslibrary for LSP implementation - Support 6+ language servers via multiplexer
- Implement position tolerance for fuzzy AI-generated positions
- Three integration paths: Standalone LSP, VSCode Bridge, Index-based fallback
b. VSCode Bridge Implementation (Appendix A)
Included in: docs/REAL_LSP_SERVER_PLAN.md
Content:
- HTTP-based VSCode extension bridge
- MCP tool integration (vscode_lsp)
- Complete architecture diagram
- API endpoint specifications
- Comparison with standalone LSP approach
2. VSCode Bridge Extension
Created Files:
-
ccw-vscode-bridge/package.json- VSCode extension manifest
- Dependencies: @types/node, @types/vscode, typescript
-
ccw-vscode-bridge/tsconfig.json- TypeScript compilation configuration
- Target: ES2020, CommonJS modules
-
ccw-vscode-bridge/src/extension.ts- HTTP server on port 3457
- 4 API endpoints:
POST /get_definitionPOST /get_referencesPOST /get_hoverPOST /get_document_symbols
- VSCode API integration via
vscode.commands.executeCommand
-
ccw-vscode-bridge/.vscodeignore- Build artifact exclusion rules
-
ccw-vscode-bridge/README.md- Installation & usage instructions
- API endpoint documentation
Features:
- ✅ Real-time VSCode LSP integration
- ✅ HTTP REST API for external tools
- ✅ CORS support
- ✅ Error handling
- ✅ Automatic VSCode feature detection
3. CCW MCP Tool
Created File:
ccw/src/tools/vscode-lsp.ts
Features:
- ✅ 4 LSP actions: get_definition, get_references, get_hover, get_document_symbols
- ✅ Zod schema validation
- ✅ HTTP client with timeout (10s)
- ✅ Connection retry logic
- ✅ Comprehensive error messages
Parameters:
action(required): LSP action typefile_path(required): Absolute file pathline(optional): Line number (1-based)character(optional): Character position (1-based)
Integration:
Modified File: ccw/src/tools/index.ts
- ✅ Imported
vscodeLspMod - ✅ Registered tool via
registerTool(toLegacyTool(vscodeLspMod)) - ✅ Available in MCP server tool list
📋 Implementation Architecture
Three Integration Paths
Path 1: VSCode Bridge (✅ Implemented)
─────────────────────────────────────
Claude Code → vscode_lsp MCP tool → HTTP → ccw-vscode-bridge → VSCode API → Language Servers
Path 2: Standalone LSP Server (📝 Planned)
──────────────────────────────────────────
Any LSP Client → codexlens-lsp → Language Server Multiplexer → Language Servers
Path 3: Index-Based (✅ Existing)
─────────────────────────────────
Claude Code → codex_lens_lsp → Python API → SQLite Index → Cached Results
Smart Routing Strategy
// Priority: VSCode Bridge → Standalone LSP → Index-based
if (vscodeBridgeAvailable) {
return useVSCodeBridge();
} else if (standaloneLSPAvailable) {
return useStandaloneLSP();
} else {
return useIndexBased();
}
🎯 Next Steps
Immediate Actions (Phase 1)
-
Test VSCode Bridge
cd ccw-vscode-bridge npm install npm run compile # Press F5 in VSCode to launch extension -
Test vscode_lsp Tool
# Start CCW MCP server cd ccw npm run mcp # Test via MCP client { "tool": "vscode_lsp", "arguments": { "action": "get_definition", "file_path": "/path/to/file.ts", "line": 10, "character": 5 } } -
Document Testing Results
- Create test reports
- Benchmark latency
- Validate accuracy
Medium-Term Goals (Phase 2-3)
-
Implement Standalone LSP Server
- Setup
codexlens-lspproject structure - Implement language server multiplexer
- Add core LSP handlers
- Setup
-
Add Position Tolerance
- Implement fuzzy position matching
- Test with AI-generated positions
-
Create Integration Tests
- Unit tests for each component
- E2E tests with real language servers
- Performance benchmarks
Long-Term Goals (Phase 4-5)
-
MCP Context Enhancement
- Integrate LSP results into MCP context
- Hook system for Claude Code
-
Advanced Features
- Code actions
- Formatting
- Rename support
-
Production Deployment
- Package VSCode extension to .vsix
- Publish to VS Code marketplace
- Create installation scripts
📊 Project Status Matrix
| Component | Status | Files | Tests | Docs |
|---|---|---|---|---|
| VSCode Bridge Extension | ✅ Complete | 5/5 | ⏳ Pending | ✅ Complete |
| vscode_lsp MCP Tool | ✅ Complete | 1/1 | ⏳ Pending | ✅ Complete |
| Tool Registration | ✅ Complete | 1/1 | N/A | N/A |
| Planning Documents | ✅ Complete | 2/2 | N/A | ✅ Complete |
| Standalone LSP Server | 📝 Planned | 0/8 | 0/12 | ✅ Complete |
| Integration Tests | 📝 Planned | 0/3 | 0/15 | ⏳ Pending |
🔧 Development Environment
Prerequisites
For VSCode Bridge:
- Node.js ≥ 18
- VSCode ≥ 1.80
- TypeScript ≥ 5.0
For Standalone LSP:
- Python ≥ 3.8
- pygls ≥ 1.3.0
- Language servers:
- TypeScript:
npm i -g typescript-language-server - Python:
pip install python-lsp-server - Go:
go install golang.org/x/tools/gopls@latest - Rust:
rustup component add rust-analyzer
- TypeScript:
Installation Commands
# VSCode Bridge
cd ccw-vscode-bridge
npm install
npm run compile
# CCW MCP (already setup)
cd ccw
npm install
# Future: Standalone LSP
cd codex-lens
pip install -e ".[lsp]"
📖 Documentation Index
| Document | Purpose | Status |
|---|---|---|
REAL_LSP_SERVER_PLAN.md |
Complete implementation plan | ✅ |
LSP_INTEGRATION_PLAN.md |
Original integration strategy | ✅ |
MCP_ENDPOINT_DESIGN.md |
MCP endpoint specifications | ✅ |
IMPLEMENTATION_SUMMARY.md |
This document | ✅ |
ccw-vscode-bridge/README.md |
Bridge usage guide | ✅ |
TESTING_GUIDE.md |
Testing procedures | ⏳ TODO |
DEPLOYMENT_GUIDE.md |
Production deployment | ⏳ TODO |
💡 Key Design Decisions
1. Why Three Integration Paths?
- VSCode Bridge: Easiest setup, leverages VSCode's built-in language servers
- Standalone LSP: IDE-agnostic, works with any LSP client
- Index-based: Fallback for offline or cached queries
2. Why HTTP for VSCode Bridge?
- ✅ Simplest cross-process communication
- ✅ No complex IPC/socket management
- ✅ Easy to debug with curl/Postman
- ✅ CORS support for web-based tools
3. Why Port 3457?
- Unique port unlikely to conflict
- Easy to remember (345-7)
- Same approach as cclsp (uses stdio)
4. Why Not Modify smart_search?
User feedback:
"第一种跟当前的符号搜索没区别哎"
(Method 1 has no difference from current symbol search)
Solution: Implement real LSP server that connects to live language servers, not pre-indexed data.
🚀 Quick Start Guide
Test VSCode Bridge Now
-
Install Extension:
cd ccw-vscode-bridge npm install && npm run compile code --install-extension . -
Reload VSCode:
- Press
Cmd+Shift+P(Mac) orCtrl+Shift+P(Windows) - Type "Reload Window"
- Press
-
Verify Bridge is Running:
curl http://localhost:3457/get_definition \ -X POST \ -H "Content-Type: application/json" \ -d '{"file_path":"/path/to/file.ts","line":10,"character":5}' -
Test via CCW:
// In Claude Code or MCP client await executeTool('vscode_lsp', { action: 'get_definition', file_path: '/absolute/path/to/file.ts', line: 10, character: 5 });
📞 Support & Troubleshooting
Common Issues
Issue: "Could not connect to VSCode Bridge" Solution:
- Ensure VSCode is running
- Check if extension is activated:
Cmd+Shift+P→ "CCW VSCode Bridge" - Verify port 3457 is not in use:
lsof -i :3457
Issue: "No LSP server available" Solution: Open the file in VSCode workspace first
Issue: "File not found" Solution: Use absolute paths, not relative
📝 Change Log
2026-01-19 - Initial Implementation
- Created VSCode Bridge extension (5 files)
- Implemented vscode_lsp MCP tool
- Registered tool in CCW registry
- Completed planning documentation
- Added comprehensive architecture diagrams
Document End