- Notifications
You must be signed in to change notification settings - Fork16
License
mizchi/lsmcp
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A unified MCP (Model Context Protocol) server that provides advanced code manipulation and analysis capabilities for multiple programming languages through Language Server Protocol integration.
- 🌍Multi-Language Support
- 🔍Semantic Code Analysis
- 🤖AI-Optimized
Seeexamples/ for working examples of each supported language configuration.
- Node.js 22.0.0 or higher (required for built-in SQLite support)
# tsgo (reccommended)npm add -D @mizchi/lsmcp @typescript/native-previewnpx @mizchi/lsmcp init -p tsgoclaude mcp add lsmcp npx -- -y @mizchi/lsmcp -p tsgo# with manual --binclaude mcp add lsmcp npx -- -y @mizchi/lsmcp --bin="<lsp-command>"
📖 Example Usage with Claude
1. get_project_overview # Understand the codebase2. search_symbols # Find what you need 3. get_symbol_details # Deep dive into symbolsInitial Exploration:
get_project_overview- First tool to understand any codebaselist_dir- Browse directory structureget_symbols_overview- High-level view of file symbols
Finding Code:
search_symbols- Primary search for functions, classes, interfaceslsp_get_document_symbols- List all symbols in a specific filelsp_get_workspace_symbols- Alternative workspace-wide search
Understanding Code:
get_symbol_details- Complete information in one call (recommended)lsp_get_definitions- Jump to definition (useincludeBody: truefor full code)lsp_find_references- Find all usageslsp_get_hover- Quick type information
Code Quality:
lsp_get_diagnostics- Check for errorslsp_get_code_actions- Get available fixes
Code Modification:
lsp_rename_symbol- Safe renaming across codebaselsp_format_document- Format codereplace_range/replace_regex- Text replacements
1. EXPLORING A NEW CODEBASE
1. mcp__lsmcp__get_project_overview → Understand structure, main components, statistics2. mcp__lsmcp__search_symbols --kind "class" → Find all classes in the project3. mcp__lsmcp__get_symbol_details --symbol "MainClass" → Deep dive into specific class implementation2. INVESTIGATING A BUG
1. mcp__lsmcp__search_symbols --name "problematicFunction" → Locate the function2. mcp__lsmcp__get_symbol_details --symbol "problematicFunction" → Understand its type, implementation, and usage3. mcp__lsmcp__lsp_find_references --symbolName "problematicFunction" → See all places it's called4. mcp__lsmcp__lsp_get_diagnostics --relativePath "path/to/file.ts" → Check for errors3. REFACTORING CODE
1. mcp__lsmcp__search_symbols --name "oldMethodName" → Find the method to refactor2. mcp__lsmcp__get_symbol_details --symbol "oldMethodName" → Understand current implementation and usage3. mcp__lsmcp__lsp_rename_symbol --symbolName "oldMethodName" --newName "newMethodName" → Safely rename across codebase4. mcp__lsmcp__lsp_format_document --relativePath "path/to/file.ts" → Clean up formatting4. ADDING NEW FEATURES
1. mcp__lsmcp__get_project_overview → Understand existing architecture2. mcp__lsmcp__search_symbols --kind "interface" → Find relevant interfaces to implement3. mcp__lsmcp__get_symbol_details --symbol "IUserService" → Understand interface requirements4. mcp__lsmcp__lsp_get_completion --line 50 → Get suggestions while writing new codeFALLBACK TOOLS (USE ONLY WHEN NECESSARY):
⚠️ Read- Only when you need to see non-code files or LSMCP tools fail⚠️ Grep- For text pattern searches in files⚠️ Glob- Only when LSMCP file finding doesn't work⚠️ LS- Only for basic directory listing when LSMCP fails⚠️ Bashcommands - Only for non-code operations or troubleshooting
Use standard tools ONLY in these situations:
- Non-code files: README, documentation, configuration files
- LSMCP tool failures: When LSMCP tools return errors or no results
- Debugging: When troubleshooting why LSMCP tools aren't working
- Special file formats: Files that LSMCP doesn't support
- Quick verification: Double-checking LSMCP results when needed
You have access to project memories stored in.lsmcp/memories/. Use these tools:
mcp__lsmcp__list_memories- List available memory filesmcp__lsmcp__read_memory- Read specific memory contentmcp__lsmcp__write_memory- Create or update memoriesmcp__lsmcp__delete_memory- Delete a memory file
Memories contain important project context, conventions, and guidelines that help maintain consistency.
lsmcp includes built-in presets for popular language servers:
tsgo- TypeScript (Recommended)typescript- typescript-language-serverrust-analyzer- Rust Analysermoonbit- MoonBitfsharp- F# (fsautocomplete)deno- Deno TypeScript/JavaScriptgopls- Go (Official Go language server)hls- Haskell Language Server (requires ghcup setup, seedocs/HASKELL_SETUP.md)ocaml- OCaml Language Server
.lsmcp/config.json
{"$schema":"../node_modules/@mizchi/lsmcp/lsmcp.schema.json","preset":"tsgo","settings": {"autoIndex":true,"indexConcurrency":10 }}For a comprehensive configuration example, seeexamples/full-lsmcp-config.json.
lsmcp provides comprehensive MCP tools for code analysis and manipulation:
Note: Tool names listed below are the raw MCP tool names (snake_case, e.g. get_hover). Some clients display them with a server-qualified prefix (e.g. mcplsmcpget_hover). For naming conventions and module boundaries, seedocs/TOOL_REFERENCE.md.
- lsp_get_hover - Get type information and documentation for symbols
- lsp_find_references - Find all references to a symbol across the codebase
- lsp_get_definitions - Navigate to symbol definitions with optional code body
- lsp_get_diagnostics - Check for errors and warnings in files
- lsp_get_all_diagnostics - Get diagnostics for entire project
- lsp_get_document_symbols - List all symbols in a file
- lsp_get_workspace_symbols - Search symbols across the entire workspace
- lsp_get_completion - Get code completion suggestions
- lsp_get_signature_help - Get parameter hints for function calls
- lsp_format_document - Format entire documents using language server
- lsp_rename_symbol - Rename symbols across the codebase
- lsp_get_code_actions - Get available quick fixes and refactorings
- lsp_delete_symbol - Delete a symbol and optionally all its references
- lsp_check_capabilities - Check supported LSP features
- get_project_overview - Quick project structure and component analysis
- search_symbols - Fast symbol search using pre-built index (auto-creates index if needed)
- get_symbol_details - Get comprehensive details about a symbol (hover, definition, references)
- index_external_libraries - Index TypeScript declaration files from node_modules
- get_typescript_dependencies - List available TypeScript dependencies
- search_external_library_symbols - Search symbols in indexed external libraries
- resolve_symbol - Resolve symbols to their definitions in external libraries
- get_available_external_symbols - Get symbols available from imported libraries
- parse_imports - Parse and analyze import statements
- replace_range - Replace specific text ranges in files
- replace_regex - Advanced regex-based replacements
- list_dir - List directories with gitignore support
- get_symbols_overview - High-level symbol overview by file
- list_memories - List project memories
- read_memory - Read specific memory content
- write_memory - Create or update memories
- delete_memory - Remove memories
LSMCP includes several performance optimizations:
- Incremental Indexing: Only modified files are re-indexed
- Memory Monitoring: Automatic garbage collection when memory usage is high
- Batch Processing: Efficient concurrent file processing
- Smart Caching: 15-minute cache for frequently accessed data
Configuration options in.lsmcp/config.json:
{"indexConcurrency":5,"maxFileSize":10485760,"enableWatchers":true,"memoryLimit":1024}SeeCONTRIBUTING.md for detailed development setup, testing instructions, and contribution guidelines.
# Quick startpnpm installpnpm buildpnpmtest# Run with memory monitoringnode --expose-gc dist/lsmcp.js
LSMCP has separate logging systems for MCP server and LSP client that can be controlled independently:
Enable MCP server debug output with either environment variable:
MCP_DEBUG=1 lsmcp# Enable MCP server debug loggingLSMCP_DEBUG=1 lsmcp# Alternative (backward compatible)
Enable LSP client debug output separately:
LSP_DEBUG=1 lsmcp# Enable LSP client debug loggingEnable both MCP and LSP debug output:
MCP_DEBUG=1 LSP_DEBUG=1 lsmcp
MIT - SeeLICENSE file for details.
About
Resources
License
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors4
Uh oh!
There was an error while loading.Please reload this page.